- 一,注解方式开发Servlet程序
- --1,创建新的web工程,创建Servlet
- --2,测试Servlet
- 二,配置方式开发Servlet程序
- --1,创建Servlet类
- --2,配置Servlet类
- --3,测试
- --4,总结
- 三,前后端整合
- --1,创建前端HTML网页
- --2,创建后端Servlet程序
- --3,配置Servlet类
- --4,测试
- 四,Servlet的继承结构
- 五,Servlet的生命周期
- --1,概述
- --2,测试
- 创建Servlet程序
- 创建前端网页
- 测试
- 六,Request
- --1,概述
- --2,常用方法
- --3,测试
- 创建HTML网页
- 创建Servlet程序,解析请求参数
- 七,表单提交数据
- --1,创建HTML网页文件
- --2,创建Servlet程序
package cn.tedu.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//1,这是新版本的Servlet提供的注解开发方式,更好更简单(否则自己写配置文件)
//参数是,规定了浏览器的地址栏到底怎么写才能访问到我这个Servlet类
//2,ServletDemo1是子类,可以使用父类的所有资源(除了私有的,构造方法)
//3,自定义Servlet的规则:
//方式1:extends HttpServlet--推荐!!!
//方式2:extends GenericServlet--了解
//方式3:implements Servlet--了解
@WebServlet("/ServletDemo1")
public class ServletDemo1 extends HttpServlet {
//4,继承了父类,但是 想改父类原有的功能时 就重写!!
//5,不论调用doPost()或者doGet(),都是由Servlet来调用的
//6,当用户用post方式提交请求时(form表单提交),Servlet来调用doPost()
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("您访问了doPost()");
}
//7,当用户用get方式提交请求时,Servlet来调用doGet()
//(在地址栏?拼接数据 + form没改method的值)
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("您访问了doGet()");
}
}
–2,测试Servlet
启动服务器,访问浏览器
http://localhost:8080/cgb2109javaweb03_war_exploded/ServletDemo1
本机 Tomcat默认的端口号 项目名称 项目中的资源名称
package cn.tedu.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//使用配置方式开发Servlet程序
public class ServletDemo2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost()成功的被Servlet调用!");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet()成功的被Servlet调用!");
}
}
–2,配置Servlet类
–3,测试hello cn.tedu.servlet.ServletDemo2 hello /a/b/c
http://localhost:8090/cgb2109javaweb03_war_exploded/ServletDemo2
–4,总结 三,前后端整合 –1,创建前端HTML网页–2,创建后端Servlet程序前后端 安排起来 点我,访问Servlet
package cn.tedu.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ServletDemo3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost()");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet()");
}
}
–3,配置Servlet类
–4,测试 四,Servlet的继承结构 五,Servlet的生命周期 –1,概述hello cn.tedu.servlet.ServletDemo2 hello /a/b/c hello2 cn.tedu.servlet.ServletDemo3 hello2 /ServletDemo3
分为三大阶段
初始化 – 由Servlet主动调用init()
提供服务 – 由Servlet主动调用service()/doGet()/doPost()
销毁 – 由Servlet主动调用destroy()
package cn.tedu.lifecycle;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//1,Servlet程序的注解开发方式,代替了web.xml文件中的8行配置代码
@WebServlet("/ServletDemo4")//注解的参数是指浏览器的访问方式
public class ServletDemo4 extends HttpServlet {
//2,Servlet的生命周期中会被调用的方法有:
//init() service()/doGet/doPost destroy()
//3,因为GenericServlet提供的以上方法中都是空实现,
// 重写这些方法并添加方法体来感受初始化的不同阶段
//4,重写的要求:有足够的权限 + 方法声明必须和父类一样
@Override
//当第一次访问Servlet程序时,Servlet自己调用init(),只会调用一次
public void init() throws ServletException {
System.out.println("init()被调用了,Servlet已被初始化!");
}
@Override
//每次访问Servlet程序时,Servlet自己调用service(),会调用多次
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service()开始为您服务啦!");
}
@Override
//正常的关闭服务器时,Servlet自己调用destroy(),只会调用一次
public void destroy() {
System.out.println("destroy()被调用了,Servlet即将被销毁!");
}
}
创建前端网页
测试 六,Request –1,概述前后端 安排起来 点我,访问ServletDemo3 点我,访问ServletDemo4
是指 从前端浏览器 到 后端的Servlet程序 的访问过程,叫请求的过程
可以使用Servlet提供的Request对象,来解析请求中的请求参数
getParamter()--按照参数名获取参数值,但是只得到一个值 getParamterValues()--按照参数名获取参数值,但是得到多个值,存入数组 setCharacterEncoding()--如果请求参数中有中文,设置字符集为utf-8 setAttribute()--设置属性 getAttribute()--获取属性–3,测试 创建HTML网页
创建Servlet程序,解析请求参数前端提交数据,后端解析数据 点我,提交get数据1 点我,提交get数据2
package cn.tedu.request;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
@WebServlet("/ServletDemo5")
public class ServletDemo5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
//当用户以get方式提交数据时,Servlet会自动调用doGet()
//get方式提交的数据,可以一个一个的解析getParameter()
//也可以解析多个值getParameterValues()
//如果使用的是Tomcat7.0以上的版本,get方式提交中文数据不会乱码
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
//1,request解析请求参数 name=jerry&pwd=123
//1.1,获取一个值
String s = request.getParameter("name");
System.out.println(s);//获取name参数的值
String pwd = request.getParameter("pwd");
System.out.println(pwd);//获取pwd参数的值
//1.2,获取到多个值
String[] hobbies = request.getParameterValues("hobby");
System.out.println( Arrays.toString(hobbies) );
}
}
七,表单提交数据
–1,创建HTML网页文件
–2,创建Servlet程序
package cn.tedu.request;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ServletDemo6")
public class ServletDemo6 extends HttpServlet {
//TODO 处理post方式提交的数据--可能出现中文乱码!!
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
//ServletDemo6?user=jack&pwd=123
//处理get方式提交的数据
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String user = request.getParameter("user");//获取user的值
String pwd = request.getParameter("pwd");//获取pwd的值
System.out.println(user+pwd);
}
}



