JSP(第三章:JSP内置对象)

1 out对象

2 request对象

3 response对象

4 session对象

5 pageContext对象

6 application对象

7 config对象

8 cookie对象

内置对象:不加声明就可以在JSP页面脚本中使用的成员变量,使用这些对象可以更容易收集客户端发送的请求信息,响应客户端的请求及存储客户信息。

分别为:request、response、out、session、application、config、pageContext、page、exception、cookie

1 out对象

<%
out.println("hello");//没有pre不会,不会换行
out.println("world");
%>
【结果:hello world】
<pre>
<%
out.println("hello");//会换行
out.println("world");
%>
</pre>
【  结果:hello
         world   】

2 request对象

request对象的存活范围:对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁。之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存放的任何数据。

request对象代表的是来自客户端的请求,例如在 form表单中填写的信息等,是最常用的对象

2.1 request方法:

request的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值。

setAttributegetAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。

request的getParameter方法的作用是获取到客户端通过表单或url请求参数发送过来的参数值,是客户端与服务器端之间的交互,服务器端要想获取到客户端发送过来的数据,就需要使用getParameter方法来获取。

没有与getParameter方法对应的setParameter方法。

方法 描述
getParameter(String) 返回客户端向服务器端传送的参数值
getParameterNames() 获得客户端传送给服务器端的所有参数的名字,结果是一个枚举类型的数据(Enumeration)
getParameterValues(String) 获得指定参数的所有值,返回String[]
getMethod() 返回客户端向服务器端传送数据的方法
getRequestURL() 获得发出请求字符串的客户端地址
getRemoteAddr() 获取客户端的IP地址
getRemoteHost() 获取客户端的机器名称
getServerName() 获取服务器的名字
getServletName() 客户端所请求的脚本文件路径
getServerPort() 获取服务器端的端口

2.2 处理中文:

1.获取访问请求参数时乱码——对单个请求参数进行设置

<% String myname=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8"); %>

2.获取表单提交的信息乱码——对请求对象的所有参数进行设置
注意:一定要在页面中没有调用任何request对象的方法之前使用

<% request.setCharacterEncoding("UTF-8"); %>

3 response对象

response:表示返回给客户端的响应。对应类javax.servlet.http.HttpServletResponse经常用于设置Http标题、添加cookie、设置响应内容的类型和状态、发送Http重定向和编码URL。

3.1 response常用方法:

addCookie(Cookie):——添加一个cookie对象。用于在客户端保存特定的信息
addHeader(String,String):——添加http头信息,该Header信息将发送到客户端
ontainsHeader(String):——判断指定名字的HTTP文件头是否存在
sendError(int,String):——向客户端发送错误的信息
sendRedirect(String):——重定向JSP文件。注意和<jsp:forward>的区别
setContentType(String):——设置MIME类型与编码方式

3.2 处理重定向

当你访问第一个页面的时候,页面要求你重新访问另外一个页面,因此客户端浏览器需要访问另外一个页面的地址。因此地址栏改变,且两个页面使用的是不同的request

4 session对象

session对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。

HTTP是无状态协议;Web Server对每一个客户端请求都没有历史记忆;session用来保存客户端状态信息。

浏览器不关闭,session对象会一直存在(姑且这样认为),且session对象只有一个。如果浏览器关闭重启,会创建新的session对象。

Cookie是记录在客户端,session是记录在服务器端。但是cookie记录在客户端,用户可以设置不允许写入cookie,用户也可以删除cookie或者修改cookie,不够可靠。

Session是写在服务器端内存中的内容,当写session的时候会为客户端的浏览器记录一个唯一的编号,同时为session也赋予同样的号码。当用户访问第二个页面的时候,服务器端会根据浏览器的编号去找同一个编号对应的session。这个编号叫sessionid。

4.1 session常用方法:

setAttribute()方法和getAttribute()方法——实现创建及获取客户的会话,get返回的是Object,需要强制转换成自己需要的类型
removeAttribute(String name)——对于存储在session会话中的对象,如果想将其从session会话中移除
invalidate()——销毁session
getLastAccessedTime()——返回客户端最后一次与会话相关联的请求时间getMaxInactiveInterval()——以秒为单位返回一个会话内两个请求最大时间间隔
setMaxInactiveInterval()——以秒为单位设置session的有效时间
getId()——返回session的ID

4.2 session例子

【index.jsp】
<html>
    <head>
        <title>Forward Example</title>
    </head>

    <body>
      <form id="form1" action="session.jsp">
      <input type="text" name="name"/>

      <input type="submit" name="Submit" value="ok"/>

      </form>

    </body>
</html>

【session.jsp】
  <body>
    <%
       String name=request.getParameter("name");
       session.setAttribute("name",name);

     %>

    <form name="form2" action="result.jsp">
    your address is:
    <input type="text" name="address"/>

     <input type="submit" name="Submit" value="ok"/>
    </form>
  </body>

【result.jsp】
  <body>
    <%String name=(String)session.getAttribute("name"); 
      String solution=request.getParameter("address");
    %>

    your name is:
    <%=name %>
    your address is:
    <%=solution %>
  </body>
【结果:result.jsp里显示了index.jsp的name和session.jsp的address】

5 pageContext对象

pageContext对象可以存取关于JSP执行期间所要用到的属性和方法。
可以获取JSP内置对象:
getSession():返回session对象
getServletConfig():返回config对象
getServletContext():返回application对象

6 application 对象

application对象在整个应用区域中都有效。
application对象可以是ServletContext类型的。
application的存活范围比request和session都要大。
只要服务器没有关闭,application对象中的数据就会一直存在,在整个服务器的运行过程当中,application对象只有一个,它会被所有的用户共享。
application适用于在同一个应用程序中的各个用户共享数据。

6.1 application常用方法

getAttributeNames()——获得所有application对象使用的属性名。
getAttribute(String name)——从application对象中获取指定对象名。
setAttribute(String key,Object obj)——使用指定名称和指定对象在application对象中进行关联。
removeAttribute(String name)——从application对象中去掉指定名称的属性。
getRealPath()——可以获取资源在服务器上的物理路径(绝对路径),常用来获取上传文件时要存储文件的路径。

6.2 application例子

【index.jsp】
<%@ page language="java" import="java.util.*" pageEncoding="Gb2312"%>
<html>
    <head>
        <title>Forward Example</title>
    </head>

    <body>
    <%
        if(application.getAttribute("counter") == null)
        {
            application.setAttribute("counter", "1");
        }
        else
        {
            String strnum = null;
            strnum = application.getAttribute("counter").toString();
            int icount = 0;
            icount = Integer.valueOf(strnum).intValue();
            icount++;
            application.setAttribute("counter", Integer.toString(icount));

        }

    %>
        您是第<%=application.getAttribute("counter") %>位访问者!
  </body>
</html>
【结果:刷新页面counter增加1】

7 config对象

config对象是ServletConfig类型,包含初始化参数以及一些实用方法。
在初始化参数中可以读取web.xml文件中的环境设置和服务器配置信息。

7.1 config常用方法

getServletName()——返回Servlet的名称
getInitParameterNames()——返回Servlet程序初始化所有的参数名
getInitParameter(String)——返回Servlet程序初始参数的值

8 cookie对象

Cookie是由服务器端生成,发送给浏览器,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。

Cookie:服务器端写到客户端的文本信息,是以名-值-对的形式。

服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态。Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。另一个重要应用场合是“购物车”之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入Cookies,以便在最后付款时提取信息。

注意HTTP协议是无连接的,含义就是当客户端从服务器端得到某个文件的内容时,连接就会中断,相当于socket的close方法。但是考虑购物网站,当你在一个页面购买了东西,连接就断了,当你又访问另外一个页面去结账时,这时就不知道购买的东西是什么了。这时的解决办法就是cookie。也就是当你购买了某种商品后,服务器就在客户端记录下相应的信息来,这就是cookie。
但是要遵循两个原则:
(1)只允许写文本文档,不允许写其他类型的文件,避免那些恶意的程序。
(2)客户端可以阻止服务器写入。

8.1 cookie常用方法

getCookies()——即可获取到所有cookie对象的集合
getName()——可以获取到指定名称的cookie
getValue()——即可获取到cookie对象的值
addCookie()方法——将一个cookie对象发送到客户端使用了response对象的

【login.jsp】
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<html>
    <head>
        <title>Forward Example</title>
    </head>
    <body>
    <%
    Cookie[] cookies=request.getCookies();
    String user="";
    if(cookies!=null){
       for(int i=0;i<cookies.length;i++){
          if(cookies[i].getName().equals("mrCookie")){
              user=cookies[i].getValue();
          }
       }      
    }
    if("".equals(user)){
    %>
      <form id="form1" action="deal.jsp">
      <input type="text" name="name"/>
      <input type="submit" name="Submit" value="ok"/>    
      </form>     
      <%
      }else{%>     
              欢迎<%=user %>再次光临       
     <%} %>
    </body>
</html>


【deal.jsp】
<body>
    <%
    String user=request.getParameter("name");    
    Cookie cookie=new Cookie("mrCookie",user);
    cookie.setMaxAge(60*60*24*30);
    response.addCookie(cookie);
    %>
    <script type="text/javascript">window.location.href="login.jsp"</script>
</body>
【结果:添加姓名XX后,显示“欢迎XX再次光临”】
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

客官,赏一瓶怡宝吧。

支付宝
微信