jsp的主要内置对象是request、response、session、application、out,request和response对象是jsp的内置对象中较重要的两个。这两个对象提供了对服务器和浏览器通信方法的控制。
request对象
http通信协议是用户与服务器之间一种请求和响应(request/response)的通信协议。在jsp中,内置对象request封转了用户请求页面时所提交的信息,那么该对象调用响应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。request对象可以使用request.getParameter(String s)方法获取该表单通过text提交的信息。
<% @ page contentType = "text/html;charset = GB2312" %>
可以使用JSP引擎的内置对象request对象来获取请求所提交的各类信息:
·getProtocol() 获取用户想服务器提交信息所使用的通信协议。
·getServletPath() 获取用户请求的JSP页面的所有目录。
·getContentLength() 获取用户提交的整个信息的长度。
·getMethod() 获取用户提交信息的方式。
·getRemoteAddr() 获取用户的IP地址。
·getRemoteHost() 获取用户机的名称。
·getServerName() 获取服务器的名称。
·getServerPort() 获取服务器的端口号。
·getParameterNames() 获取用户提交的信息体部分中name参数值的一个枚举。
·request.getSession的用法
HttpRequest对象有两种形式的getSession方法调用:
一个是getSession(),
另一个是getSession(boolean isNew)这样的,
前者会检测当前时候有session存在,如果不存在则创建一个,如果存在就返回当前的。getSession()相当于getSession(false),getSession(true)则不管当前是否存在Session都创建一个。
response
可以用response对象对用户的请求做出动态响应,向用户端发送数据。
若想动态的改变这个属性的值来响应用户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值。
session对象驻留在服务器端,该对象调用某些方法保存用户在访问某个web服务目录期间的有关数据。session对象使用下列方法处理数据:
public void setAttribute(String key,Object obj)
invalidate():是session无效
application
与session不同的是application对象,tomcat服务器启动后,就产生了这个application对象,当一个用户访问web服务目录上的一个jsp页面时,jsp引擎为该用户分配这个application对象,当用户在所访问的web服务目录的各个页面之间浏览时,这个application对象都是同一个,知道tomcat服务器关闭,这个application对象才被取消。和session不同,所有的用户在同一web服务目录中的application对象是同一个,即每个web服务目录下的application对象被访问改服务目录的所有用户共享,但是,不同web服务目录下的application是互不相同的。
jsp与javabean
javabean是一种java类,通过封转属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。是一个可重复使用的软件组件,不依赖平台。
servlet
jsp的根基是java servlet,Java Servlet的核心思想是在服务器端创建能响应用户请求的对象,即创建servlet对象。
XML文件是由标记组成的文件。
web.xml文件中标记的具体内容和作用:
·根标记
xml文件必须有一个根标记,web.xml文件的根标记是<web-app>。
·<servlet>标记及子标记
该标记的内容由Tomcat服务器负责处理。该标记需要有2个子标记:<servlet-name>和<servlet-class>。
<servlet-name>标记的内容是tomcat服务器创建的servlet对象的名字;web.xml文件可以有若干个<servlet>标记,但是他们的<servlet-name>子标记的内容互不相同;
<servlet-class>标记的内容指定Tomcat服务器用哪个Servlet类来创建servlet对象。
·<servlet-mapping>标记及子标记
web.xml文件中出现一个<servlet>标记就会对应的出现一个<servlet-mapping>标记,改标记和<servlet>标记都是根标记的直接子标记。
<servlet-mapping>不同,它有两个子标记:<servlet-name>和<url-pattern>;
<servlet-name>标记的内容是Tomcat服务器创建的servlet对象的名字(该名字必须和<servlet>标记的子标记<servlet-name>的内容相同);<url-pattern>是用来指定用户用这样的URL格式来请求servlet对象。
若修改并重新保存web.xml文件,Tomcat服务器会立刻重新读取web.xml文件,因此,修改web.xml文件不必重新启动Tomcat服务器,但是必须保证web.xml文件正确无误。
servlet对象的生命周期
·初始化servlet对象,servlet对象第一次被请求加载时,服务器初始化这个servlet对象,即创建一个servlet对象,这个对象调用init方法完成必要的初始化工作。
·诞生的servlet对象再调用service方法响应用户的请求。
·当服务器关闭时,调用destroy方法,消灭servlet对象。
init方法只被调用一次,即在servlet第一次被请求加载时调用该方法。当后续用户请求servlet服务时,web服务将启动一个新的线程,即执行工程分别在运行不同的线程。
init方法
该方法是HttpServlet类中的方法,可以在子类中重写这个方法。init方法的声明格式:
public void init(ServletConfig config) throws ServletException
创建一个servlet对象,这个对象调用init方法完成必要的初始化工作。在执行时,服务器会把一个ServletConfig类型的对象传递给init()方法,这个对象就被保存在servlet对象中,直到servlet对象被消灭,这个ServletConfig对象负责向servlet传递服务设置信息,如果失败就会发生ServletException,servlet对象就不能正常工作。
service方法
该方法是HttpServlet类中的方法,可以在子类中直接继承该方法或者重写这个方法,声明格式:
public void service(HttpServletRequest request HttpServletResponse response)
throw ServletException,IOException
当servlet对象成功创建和初始化后,该对象就调用service方法来处理用户的请求并返回响应。服务器将两个参数传递给该方法,一个HttpServletRequest 类型的对象,该对象封装了用户的请求信息;另一个参数对象是HttpServletResponse 类型的对象,该对象用来响应用户的请求。和init不同,init方法只被调用一次,而service方法可能被多次调用。每个用户的每次请求都导致service方法被调用执行,调用过程运行在不同的线程中,互不干扰。
destroy方法
该方法是HttpServlet类中的方法,子类可以直接继承这个方法,一般不需要重写。声明格式:
public destroy()
当服务器终止服务时,例如关闭服务器等,destroy()方法会被执行,消灭servlet对象。