request和response
request:封装了http要求信息,通过这个工具去获取要求信息,他是ServletRequest的子接口
response:封装了相应信息

//获取姓名的值
//姓名:< input type=“text” name=“username” id=“username”>< br/>
//input属性name的值
String name=request.getParameter(“username”); 获取多个值getParameterValues
System.out.println(name);
//response.getWiter()方法,把结果相应到浏览器
PrintWriter out=response.getWriter();
out.write(\公众<h 1 >\"大众+name+\公众</ h1>\"大众);
转码
request.setCharacterEncoding(“utf-8”);
response.setContentType(“text/html;charset=utf-8”);
//要求转发:把要求转发给另一个servlet处理
String path=\公众/testServlet\公众;
request.getRequestDispatcher(path).forward(request, response);
//要求重定向
response.sendRedirect(“testServlet”);
1.要求转发和要求重定向
实质差异:要求转发只是发了一次要求,重定向发了两次要求
(1)要求转发:地址栏还是初次要求的地址栏
要求重定向:地址栏不是初次要求的地址栏,地址栏是末了一次相应的地址栏
(2)要求转发:在终极的servlet中,request工具和中转的request工具是同一个工具
要求重定向:终极的servlet中,request工具和中转的request工具不是同一个工具
(3)要求转发:‘/’代表当前web运用的根目录
要求重定向:‘/’代表当前web站点的根目录
(4)要求转发:只能转到当前web资源
要求重定向:可以重定向到外部资源
2.表单重复提交
(1)点击了浏览器的退却撤退按钮,再点击提交
(2)在相应页面未完成相应时,重复点击提交按钮
(3)在表单要求servlet,而servlet又通过转发的办法相应到一个servlet处理,当我刷新时,地址栏还是原来要求的那个地址栏,这样就涌现了重复提交。重定向不会涌现重复提交
//
设置令牌
< body>
<%
String uuid=UUID.randomUUID().toString().replace(\公众-\"大众,\"大众\公众);
request.getSession().setAttribute(“token”, uuid);
%>
< form action=“work” method=“post”>
< input type=“hidden” value=\"大众<%=uuid%>\"大众 name=“token”>
用户名:< input type=“text” name=“user” id=“username”>< br/>
密码:< input type=“text” name=“pwd” id=“pwd”>< br/>
< input type=“submit” value=“提交”>
< /form>
< /body>
浏览器须要对其发出的每个要求都进行标识
这个标识号就称之为会话ID(SessionID)
获取session
HttpSession session=request.getSession();