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>
 

猜你喜欢

转载自hai0378.iteye.com/blog/1495069