读书人

Java Web 胡说八道 之三

发布时间: 2012-07-01 13:15:00 作者: rapoo

Java Web 胡言乱语 之三

requst.getContextPath() 取得上下文信息(重点)

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*" %><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><%=request.getContextPath()%>/image/001.jpg<img src= "<%=request.getContextPath()%>/image/001.jpg"></body></html>
?

问题:何时用request中getArrtibute(),何时getParameter()?

答:?? 如果要使用getAttribute()则之前一定会存在setAttribute()的设置操作,否则无法取得

????? ?? 如果使用getParameter() 则表示接受参数,那么参数的来源有以下几种:

??????? 1.表单提交

??????? 2.地址提交

??????? 3,。通过<jsp:inclucde>,<jsp:forward>传递而来的参数

?

getParameter()是无法接受setAttribute() 设置的内容的

*********************************************************************************

response对象:用于对客户端的请求进行回应,将WEB服务器处理后的结果发回给客户端,response对象属于

?????????????????????? javax.servlet.http.HttpServletResponse接口的实例,

HttpServletResponse接口的定义如下:

public interface HttpServletResponse extends ServletResponse?

?

用例1:定时刷新:

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*" %><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><%! //定义全局变量    int count = 0;%><%    response.setHeader("refresh","2");  //页面2秒一刷新%><h3>已经访问了<%=count++%>次!</h3></body></html>

?

用例2:定时跳转

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*" %><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><h3>3秒后跳转到hello.htm页面</h3><%    response.setHeader("refresh","3;URL=hello.htm");  //3秒后跳转%></body></html>

?

此种跳转并非万能的!!譬如后退后请再刷新

?

跳转并且地址栏改变的跳转是客户端跳转,

?

问题2:<jsp:forward>跳转和response.sendRedirect()两种跳转语句的却别是什么?

?

答:<jsp:forward>语句跳转的特点:

?? 1,服务器端跳转,跳转之后地址栏不改变

?? 2,属于无条件的跳转,执行之后立刻跳转,跳转之前的语句会执行,跳转之后的语句不会执行


response.sendRedirect()特点:

?? 1,客户端跳转,跳转之后地址栏改变,不可以传递request属性

?? 2,是在所有的语句都执行完之后才完成的跳转操作,

?

?

--------------------------------------########################-----------------------------

?

操作Cookie,

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*" %><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><%   Cookie c[] = request.getCookies(); //取得客户端的全部Cookie   for(int x = 0;x<c.length;x++){%><h3><%=c[x].getName()%> --> <%=c[x].getValue()%></h3><%   }%></body></html>
?

?

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*" %><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><%   Cookie c1 = new Cookie("baidu","www.baidu.com");   Cookie c2 = new Cookie("liuddhua","www.hefdfsd.com");   c1.setMaxAge(100);  //设置时间   c1.setMaxAge(100);   response.addCookie(c1); //加入Cookie   response.addCookie(c2);  %></body></html>
?

**************************************************************************************

Session部分

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*" %><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><%  String id = session.getId();    %><h3>SESSION ID:<%=id%></h3><h3>SESSION ID长度:<%=id.length()%></h3></body></html>

?session在进行处理的时候使用到了cookie的处理机制

?

2,服务器如果关闭了,则session id肯定需要重新分配,原本的session id根本就不保留,服务器关闭之后session id 就没

有了。

?

3,session序列化:(理解)

  <Context path="/web" docBase="D:\webdemo">     <Manager   className="org.apache.catalina.session.PersistentManager" >              debug=0 saveOnRestart = "true"            maxActiveSession="-1" minIdleSwap = "-1"maxIdleSwap="-1" maxIdleBackup= "-1"<Store classname="org.apache.catalina.session.FileStore"    directory="d:\temp"/>         </Manager>     </Context>
?

?

注销session:

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*" %><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><%   response.setHeader("refresh","2;URL=login.jsp");   session.invalidate();  //注销,表示所有的session失效%><h3>您已成功退出本系统,两秒后跳转回首页</h3><h3>如果没有跳转,请按<a href="login.jsp">这里</a>!</h3></body></html>

?

3,会话跟踪技术:

? 3.1 , 通过session提供的方法保存。

? 3.2,? 通过Cookie

? 3.3? 通过表单的隐藏域完成

? 3.4? 通过地址重写(Struts使用较多)

?

?判断是不是新用户:

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*" %><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><%  if(session.isNew()){%>  <h3>欢迎新用户光临!</h3><%  } else {%><h3>您已经是老用户了</h3><%}%></body></html>
?

3,停留时间:

?

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*" %><html><head><title>www.baidu.com,这是一个学习的好网站</title></head><body><%  long start = session.getCreationTime();  long end = session.getLastAccessedTime();  long time = (end - start) / 1000;  //取得秒%><h3>您已经停留了<%=time%>秒</h3></body></html>
?

?

读书人网 >Web前端

热点推荐