JSP中四种属性

转载 https://www.cnblogs.com/liuyangv/p/8060222.html


一、四种属性范围

在JSP中提供了四种属性保存范围

page:在一个页面内保存属性,跳转之后无效
request:在一次服务请求范围内,服务器跳转后依然有效
session:-在一次会话范围内,无论何种跳转都可以使用,但是新开浏览器无法使用
application:在整个服务器上保存,所有用户都可以使用


名称

作用域

application

在所有应用程序中有效

session

在当前会话中有效

request

在当前请求中有效

page

在当前页面有效




设置统一的请求编码:request.setCharacterEncoding("GBK");  

  1. 请求方式:<%=request.getMethod()%><br>  
  2. 请求的资源:<%=request.getRequestURI()%><br>  
  3. 请求用的协议:<%=request.getProtocol()%><br>  
  4. 请求的文件名:<%=request.getServletPath()%><br>  
  5. 请求的服务器的IP:<%=request.getServerName()%><br>  
  6. 请求服务器的端口:<%=request.getServerPort()%><br>  
  7. 客户端IP地址:<%=request.getRemoteAddr()%><br>  
  8. 客户端主机名:<%=request.getRemoteHost()%><br

四种属性范围:
    page(pageContext):只在一个页面中保存属性。                      跳转之后无效。
    request:只在一次请求中有效,服务器跳转之后有效。                    客户端跳无效
    session:在一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
    application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
    注意:如果设置过多的application属性范围会影响服务器性能


page(pageContext)对象:
    pageContext.PAGE_SCOPE
    pageContext.REQUEST_SCOPE
    pageContext.SESSION_SCOPE
    pageContext.APPLICATION_SCOPE
    pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);
            
request对象:
    通过地址重写的方式进行传值:
    要访问的网页地址?参数1=值1&参数2=值2&...
    Request常用的方法:
    1.01 getParameter(String strTextName) 获取表单提交的信息。
        String strName=request.getParameter("name");
    1.02 getProtocol() 获取客户使用的协议。
        String strProtocol=request.getProtocol();
    1.03 getServletPath() 获取客户提交信息的页面。
        String strServlet=request.getServletPath();
    1.04 getMethod() 获取客户提交信息的方式,get|post。
        String strMethod = request.getMethod();
    1.05 getHeade() 获取HTTP头文件中的accept、accept-encoding和Host的值。
        String strHeader = request.getHeader("accept");
    1.06 getRermoteAddr() 获取客户的IP地址。
        String strIP = request.getRemoteAddr();
    1.07 getRemoteHost() 获取客户机的名称。
        String clientName = request.getRemoteHost();
    1.08 getServerName() 获取服务器名称。
        String serverName = request.getServerName();
    1.09 getServerPort() 获取服务器的端口号。
        int serverPort = request.getServerPort();
    1.10 getParameterNames() 获取客户端提交的所有参数的名字。
        Enumeration enum = request.getParameterNames();
          while(enum.hasMoreElements()){
                  String s=(String)enum.nextElement();
                  out.println(s);
         }
    1.11 getParameterValues()获取客户端提交的所有参数的名字对应的值。
        String[] inst = request.getParameterValues(paramName);
          for(String ss:inst){ 
               System.out.println(ss);
          }


response对象:
    设置头信息setHeader():        
        response.setHeader("refresh","5; url=hello.jsp"); 5秒后自动跳转(jsp)    
        <meta http-equiv="refresh" content="5;url=hello.jsp" >  5秒后自动跳转(html)
    <jsp:forward/> 与  sendRedirect 区别:
        <jsp:forward page="hello.jsp"></jsp:forward> 执行到该语句立即跳转,后面的语句不执行
        response.sendRedirect("hello.jsp");    重定向。 执行完此页面再进行跳转
    cookie: 设置在客户端,安全性比较低    
    一个客户端上最多只能保存300个cookie。    
        addCookie();
        setHeader("Set-Cookie","名字=值");
       response.setHeader("refresh","1"); //每隔1秒刷新一次    
       response.addCookie();
       Cookie [] c = request.getCookies();  
session对象:每一个session代表了一个用户。
    获取session ID:
        String id = session.getId();
     
 String id = session.getId();   获取session ID  Manager 可以将session保存在本地上   
      long start = session.getCreationTime(); //创建此会话的时间  
      long end = session.getLastAccessedTime();//客户端上一次发送与此会话关联的请求的时间,最后一次操作此会话时间


1.page属性范围:

1.设置page无跳转 属性范围,在当前jsp页面有效
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>page属性范围</title>
    </head>
    <body>
        <%
            //设置page 属性范围,在当前jsp页面有效
            pageContext.setAttribute("name", "liuyang");
            pageContext.setAttribute("age", "23");
            pageContext.setAttribute("birthday", new Date());
        %>
        <%
            String name=(String)pageContext.getAttribute("name");
            int age=Integer.parseInt((String)pageContext.getAttribute("age"));
            Date birthday = (Date)pageContext.getAttribute("birthday");
        %>
        <h1>姓名:<%=name %></h1>
        <h1>年龄:<%=age %></h1>
        <h1>生日:<%=birthday %></h1>
    </body>
</html>


2.设置page 属性范围-服务器跳转,服务器跳转后无效


   // page02.jsp
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>page属性范围-服务器跳转</title>
    </head>
    <body>    
        <%
            //设置page(pageContext) 属性范围,在当前jsp页面有效,只在一个页面中保存属性。 跳转之后无效。
            pageContext.setAttribute("name", "liuyang");
            pageContext.setAttribute("birthday", new Date());
        %>
        <jsp:forward page="page_03.jsp"></jsp:forward>
    </body>
</html>
//page03.jsp
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>page属性范围-服务器跳转</title>
    </head>
    <body>    
            <%
            String name=(String)pageContext.getAttribute("name");
            Date birthday = (Date)pageContext.getAttribute("birthday");
            %>
            <h1>姓名:<%=name %></h1>
            <h1>生日:<%=birthday %></h1>
    </body>
</html>












 3.设置page 属性范围-客户端跳转,客户端跳转后无效 
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>page属性范围-客户端跳转</title>
    </head>
    <body>    
        <%
            //设置page(pageContext) 属性范围,在当前jsp页面有效,只在一个页面中保存属性。 跳转之后无效。
            pageContext.setAttribute("name", "liuyang");
            pageContext.setAttribute("birthday", new Date());
        %>
        <a href="page_03.jsp">跳转</a>
        
    </body>
</html>
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>page属性范围-客户端跳转</title>
    </head>
    <body>    
            <%
            String name=(String)pageContext.getAttribute("name");
            Date birthday = (Date)pageContext.getAttribute("birthday");
            %>
            <h1>姓名:<%=name %></h1>
            <h1>生日:<%=birthday %></h1>
    </body>

</html>



2.request属性范围:

  1.设置request 属性范围 - 服务器跳转,服务器跳转后有效,  客户端跳转后无效

<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>request属性范围—服务器跳转</title>
    </head>
    <body>
        <%
            //request:只在一次请求中有效,服务器跳转之后有效。 
            request.setAttribute("name", "liuyang");
            request.setAttribute("birthday", new Date());
        %>
        <jsp:forward page="request_02.jsp"></jsp:forward>
        
    </body>
</html>
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>request属性范围—服务器跳转</title>
    </head>
    <body>
            <%
            //request:只在一次请求中有效,服务器跳转之后有效。  客户端跳转后无效
            String name=(String)request.getAttribute("name");
            Date birthday = (Date)request.getAttribute("birthday");
            %>
            <h1>姓名:<%=name %></h1>
            <h1>生日:<%=birthday %></h1>
    </body>
</html>






2.设置request 属性范围 客户端跳转,客户端跳转后无效
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>request属性范围—客户端跳转</title>
    </head>
    <body>
        <%
            //request:只在一次请求中有效,服务器跳转之后有效。  客户端跳无效
            request.setAttribute("name", "liuyang");
            request.setAttribute("birthday", new Date());
        %>    
        <a href="request_02.jsp">跳转</a>
    </body>
</html>
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>request属性范围—客户端跳转</title>
    </head>
    <body>
            <%
            //request:只在一次请求中有效,服务器跳转之后有效。  客户端跳转后无效
            String name=(String)request.getAttribute("name");
            Date birthday = (Date)request.getAttribute("birthday");
            %>
            <h1>姓名:<%=name %></h1>
            <h1>生日:<%=birthday %></h1>
    </body>
</html>






3.session属性范围:
 1.session:服务器跳转。 再一次会话中有效。服务器跳转、客户端跳转都有效。  浏览器关闭重新打开无效
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>session 服务器跳转</title>
    </head>
    <body>
        <%
            //session:再一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
            session.setAttribute("name", "liuyang");
            session.setAttribute("birthday", new Date());
        %>
        <jsp:forward page="session_02.jsp"></jsp:forward>        
    </body>
</html>
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>session 服务器跳转</title>
    </head>
    <body>
            <%
            //session:再一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
            String name=(String)session.getAttribute("name");
            Date birthday = (Date)session.getAttribute("birthday");
            %>
            <h1>姓名:<%=name %></h1>
            <h1>生日:<%=birthday %></h1>
    </body>
</html>






2.session 客户端跳转
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>session 客户端跳转</title>
    </head>
    <body>
        <%
            //session:再一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
            session.setAttribute("name", "liuyang");
            session.setAttribute("birthday", new Date());
        %>
        <a href="session_02.jsp">跳转</a>    
    </body>
</html>
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>session 客户端跳转</title>
    </head>
    <body>
            <%
            //session:再一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
            String name=(String)session.getAttribute("name");
            Date birthday = (Date)session.getAttribute("birthday");
            %>
            <h1>姓名:<%=name %></h1>
            <h1>生日:<%=birthday %></h1>
    </body>
</html>


3.关闭浏览器重新打开进入session_02.jsp无效
 










4.application属性范围:
1.application:服务器跳转     在整个服务器上保存,所有用户都可使用。   重启服务器后无效
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>application 服务器跳转</title>
    </head>
    <body>
        <%
            //application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
            //application.setAttribute("name", "liuyang");
            pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);
            application.setAttribute("birthday", new Date());            
        %>
        <jsp:forward page="application_02.jsp"></jsp:forward>        
    </body>
</html>
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>application 服务器跳转</title>
    </head>
    <body>
    
            <%
            //application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
            String name=(String)application.getAttribute("name");
            Date birthday = (Date)application.getAttribute("birthday");
            %>
            <h1>姓名:<%=name %></h1>
            <h1>生日:<%=birthday %></h1>
    </body>
</html>


2.application:客户端跳转     在整个服务器上保存,所有用户都可使用。   重启服务器后无效
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>application 客户端跳转</title>
    </head>
    <body>
        <%
            //application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
            //application.setAttribute("name", "liuyang");
            pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);
            application.setAttribute("birthday", new Date());            
        %>
        <a href="application_02.jsp">跳转</a>        
    </body>
</html>
<%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@ page  import="java.util.*" %>
<!DOCTYPE html>
<html>
    <head>
        <title>application 客户端跳转</title>
    </head>
    <body>
    
            <%
            //application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
            String name=(String)application.getAttribute("name");
            Date birthday = (Date)application.getAttribute("birthday");
            %>
            <h1>姓名:<%=name %></h1>
            <h1>生日:<%=birthday %></h1>
    </body>
</html>

3.application:关闭浏览器重新进入application_02.jsp     在整个服务器上保存,所有用户都可使用。   重启服务器后无效
 

4.application:重启服务器后 重新进入application_02.jsp     在整个服务器上保存,所有用户都可使用。   重启服务器后无效


四种属性范围:page(pageContext):只在一个页面中保存属性。     跳转之后无效。

request:只在一次请求中有效,服务器跳转之后有效。  客户端跳无效

session:再一次会话中有效。服务器跳转、客户端跳转都有效。网页关闭重新打开无效

application:在整个服务器上保存,所有用户都可使用。重启服务器后无效

注意:如果设置过多的application属性范围会影响服务器性能
page(pageContext): 对象                      

pageContext.REQUEST_SCOPE

pageContext.SESSION_SCOPE

pageContext.APPLICATION_SCOPE

pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);

request对象:

通过地址重写的方式进行传值:要访问的网页地址?参数1=值1&参数2=值2&...

Request常用的方法:

1.01 getParameter(String strTextName) 获取表单提交的信息。    

String strName=request.getParameter("name");

1.02 getProtocol() 获取客户使用的协议。    

String strProtocol=request.getProtocol()

;1.03 getServletPath() 获取客户提交信息的页面。    

String strServlet=request.getServletPath();

1.04 getMethod() 获取客户提交信息的方式,get|post。    

String strMethod = request.getMethod();

1.05 getHeade() 获取HTTP头文件中的accept、accept-encoding和Host的值。    

String strHeader = request.getHeader("accept");

1.06 getRermoteAddr() 获取客户的IP地址。    

String strIP = request.getRemoteAddr();1.07 getRemoteHost() 获取客户机的名称。    

String clientName = request.getRemoteHost();1.08 getServerName() 获取服务器名称。    

String serverName = request.getServerName();1.09 getServerPort() 获取服务器的端口号。    

int serverPort = request.getServerPort();1.10 getParameterNames() 获取客户端提交的所有参数的名字。    

Enumeration enum = request.getParameterNames();  

while(enum.hasMoreElements()){      

String s=(String)enum.nextElement();     

out.println(s); }

1.11 getParameterValues()获取客户端提交的所有参数的名字对应的值。    

String[] inst = request.getParameterValues(paramName);  

for(String ss:inst){    

System.out.println(ss);  

}

response对象:

设置头信息setHeader():

response.setHeader("refresh","5; url=hello.jsp");5秒后自动跳转(jsp)

<meta http-equiv="refresh" content="5;url=hello.jsp" > 5秒后自动跳转(html)

<jsp:forward/> 与  sendRedirect 区别:

<jsp:forward page="hello.jsp"></jsp:forward> 执行到该语句立即跳转,后面的语句不执行

response.sendRedirect("hello.jsp");重定向。 执行完此页面再进行跳转

cookie: 设置在客户端,安全性比较低一个客户端上最多只能保存300个cookie。

addCookie();

setHeader("Set-Cookie","名字=值");

session对象:每一个session代表了一个用户。

获取session ID:String id = session.getId();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值