想飞就别怕摔

大爷的并TM骂人

j2ee基础知识(一)【request&response】

request    response    pageContext    session    application    out    config    page    exception

JSP中属性的保存范围:

★在JSP中可以采用下面方法来设置和取得属性:
    →    设置属性:public abstract void setAttribute(java.lang.String.name,java.lang.Object.atrribute)
    →    去的属性:public abstract java.lang.Object getAttribute(java.lang.String.name)
★在JSP中提供了四种属性保存范围:
    →    在一个页面范围内:page
在JSP中设置一个页面属性范围,必须通过pageContext完成。pageContext属性范围:是最为重要的JSP 属性之一,但是如果使用纯粹的JSP代码开发,此属性显现不出作用。在struts等就极其重要;
    →    在一次服务器请求范围内:request
request保存在一次请求范围之内前提:必须使用服务器端跳转<jsp:forward/>
    →    在一次会话范围内:session
设置了Session保存范围后不管什么跳转,都可以取得属性。session的主要功能是验证用户是否登陆。
    →    在一个应用服务器范围内:application
application属性范围值,只要设置一次,则说有的网页窗口都可以取得数据,主要用于在线人员统计。

application、request、session→都需要跨多个页,属性保存是有开销的,过多的application和session会导致性能下降,所以能使用request就不要使用session,能使用session就不要使用application。如果释放application只能重新启动服务器。

■页面的中文乱码问题:
1、页面显示的乱码处理:<%@page context="test/html,charset=gbk"%>
2、页面传递的乱码处理:①对所有的数据进行在编码:ISO8859-1
                                              ②设置同意字符编码
如:

<%@page contentType="text/html,charset=gbk"%>
<HTML>
 
<HEAD>
  
<TITLE></TITLE>
 
</HEAD>
 
<BODY>
    //方法一:
  
<%
    
String name = request.getParameter("username");
    
byte[]b = name.getBytes("ISO8859-1");
    name 
= new String(b);
  
%>
  方法一可写为:
  
<%
    
String name = new String(request.getParameter("username").getBytes("ISO8859-1"));
  
%>
  //方法二:
  
<%
    request.setCharacterEncoding(
"GBK");
    
String name = request.getParameter("username");
  
%>
  
<h1>输入内容为:<%=name%></h1>
 
</BODY>
</HTML>

■如果传递的内容是数组(复选框、多个下拉列表)使用request的一下方法取得数据
例:

<html>
<body>
    
<form action="demo08.jsp" method="post">
        用户名:
<input type="text" name="uname"><br>
        密码:
<input type="password" name="upass"><br>
        兴趣:
        
<input type="checkbox" name="**inst" value="篮球">篮球
        
<input type="checkbox" name="**inst" value="游泳">游泳
        
<input type="checkbox" name="**inst" value="唱歌">唱歌
        
<input type="checkbox" name="**inst" value="跳舞">跳舞
        
<input type="checkbox" name="**inst" value="看书">看书
        
<br>
        
<input type="submit" value="提交">
    
</form>
</body>
</html>

使用request.getParameterNames()方法取得数据

<%@ page contentType="text/html;charset=gbk"%>
<%@ page import="java.util.*"%>
<html>
<body>
<%
    
// 接收内容
    request.setCharacterEncoding(
"GBK") ;
    Enumeration enu 
= request.getParameterNames() ;
%>
<%
    
while(enu.hasMoreElements())
    {
        
String name = (String)enu.nextElement() ;
        
if(name.startsWith("**"))
        {
            
String temp[] = request.getParameterValues(name) ;
%>
            
<h1><%=name%> -->
<%
            
for(int i=0;i<temp.length;i++)
            {
%>
                
<%=temp[i]%>
<%
            }
%>
            
</h1>
<%
        }
        
else
        {
%>
            
<h1><%=name%> --> <%=request.getParameter(name)%></h1>
<%
        }
    }
%>
</h1>
</body>
</html>

用request.getParamaterValues()方法取得数据

<%@ page contentType="text/html;charset=gbk"%>
<html>
<body>
<%
    request.setCharacterEncoding(
"gbk");
    
String name = request.getParameter("uname");
    
String inst[] = request.getParameterValues("inst");
%>
<h1>用户名为:<%=name%></h1>
<h1>兴趣为:
<%
    
for(int i=0;i<inst.length;i++)
    {
%>
    
<%=inst[i]%>
<%
    }
%>
</h1>
</body>
</html>

■向服务器传值还可以使用隐藏域<input type="hidden" name="name" value="aaa">;
  还可以使用地址重写传递数据到服务器端。
■取得客户端的IP地址:<%=request.getRemoteAddr()%>

★response的主要功能:
1、最有用用的一个头信息:refresh:刷新
例:

<%@page contentType="text/html;charset=gb2312"%>
<%!
    
// 此处为全局变量,初始化一次
    
int i = 0 ;
%>
<%
    
// 一秒种刷新一次,每次使i自增
    response.setHeader(
"refresh","2;URL=responseDemo02.jsp") ;
%>
<h1><%=i++%></h1>
两秒后跳转到欢迎页!!!
<br>
如果没有跳转,请按
<href="responseDemo02.jsp">这里</a>!!!

2、response跳转与forward跳转
①<jsp:forward page=""/>
    ■    地址栏不改变跳转----服务器端跳转
    ■    执行跳转语句后无条件立即跳转----之后的代码不再被执行
    ■    使用forward时,request设置的属性依然能保留在下一个页面(setAttrbute)
    ■    通过<jsp:param name="" value=""/>传递参数
②response.sendRedirect("地址")
    ■    地址栏改变跳转----客户端跳转
    ■    所有代码执行完毕后跳转
    ■    不能保存request属性,地址栏改变
    ■    通过URL地址的重写传递参数
3、设置cookie,cookie是服务器端保存在客户端的一组资源,例如登录时会问你是否记住密码等等。此功能的实现就是通过cookie。
例:

<%
    Cookie c1 
= new Cookie("name","mldn") ;
    Cookie c2 
= new Cookie("password","LXH") ;

    
// 保存时间为60秒
    c1.setMaxAge(
60) ;
    c2.setMaxAge(
60) ;
%>
<%
    
// 通过response对象将Cookie设置到客户端
    response.addCookie(c1) ;
    response.addCookie(c2) ;
%>

 

<%
    
// 通过request对象,取得客户端设置的全部Cookie
    
// 实际上客户端的Cookie是通过HTTP头信息发送到服务器端上的
    Cookie c[] 
= request.getCookies() ;
%>
<%
    
for(int i=0;i<c.length;i++)
    {
        Cookie temp 
= c[i] ;
%>
        
<h1><%=temp.getName()%> --> <%=temp.getValue()%></h1>
<%
    }
%>

cookie默认只对当前浏览器有效,如果长留要设置cookie的保存时间

■session对象
    -session对象主要用于保存用户的各种信息,知道他的生命周期(一般为900S)超时或被人为地释放掉为止。
    -可以通过session对象来判断此用户是否是合法用户。
1、在服务器上通过session来区分每一个用户,用户只要已连接服务器,则立刻分配一个session给用户。
2、Session的主要方法:
    ■    服务器上通过Session来区分用户(SessionID):任何链接到服务器上的用户,服务器都会为之分配一个
          唯一的SessionID,sessionID由服务器同意管理,人为不能控制。
    ■    获得sessionID的方法,session.getId();,session的长度为32位。
    ■    通过session可以验证用户是否登陆
    ■    判断当前的session是否是新建立的session方法:session.isNew();
    ■    session的属性设置:
          设置属性:public void setAttribute(Stirng name,Object value)
          取得属性:public void getAttribute(String name)
          删除属性:public void removeAttrbute(String name)
    ■    让session失效,也就是通常用的用户注销
          手动注销:public void invalidate()
          自动注销:session长时间不被使用则自动会注销
    ■    得到session的创建时间:public long getCreationTime();此方法返回long类型,通过Date类可以取得一个完整的
           时间。
    ■    取得用户最后一次的操作时间:public long getLastAccessedTime()

posted on 2008-12-19 10:58 生命的绽放 阅读(1079) 评论(0)  编辑  收藏 所属分类: S2SH


只有注册用户登录后才能发表评论。


网站导航:
 
<2008年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(5)

随笔分类(94)

随笔档案(93)

文章分类(5)

文章档案(5)

相册

JAVA之桥

SQL之音

兄弟之窗

常用工具下载

积分与排名

最新评论

阅读排行榜