request
request封装了用户请求页面时所提交的信息,该对象调用相应的方法可以获取封装的信息,即request对象可以获取用户提交的信息
getParameter
request.getParameter(“parameterName”)
用于得到表单和超链接所提交的参数值(得到访问请求参数),表单提交时,得到的是name属性的表单的参数。
返回string类型的数据。
setAttribute()
在进行请求转发时(
在转发过程中,可以通过request对象的setAttribute()方法将数据保存到request范围内的变量中,此后只要是请求转发(因为使用的是同一request对象),都可以使用该变量。
存储:request.setAttribute(String name, Object object);
name为变量名,Object为变量类型和值
获取:request.getAttribute(String name);
| request.getParameter() | request.getAttribute() |
|---|---|
| 无set方法 | 有set方法 |
| 用于获取客户端的参数 | 方法用于在Web容器内部传递参数 |
| 方法返回String型数据 | 返回Object类型的数据(因此别忘了强制类型转换) |
| 应用于页面的链接关系 | 应用于页面的转发关系 |
getCookies()
cookie是小段的文本信息,在网络服务器上生成,并发送给浏览器的,可以标识用户身份,记录用户名和密码,跟踪重复用户等request.getCookies()可获取到所有Cookie对象的集合,返回Cookie对象;
Cookie对象方法
通过cookie对象的getName()可以获取到指定名称的cookie。
通过cookie对象的getValue()方法即可获取到cookie对象的值。
用response.addCookie(cookie)来保存cookie
<body><%Cookie[] cookies = request.getCookies();//从request中获得Cookie对象的集合String user = ""; //登录用户String date = ""; //注册的时间if (cookies != null) {for (int i = 0; i < cookies.length; i++) { //遍历cookie对象的集合if (cookies[i].getName().equals("mrCookie")) {//如果cookie对象的名称为mrCookieuser = URLDecoder.decode(cookies[i].getValue().split("#")[0]);//获取用户名date = cookies[i].getValue().split("#")[1];//获取注册时间}}}if ("".equals(user) && "".equals(date)) {//如果没有注册%>游客您好,欢迎您初次光临!<form action="6.2_6_jump.jsp" method="post">请输入姓名:<input name="user" type="text" value=""><input type="submit" value="确定"></form><%} else {//已经注册%>欢迎[<b><%=user %></b>]再次光临<br>您注册的时间是:<%=date %><%}%></body>
<script type="text/javascript">window.location.href="6.2_6.jsp"</script>
<body>
<%
request.setCharacterEncoding("utf-8");
java.util.Date date = new java.util.Date();
java.text.SimpleDateFormat dtf = new java.text.SimpleDateFormat("h:m:s");
String user=URLEncoder.encode(request.getParameter("user"),"utf-8");
Cookie cookie = new Cookie("mrCookie", user+ "#" + dtf.format(date));
cookie.setMaxAge(60*60*24*30); //设置cookie有效期30天
response.addCookie(cookie); //保存cookie
%>
</body>
setCharacterEncoding()
在获取request中的信息时,信息的中文有可能会乱码,因此要设置表单编码。
在request.getParameter()方法之前,先设置表单编码方式。如request.setCharacterEncoding(“gb2312”);
<%@ page contentType="text/html;charset=GB2312" %>
<html><body>
获取文本框提交的信息:
<%
request.setCharacterEncoding("gb2312");
String textContent=request.getParameter("user")
%>
<%=textContent%>
</body>
</html>
response对象
与request相对应,response对象用来提供给客户端浏览器的参考信息。
sendRedirect()
用于重定向网页。由浏览器来做重定向,转到指定的页面response.sendRedirect(String path);
setHeader()
response.setHeader(String name, String value);
<% //禁用缓存
response.setHeader("Cache-Control","no-store");
response.setHeader("Expires",0);
%>
<% //自动刷新
response.setHeader("refresh","10");
%>
<% //定时跳转网页
response.setHeader("refresh","5;URL=http://www.163.com");
%>
session对象
在web页面间进行跳转时,可以用session对象,来保存特定用户的会话信息。
session对象表示”会话”
session对象在客户端向该页面发出请求时建立,在session到期或者关闭浏览器时撤销。
原理机制:
服务端生成session对象并存储,仅返回sessionid并写入Cookie中,用于和服务器的响应session对应。
客户首次访问服务器的一个页面时,服务器就会为该客户分配一个session对象,同时为该session对象指定一个唯一的ID,并将该ID号发送到客户端并写入到Cookie中,使得客户端与服务器的session建立一一对应关系。session和相关内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session。当客户继续访问服务上的其他资源时,不再为该客户分配新的session,直到客户端浏览器关闭、超时或调用session的invalidate()方法使其失效,客户端与服务器的会话结束。当客户端重新打开浏览器访问网站时,服务器会重新为客户分配一个session对象,重新分配session id。
session.setAttribute(String name, Object obj)session.getAttribute(String name)
session.setAttribute(“item”,“钢笔”);(购买页面)
String 商品=(String)session.getAttribute(“item”); (结账页面)
out.println(“<%=商品%>”); session.removeAttribute(String name) 移除属性session.invalidate() 销毁
application对象
在服务器启动时自动创建,在服务器停止时销毁
out对象
用于向浏览器输出数据,并且管理应用服务器上的缓冲区
两种方法:out.println(); out.print();
