查查知识网

response response header

发布者:刘阳远
导读request和responserequest:封装了http请求信息,通过这个对象去获取请求信息,他是ServletRequest的子接口response封装了相应信息//获取姓名的值//姓名

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(""+name+"");

转码

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();