JSP内置对象(1)----request、response

JSP内置对象即无需声明就可以直接使用的对象实例,在实际的开发过程中,比较常用的JSP对象有request,response,session,out和application等,笔者在本文章中将简单介绍一下以上几种对象的使用。

request对象

request对象代表这是从用户发送过来的请求,从这个对象中可以取出客户端用户提交的数据或者是参数,这个对象只有接受用户请求的页面才可以访问。

1.request对象使用场合

如果要与用户互动,必须要知道用户的需求,然后根据这个需求生成用户期望看到的结果。这样才能实现与用户的互动。在Web应用中,用户的需求就抽象成一个request对象,这个对象中间包括了用户的需求。request正是用来收集类似这些用户的输入数据和参数的。

同时,request对象中还包括一些服务器的信息,例如端口、真实路径、访问协议等信息,通过request对象可以取得服务器的这些参数。

不多说直接上代码

  1. <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> 
  2. <html> 
  3.   <head>    
  4.     <title>request主要方法调用示例</title> 
  5.   </head>  
  6.   <body> 
  7.   <font size="2"> 
  8.   request主要方法调用示例:<br> 
  9.   <% 
  10.      request.setAttribute("attr","Hello!"); 
  11.      out.println("attr属性的值为:"+request.getAttribute("attr")+"<br>"); 
  12.      out.println("上下文路径为:"+request.getContextPath()+"<br>"); 
  13.      out.println("Cookies:"+request.getCookies()+"<br>"); 
  14.      out.println("Host:"+request.getHeader("Host")+"<br>"); 
  15.      out.println("ServerName:"+request.getServerName()+"<br>"); 
  16.      out.println("ServerPort:"+request.getServerPort()+"<br>"); 
  17.      out.println("RemoteAddr:"+request.getRemoteAddr()+"<br>"); 
  18.      request.removeAttribute("attr"); 
  19.      out.println("属性移除操作以后attr属性的值为:"+request.getAttribute("attr")+"<br>"); 
  20.    %> 
  21.    </font> 
  22.   </body> 
  23. </html> 
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>  <head>       <title>request主要方法调用示例</title>  </head>   <body>  <font size="2">  request主要方法调用示例:<br>  <%     request.setAttribute("attr","Hello!");     out.println("attr属性的值为:"+request.getAttribute("attr")+"<br>");     out.println("上下文路径为:"+request.getContextPath()+"<br>");     out.println("Cookies:"+request.getCookies()+"<br>");     out.println("Host:"+request.getHeader("Host")+"<br>");     out.println("ServerName:"+request.getServerName()+"<br>");     out.println("ServerPort:"+request.getServerPort()+"<br>");     out.println("RemoteAddr:"+request.getRemoteAddr()+"<br>");     request.removeAttribute("attr");     out.println("属性移除操作以后attr属性的值为:"+request.getAttribute("attr")+"<br>");   %>   </font>  </body></html>

第11行代码设置了一个名为“attr”的属性值

第12~18行这段代码向客户端返回来request域的属性值

第19行代码删除了名为“attr”的属性

2.request对象使用示例

1、使用request对象取得表单数据

  1. <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> 
  2. <html> 
  3.   <head>    
  4.     <title>request主要方法调用示例</title> 
  5.   </head>  
  6.   <body> 
  7.   <font size="2"> 
  8.   request主要方法调用示例:<br> 
  9.   <% 
  10.      request.setAttribute("attr","Hello!"); 
  11.      out.println("attr属性的值为:"+request.getAttribute("attr")+"<br>"); 
  12.      out.println("上下文路径为:"+request.getContextPath()+"<br>"); 
  13.      out.println("Cookies:"+request.getCookies()+"<br>"); 
  14.      out.println("Host:"+request.getHeader("Host")+"<br>"); 
  15.      out.println("ServerName:"+request.getServerName()+"<br>"); 
  16.      out.println("ServerPort:"+request.getServerPort()+"<br>"); 
  17.      out.println("RemoteAddr:"+request.getRemoteAddr()+"<br>"); 
  18.      request.removeAttribute("attr"); 
  19.      out.println("属性移除操作以后attr属性的值为:"+request.getAttribute("attr")+"<br>"); 
  20.    %> 
  21.    </font> 
  22.   </body> 
  23. </html> 
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>  <head>       <title>request主要方法调用示例</title>  </head>   <body>  <font size="2">  request主要方法调用示例:<br>  <%     request.setAttribute("attr","Hello!");     out.println("attr属性的值为:"+request.getAttribute("attr")+"<br>");     out.println("上下文路径为:"+request.getContextPath()+"<br>");     out.println("Cookies:"+request.getCookies()+"<br>");     out.println("Host:"+request.getHeader("Host")+"<br>");     out.println("ServerName:"+request.getServerName()+"<br>");     out.println("ServerPort:"+request.getServerPort()+"<br>");     out.println("RemoteAddr:"+request.getRemoteAddr()+"<br>");     request.removeAttribute("attr");     out.println("属性移除操作以后attr属性的值为:"+request.getAttribute("attr")+"<br>");   %>   </font>  </body></html>

解释:在上面这个程序当中,也可以把表单提交给其他页面,那样只需把接受参数的方法放在对应的页面即可.在这里只是为了方便展示问题才提交给页面自身。

2、使用request对象取得页面传递参数

  1. <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> 
  2. <html> 
  3.   <head>  
  4.     <title>request对象取得页面传递参数示例</title> 
  5.   </head> 
  6.   <% 
  7.        String param = request.getParameter("param"); 
  8.         
  9.    %> 
  10.   <body> 
  11.       <font size="2"> 
  12.       <a href="URL.jsp?param=Hello">请点击这个链接</a><br> 
  13.       你提交的参数为:<%=param%> 
  14.       </font> 
  15.   </body> 
  16. </html> 
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>  <head>     <title>request对象取得页面传递参数示例</title>  </head>  <%       String param = request.getParameter("param");          %>  <body>      <font size="2">      <a href="URL.jsp?param=Hello">请点击这个链接</a><br>      你提交的参数为:<%=param%>      </font>  </body></html>

解释:在这个例子中,通过一个超链接完成了一次单参数的请求,并且在服务器端获取了这个参数。其中第8行代码在服务端获取客户提交的参数。第12行代码定义另一个带参数的超连接。

response对象

response对象是服务器端向客户端返回的数据,从这个对象中可以取出部分与服务器互动的数据和信息,只有接受这个对象的页面才可以访问这个对象。

1.response对象使用场合

既然用户可以对服务器发出请求,服务器就需要对用户的请求作出反应。这里服务器就可以使用response对象向用户发送数据,response是对应request的一个对象。

如果需要获取服务器返回的处理信息,就可以对response进行操作,同时当服务器需要对客户端进行某些操作的时候也需要response对象,例如服务器要在客户端生成Cookies,那么这时候response对象就是一个很好的选择。

2.response使用举例,采用response实现页面重定向。

  1. <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> 
  2. <html> 
  3.   <head>  
  4.     <title>response对象页面重定向示例</title> 
  5.   </head> 
  6.   <body> 
  7.       <% 
  8.           response.sendRedirect("http://www.sohu.com"); 
  9.        %> 
  10.   </body> 
  11. </html> 
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>  <head>     <title>response对象页面重定向示例</title>  </head>  <body>      <%          response.sendRedirect("http://www.sohu.com");       %>  </body></html>
上面这个页面运行的时候直接重定向到搜狐的首页。

session对象

session对象维护者客户端用户和服务器端状态,从这个对象中可以去除用户和服务器交互过程中的数据和信息。这个对象在用户关闭浏览器离开Web应用之前一直有效。

1.session对象使用场合

session对象中保存的内容是用户与服务器整个交互过程中的信息,如果是想在整个交互的过程中都可以访问到信息,就可以选择存放在session对象中。

例如在用户登录的过程中,可以在session中记录用户的登录状态,这样用户就不必在每个页面都重新登录,只要用户没有离开当前的Web应用系统,就可以一直保存登录的状态。

2.session对象使用示例

模拟一个简单的用户登录动作,在这个示例程序中不对提交的登录信息做具体的验证,只要用户名和密码都不为空就可以登录,这样处理知识为了方便展示session的使用方法,在具体的开发中必须要对登录信息进行验证。

  1. <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> 
  2. <html> 
  3.   <head>  
  4.     <title>用户登录界面</title> 
  5.   </head> 
  6.   <body> 
  7.       <font size="2"> 
  8.           <form action="LoginCheck.jsp" method="post"> 
  9.                用户名:<input type="text" name="userName" size="10"/> 
  10.                密  码:<input type="password" name="password" size="10"/> 
  11.              <input type="submit" value="提交">         
  12.           </form> 
  13.       </font> 
  14.   </body> 
  15. </html> 
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>  <head>     <title>用户登录界面</title>  </head>  <body>      <font size="2">          <form action="LoginCheck.jsp" method="post">               用户名:<input type="text" name="userName" size="10"/>               密  码:<input type="password" name="password" size="10"/>             <input type="submit" value="提交">                  </form>      </font>  </body></html>

上面这个JSP页面想LoginCheck提交了一个登录表单,表单中有用户名和密码。下面是LoginCheck的内容。

  1. <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> 
  2. <html> 
  3.   <head>  
  4.     <title>用户登录验证页面</title> 
  5.   </head> 
  6.   <% 
  7.       String userName = request.getParameter("userName"); 
  8.       String password = request.getParameter("password"); 
  9.        
  10.       if(userName.length()>0&&password.length()>0) 
  11.       { 
  12.           session.setAttribute("status","Login"); 
  13.           response.sendRedirect("Main.jsp"); 
  14.       }else 
  15.           response.sendRedirect("Login.jsp"); 
  16.    
  17.    %> 
  18.   <body> 
  19.   </body> 
  20. </html> 
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>  <head>     <title>用户登录验证页面</title>  </head>  <%      String userName = request.getParameter("userName");      String password = request.getParameter("password");            if(userName.length()>0&&password.length()>0)      {          session.setAttribute("status","Login");          response.sendRedirect("Main.jsp");      }else          response.sendRedirect("Login.jsp");     %>  <body>  </body></html>

在上面这个页面中,从变淡中取出用户名和密码,如果用户名和密码都不为空就允许登录,否则就重定向到登录页面,让用户重新登录。如果用户登录成功,就在session中设置一个status属性,然后把用户重定向到系统的主页面,在主页面中可以访问session中的值。下面是Main页面的具体代码

  1. <%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%> 
  2. <html> 
  3.   <head>  
  4.     <title>系统主界面</title> 
  5.   </head> 
  6.   <body> 
  7.       <font size="2"> 
  8.           <% 
  9.               Object status = session.getAttribute("status"); 
  10.               if(session.getAttribute("status")!=null) 
  11.                   out.print("用户已经登录!"); 
  12.               else 
  13.                   response.sendRedirect("Login.jsp"); 
  14.            %> 
  15.       </font> 
  16.   </body> 
  17. </html> 
<%@ page language="java" import="java.util.*" contentType="text/html;charset=gb2312"%><html>  <head>     <title>系统主界面</title>  </head>  <body>      <font size="2">          <%              Object status = session.getAttribute("status");              if(session.getAttribute("status")!=null)                  out.print("用户已经登录!");              else                  response.sendRedirect("Login.jsp");           %>      </font>  </body></html>

在上面这个页面中,对用户的状态进行判断,如果从session中可以取出对应的属性值,说明用户已经登录,如果没有渠道指定属性值,说明用户没有登录,这时就重定向到登录页面,让用户重新登录。其中session的值在用户离开系统之前的任何页面都可以访问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值