- 浏览: 14260 次
- 性别:
- 来自: 深圳
最近访客 更多访客>>
最新评论
-
Aether:
Here is include a jsp file!
Thi ...
JSP拾遗(五)——jsp文件包含指令
在看本章介绍的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在编译时就会把这个错误给报出来。
发表评论
-
Hadoop从零开始(一)——环境准备
2012-07-12 23:17 1510一、Linux虚拟机安装 Hadoop要运行在Uni ... -
JSP拾遗(十四)——单点登录
2009-08-03 09:58 0todo -
JSP拾遗(十三)——文件上传
2009-08-01 19:53 0TODO -
JSP拾遗(十二)——分页查询
2009-08-01 19:52 0TODO -
JSP拾遗(十一)——注册验证
2009-08-01 19:52 0TODO -
JSP拾遗(十)——权限控制
2009-08-01 19:51 0TODO -
JSP拾遗(九)——中文乱码
2009-08-01 19:48 0TODO -
JSP拾遗(八)——Listener
2009-08-01 19:44 2051Javax.servlet中定义了三类监听器:ServletC ... -
JSP拾遗(七)——Filter
2009-08-01 18:48 1021一个过滤器必须要实现javax.servlet.Filter, ... -
JSP拾遗(六)——Servlet
2009-08-01 18:42 960在典型的J2EE中,我们的应用是通过应用服务器(如TOMCAT ... -
JSP拾遗(五)——jsp文件包含指令
2009-07-12 19:36 2195<%@include file=”fileName” ... -
JSP拾遗(四)——jsp页面标签
2009-07-10 22:41 1905第二节中,我们通过JSP编译成的java源文件对比出了 ... -
JSP拾遗(二)——从jsp到servlet
2009-06-16 22:08 1797无代码无真相。这里我们来看看,一个简单的jsp页面, ... -
JSP拾遗(一)——初识JSP
2009-06-16 21:53 1173我的java编程学习,即是从jsp开始。 什么是jsp ...
相关推荐
在学习JSP内置对象的过程中,阅读相关文档、实践案例以及参考博客(如《web学习笔记 —— jsp内置对象》)是非常有益的。不断实践和探索,将使你更好地理解和运用这些对象,从而在Web开发领域更加游刃有余。
在JSP中,有九个内置对象,它们是预定义的,可以直接在JSP页面中使用,无需声明或实例化。本实验主要探讨了四个关键内置对象:request、response、session和pageContext。 1. **request对象**:request对象代表HTTP...
1. **chap06**:这一章可能涵盖了JSP的基础知识,如JSP页面结构、指令、脚本元素、内置对象等。它可能会介绍如何在JSP中插入静态和动态内容,以及如何使用JSP表达式和脚本片段。 2. **chap07**:通常这一章会深入...
3. **内置对象**:了解JSP的九大内置对象,如request、response、session和application,及其在处理用户请求和响应中的作用。 4. **Servlet与JSP的关系**:理解JSP如何转化为Servlet,以及两者在Web应用程序中的...
### JSP核心技术——JSP引擎内幕 #### 一、JSP引擎的工作原理 JSP(Java Server Pages)是一种基于Java的服务器端脚本技术,它允许开发者将动态内容嵌入到HTML网页中。JSP的核心功能是通过JSP引擎来实现的。JSP...
### JSP九大内置对象详解 #### 一、Request对象 - **定义**:`javax.servlet.http.HttpServletRequest` 类型的对象。 - **用途**:用于接收客户端发送到服务器端的数据(包括但不限于HTTP请求头、请求参数等)。 - ...
- JSP生命周期与内置对象 - JSP的转换过程(翻译成Servlet) 2. **chap02:JSP脚本元素** - 声明(Declarations) - 脚本片段(Scriptlets) - 表达式(Expressions) - 注释(Comments) 3. **chap03:JSP...
【标题】"jsp网络编程——源文件(12——13)"主要涵盖了JSP(Java Server Pages)技术在网络编程中的应用,这部分内容通常包括了第十二章和第十三章的知识点。JSP是Java平台上的动态网页技术,它允许开发者在HTML或...
6. **状态管理**:为了追踪玩家的尝试次数,JSP可以使用内置对象如`session`或`request`来存储玩家的状态信息。 7. **游戏结束条件**:当玩家在三次尝试内猜对了结果,JSP将显示游戏胜利的信息,并可能提供重新开始...
在本教程中,我们将深入探讨两个重要的JSP内置对象——Out对象和Request对象。 1. Out对象: Out对象是JSP页面中用于向客户端发送数据的主要手段。它是javax.servlet.jsp.JspWriter类的一个实例,负责管理服务器的...
1. JSP指令:如`<%@ include %>`, `<jsp:useBean>`, `<jsp:setProperty>`等,用于页面组合、创建Java对象以及设置对象属性。 2. JSP表达式:`<%= %>`用于将Java表达式的值输出到HTML。 3. JSP脚本元素:`! %>`用于...
4. JSP内置对象:在JSP中,有九个内置对象可以直接使用,如request、response、session、application等。这些对象简化了Web开发,例如request对象可以获取HTTP请求参数,response对象可以设置响应头和输出内容。 5....
【实验三 JSP内置对象使用】 实验的目的是让学生熟悉并理解JSP中的几个核心内置对象,包括request、response、session、application以及out对象。这些对象是JSP中用于处理HTTP请求、响应、会话管理和输出数据的关键...
**JSP程序设计——交友网站** 本项目是一个基于JSP技术构建的交友网站,它源自于张跃平的JSP程序设计课程中的实例,并经过个人的深入修改和扩展,增加了更多的功能,使得整个系统更加完善且可以直接运行。下面将...
一、JSP内置对象练习 1、使用JSP中的session对象,实现用户登陆检验 (1)(1)web目录下的session-login目录中,新建login.jsp(允许用户输入用户名和密码), 在usercheck.jsp中进行验证,成功则显示index.jsp...
JSP九大内置对象详解 JSP(Java Server Pages)是一种基于Java技术的服务器端编程语言,用于创建动态网页。JSP九大内置对象是JSP技术中非常重要的一部分,它们是JSP引擎提供的一些预定义的对象,用于帮助开发者快速...
jsp内置对象 有关jsp的一些内置的对象的总结
"JSP网络编程——多媒体(1——3)"这一主题,显然关注的是如何利用JSP技术处理和展示多媒体内容,如图像、音频、视频等。下面我们将深入探讨这个主题,了解相关知识点。 1. **JSP基本概念**: JSP是由Sun ...
JSP内置对象大全及实例解析,前面部分讲的是JSP的9大内置对象的函数和方法,后面是各个对象的所有方法的实例。
【标题】"用JSP写的——企业人力资源系统"是一个基于Java服务器页面(JSP)技术构建的企业级应用,主要用于管理企业内部的人力资源信息。这个系统涵盖了人力资源管理的核心功能,如员工信息管理、招聘管理、培训发展...