`
Aether
  • 浏览: 14260 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

JSP拾遗(三)——jsp内置对象

    博客分类:
  • Java
阅读更多

    在看本章介绍的jsp内置对象之前,你有必要回看一下上篇MyJsp_jsp.java的源代码。当那个代码框架在你的脑海中打上印记以后,你会发现很多关于jsp的容易混淆的问题,都将迎刃而解。

 
    request:

    HttpServletRequest的一个实例。 继承自ServletRequest接口,是对Http请求信息的封装。从前面的代码可以看到,web容器已经实例化了一个request对象作为参数传入_jspService()方法中,因此这些内置对象我们可以不用考虑他们的创建。


    作为http请求信息的封装,可以想象,我们使用到request对象的方法,应该是一系列的getXXX方法。但request仍然有两个很特别的set方法,它们是setCharacterEncoding()和setAttribute()方法。其中setAttribute()是显式地往request里面储存对象,这在分发请求时会经常用到。


    String getParameter(String name);  // jsp编程里面用得最多的方法,根据一个标识名,取得它的值,如文本框、选择框等;
    String  getParameterValues(String name); //根据一个标识名,取得它的所有的值。用在同名数组提交的web控件的取值,如复选框等;
    Map getParameterMap() ; //request里面所有参数及值的map集合。当你的一次请求提交里面超过了20个参数要通过getParameter()获取并验证时,你可以尝试用这个方法一次性的取出来,然后构建一个VO对象,通过反射来把request里面的值设置到VO对象里面。Apache的一个团队做的更好,他们开发出了Struts。


    ServletInputStream getInputStream() ; //request里面的二进制输入流。在使用file控件上传文件时,你必须使用这个方法来获取文件流。


    String getRealPath(java.lang.String); //获取所输入资源在操作系统中的绝对地址。在读取服务器文件流时,这个方法将会非常方便。当输入""时,返回当前文件所在目录的绝对地址。从Java Servlet API 2.1开始,这个方法已被废除,取而代之的是ServletContext.getRealPath(String)方法。因此,request需要用这个形式调用了request.getSession().getServletContext().getRealPath(String)


    String getRemoteAddr(); //获取客户端的IP地址。做登录日志记录时必不可少。你既可以根据IP地址库查询显示出客户端所在的城市,也可以禁止这个IP的用户登录。还记得有些网站的登录吗?当连续几次登录错误后,你就无法在一定时间内登录了,但这个一般是在session里面做的,用IP的话,就太“狠”了。(因为客户端可能是局域网登入,封IP将会封掉局域网中的所有用户)


    Cookie[] getCookies(); //获取客户端Cookie。你也可以选择用javascript来操作cookie,但javascript的不安全性很可能暴露你的处理逻辑,比如保存在客户端的用户密码的解密算法,而java则不存在这个问题。Cookie一般用来记录用户的操作习惯,方便用户的操作。特别地在自动登录时,几乎都是用cookie的解决方案。


    response:
    作为服务端的响应对象,HttpServletResponse定义了所有的服务器返回值,包括我们常见的404和500错误代码。与request相对应,response包括了cookie、head等的设值方法。


    setContentType(java.lang.String)设置响应的MIME(Multipurpose Internet Mail Extensions)类型.例如: "text/html;charset=UTF-8"同时包括了编码格式;tomcat的config目录的web.xml里面定义了绝大多数的MIME类型,对于没有定义的类型,必须在web.xml里面定义了以后,这里的设置才起作用。例如Excel的xls类型,需要在web.xml中定义为:

<mime-mapping>
        <extension>xls</extension>
        <mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>

 
    ServletOutputStream getOutputStream() 获取servlet输出流,提供写入二进制数据的功能。和setContentType(java.lang.String)结合使用,你可以用你的jsp货servlet输出任意格式的二进制文件,比如各种影音文件等。特别是在提供下载时,这种做法可以有效地控制权限并隐藏你的实际文件地址。

 

    pageContext

 

     抽象类javax.servlet.jsp.PageContext的一个实例,通过JspFactory.getPageContext()获得。pageContext提供了有用的servlet/jsp上下文的信息,从上文jsp源码中可见:

 

     

application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();

 

        这几个内置对象都是用pageContext获得。同时pageContext提供了getAttribute()和setAttribute()方法,已经相当于页面include的include()方法以及对异常的处理方法handlePageException()。
由上可以看出,在实际jsp代码中,将会很少用到pageContext对象。

 

    session
    HttpSession是无状态的http协议的有力补充,可以认为是表示客户端和服务器之间的一个会话或连接,在一定的连接时间内,这个对象保持不变。如果没有session对象,我这里每发表一篇博客或做次修改,都要重新登录一次。


    我们经常用到session的方法很简单,就是getAttribute()和setAttribute()方法。在一个用户登录了以后,我们会在他的session里面设定一个值,在处理用户的其他请求时,通过检测session的那个值,来避免用户重复登录,更重要的是,保存一些用户相关的临时信息,如购物车等,这个在购物网站中应用最广。而结合SessionListener,我们还可以做到系统的单点登录。


    服务端保持的session需要客户端提供一个标识来唯一确定,这个标识就是sessionId。一般来说sessionId是存储在客户端的cookie里面的,当每次向服务端发送请求时,这个sessionId会自动包含进去。如果客户端禁用了cookie,这就需要显式的用url重写来传入sessionId,比如浏览器会自动加入;jsessionId=.xxxx到URL的后面。

 

    application


    ServletContext的实例。表示整个web应用的上下文,因此在一个web应用中,只有一个application对象,它的生命周期也是最长的(从应用启动到停止的整个过程中有效)。在web容器里面,web.xml里面的app属性来定义一个web应用,:

<web-app version="2.4" 
 xmlns="http://java.sun.com/xml/ns/j2ee" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <context-param>
  <description>DB Connection URL</description>
  <param-name>URL</param-name>
  <param-value><![CDATA[jdbc:mysql://localhost:3306/test?user=root&password=root]]></param-value>
 </context-param>
</web-app>

 
    application里面除了可以set/get整个应用共用的资源(例如数据库连接)外,还提供了对应用上下文配置(<web-app>里面<param>设置的参数),对资源的读取等功能。

 

    config
    ServletConfig用来访问web应用启动时初始化的配置信息,主要是 getInitParameter() 和getInitParameterNames() 方法,和application中的方法调用相同。


    out

    当前页的JspWriter对象。通过上文的源代码可以看出,所有的jsp中的html代码都将通过out对象的write ()方法输入。出来write()方法外,jsp里调用最多的应该是Print()和println()方法了。在jsp中,你会经常用到在数据处理页中用out输出一段javascript代码来提示并控制页面转向。例如:

out.println(“<script type=’text/javascript’>alert(‘用户名或密码错误,请重新输入’); history.back();</script>”);

 
 
    page
    从上文的代码可以看出,page就是jsp中this的引用,只是向上转型了Object而已。你可以将其转型为Servlet来调用其方法,但一般来说,你没有必要这么用它。正因为它的不常用,往往在java代码段中会忽视了它,比如你分页时自己又定义了一个表示页数的整型page,当然,jsp在编译时就会把这个错误给报出来。

分享到:
评论

相关推荐

    web学习笔记 —— jsp内置对象

    在学习JSP内置对象的过程中,阅读相关文档、实践案例以及参考博客(如《web学习笔记 —— jsp内置对象》)是非常有益的。不断实践和探索,将使你更好地理解和运用这些对象,从而在Web开发领域更加游刃有余。

    JSP内置对象实验报告.doc

    在JSP中,有九个内置对象,它们是预定义的,可以直接在JSP页面中使用,无需声明或实例化。本实验主要探讨了四个关键内置对象:request、response、session和pageContext。 1. **request对象**:request对象代表HTTP...

    jsp网络编程——源文件(06——09)

    1. **chap06**:这一章可能涵盖了JSP的基础知识,如JSP页面结构、指令、脚本元素、内置对象等。它可能会介绍如何在JSP中插入静态和动态内容,以及如何使用JSP表达式和脚本片段。 2. **chap07**:通常这一章会深入...

    jsp程序设计——图灵奖

    3. **内置对象**:了解JSP的九大内置对象,如request、response、session和application,及其在处理用户请求和响应中的作用。 4. **Servlet与JSP的关系**:理解JSP如何转化为Servlet,以及两者在Web应用程序中的...

    JSP核心技术——JSP引擎内幕(2010).pdf

    ### JSP核心技术——JSP引擎内幕 #### 一、JSP引擎的工作原理 JSP(Java Server Pages)是一种基于Java的服务器端脚本技术,它允许开发者将动态内容嵌入到HTML网页中。JSP的核心功能是通过JSP引擎来实现的。JSP...

    jsp九大内置对象

    ### JSP九大内置对象详解 #### 一、Request对象 - **定义**:`javax.servlet.http.HttpServletRequest` 类型的对象。 - **用途**:用于接收客户端发送到服务器端的数据(包括但不限于HTTP请求头、请求参数等)。 - ...

    jsp网络编程——源文件(01——05)

    - JSP生命周期与内置对象 - JSP的转换过程(翻译成Servlet) 2. **chap02:JSP脚本元素** - 声明(Declarations) - 脚本片段(Scriptlets) - 表达式(Expressions) - 注释(Comments) 3. **chap03:JSP...

    jsp网络编程——源文件(12——13)

    【标题】"jsp网络编程——源文件(12——13)"主要涵盖了JSP(Java Server Pages)技术在网络编程中的应用,这部分内容通常包括了第十二章和第十三章的知识点。JSP是Java平台上的动态网页技术,它允许开发者在HTML或...

    jsp小游戏——猜数字相加大小

    6. **状态管理**:为了追踪玩家的尝试次数,JSP可以使用内置对象如`session`或`request`来存储玩家的状态信息。 7. **游戏结束条件**:当玩家在三次尝试内猜对了结果,JSP将显示游戏胜利的信息,并可能提供重新开始...

    jsp内置对象学习

    在本教程中,我们将深入探讨两个重要的JSP内置对象——Out对象和Request对象。 1. Out对象: Out对象是JSP页面中用于向客户端发送数据的主要手段。它是javax.servlet.jsp.JspWriter类的一个实例,负责管理服务器的...

    jsp开发案例——租房系统jsp列子

    1. JSP指令:如`&lt;%@ include %&gt;`, `&lt;jsp:useBean&gt;`, `&lt;jsp:setProperty&gt;`等,用于页面组合、创建Java对象以及设置对象属性。 2. JSP表达式:`&lt;%= %&gt;`用于将Java表达式的值输出到HTML。 3. JSP脚本元素:`! %&gt;`用于...

    新闻管理系统--jsp课设————课程设计

    4. JSP内置对象:在JSP中,有九个内置对象可以直接使用,如request、response、session、application等。这些对象简化了Web开发,例如request对象可以获取HTTP请求参数,response对象可以设置响应头和输出内容。 5....

    实验三 JSP内置对象使用

    【实验三 JSP内置对象使用】 实验的目的是让学生熟悉并理解JSP中的几个核心内置对象,包括request、response、session、application以及out对象。这些对象是JSP中用于处理HTTP请求、响应、会话管理和输出数据的关键...

    Jsp程序设计——交友网站

    **JSP程序设计——交友网站** 本项目是一个基于JSP技术构建的交友网站,它源自于张跃平的JSP程序设计课程中的实例,并经过个人的深入修改和扩展,增加了更多的功能,使得整个系统更加完善且可以直接运行。下面将...

    原生jsp进行Web编程—作业3-JSP内置对象-Part2

    一、JSP内置对象练习 1、使用JSP中的session对象,实现用户登陆检验 (1)(1)web目录下的session-login目录中,新建login.jsp(允许用户输入用户名和密码), 在usercheck.jsp中进行验证,成功则显示index.jsp...

    jsp九大内置对象讲解

    JSP九大内置对象详解 JSP(Java Server Pages)是一种基于Java技术的服务器端编程语言,用于创建动态网页。JSP九大内置对象是JSP技术中非常重要的一部分,它们是JSP引擎提供的一些预定义的对象,用于帮助开发者快速...

    jsp内置对象 jsp的几个内置的对象图解

    jsp内置对象 有关jsp的一些内置的对象的总结

    JSP网络编程——多媒体(1——3)

    "JSP网络编程——多媒体(1——3)"这一主题,显然关注的是如何利用JSP技术处理和展示多媒体内容,如图像、音频、视频等。下面我们将深入探讨这个主题,了解相关知识点。 1. **JSP基本概念**: JSP是由Sun ...

    JSP内置对象大全及实例解析

    JSP内置对象大全及实例解析,前面部分讲的是JSP的9大内置对象的函数和方法,后面是各个对象的所有方法的实例。

    用JSP写的——企业人力资源系统

    【标题】"用JSP写的——企业人力资源系统"是一个基于Java服务器页面(JSP)技术构建的企业级应用,主要用于管理企业内部的人力资源信息。这个系统涵盖了人力资源管理的核心功能,如员工信息管理、招聘管理、培训发展...

Global site tag (gtag.js) - Google Analytics