-
http协议是客户端和服务器共同遵守的网络协议
-
http分为以下两种
- 2.1 Get请求(不安全但效率高,所有标签默认都是Get请求)
- 2.2 Post请求(安全但效率低)
-
常见响应码
200 请求成功
302 请求重定向
404 页面不存在
500 代码错误 -
HttpServletRequest 类作用:获得请求的所有信息
得到客户端的数据
//回复提交方式为GET的方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String user=req.getParameter("username"); //参数为标签的name属性
String password=req.getParameter("password");
String sex=req.getParameter("sex");
List<String> list= Arrays.asList(req.getParameterValues("interest"));
System.out.println("用户名:"+user);
System.out.println("密码:"+password);
System.out.println("性别:"+sex);
System.out.println("兴趣:"+list);
}
//回复提交方式为POST的方法
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
//post提交方式需要设置请求编码为UTF-8,否则中文会出现乱码
String user=req.getParameter("username");
String password=req.getParameter("password");
String sex=req.getParameter("sex");
List<String> list= Arrays.asList(req.getParameterValues("interest"));
System.out.println("用户名:"+user);
System.out.println("密码:"+password);
System.out.println("性别:"+sex);
System.out.println("兴趣:"+list);
}
}
5.请求转发
Servlet
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Servlet正在处理数据");
RequestDispatcher requestDispatcher= req.getRequestDispatcher("/hello1"); //请求转发对象
requestDispatcher.forward(req,resp);
}
Servlet1
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("Servlet1收到了Servlet的转发,继续处理数据");
}
6.Base标签
作用:该页面下所有的跳转操作都是以Base标签的路径为基准
<base href="http://localhost:8888/Servlet_war_exploded/">
7.HttpServletResponse类
响应客户端数据
第一种方式:(不常用)
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8"); //设置响应数据的编码格式为UTF-8
resp.setHeader("Content-type","text/html;charset=UTF-8");//设置游览器内容编码为UTF-8
PrintWriter printWriter=resp.getWriter();
printWriter.println("服务器传来的数据");
}
第二种方式:(推荐)
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
//同时设置了客户端和服务器的编号格式为UTF-8,还设置了响应头
PrintWriter printWriter=resp.getWriter();
printWriter.println("服务器传来的数据");
}
8.重定向
特点:两次请求,第二次请求不共享第一次请求的域数据
第一种方式:(不常用)
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("当前地址已失效");
resp.setStatus(302); //重定向的状态码
resp.setHeader("Location","http://localhost:8888/Servlet_war_exploded/hello1");
//设置重定向地址
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("最新地址");
}
第二种方式:(推荐)
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("地址已过期");
resp.sendRedirect("http://localhost:8888/Servlet_war_exploded/hello1");
}
注意:网页请求默认是Get请求