JEE_知识点小结2_JSP_Servlet

//JSP引擎的工作原理: 当一个JSP页面第一次被访问的时候,JSP引擎将执行以下步骤: 1)将JSP页面翻译成一个Servlet,这个Servlet是一个Java类,同时也是一个一个完整的Java程序 2)JSP引擎调用Java编译器对这个Servlet进行编译,得到字节码文件class。 3)JSP引擎调用Java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户端。

//JSP脚本段/代码段: JSP脚本的应用非常广泛,通常,Java代码必须通过JSP脚本嵌入HTML代码。因此,所有能在Java程序中执行的代码,都可以通过JSP脚本执行。 一个Scriptlet能够包含多个JSP语句,方法,变量,表达式。 有了脚本,便能够:声明将要用到的变量或方法;编写JSP表达式;使用隐含的对象或任何<jsp:useBean>声明过的对象;编写JSP语句。 任何文本,HTML标记,JSP元素必须在Scriptlet之外。 当JSP收到客户的请求时,Scriptlet就会被执行,如果Scriptlet有显示的内容,这些显示的内容就会被存到out对象中。

//include包括: <%@ include=...%>include指令; <jsp:include=...>include动作。

//JSP内置对象分别的常用方法:

//session 当一个客户打开浏览器连接到服务器,到客户关闭浏览器离开这个服务器称为一个会话。 当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复链接,反复刷新或不断地向同一个页面提交信息等,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。 session对象是HttpSession类的实例;HTTP协议是无状态的,信息无法通过HTTP协议本身进行传递。为了跟踪用户的操作状态,JSP使用一个叫HttpSession的对象来实现这个功能。HttpSession是一个建立在Cookie和URL-rewriting上的高质量的界面。session的信息保存在服务器端,session的ID保存在客户机的Cookie中。

 

======================================================================

//Servlet 什么是Servlet: Servlet是一种服务器端的Java应用程序,可以生成动态的Web页面,担当客户请求与服务器响应的中间层。

Servlet的基本结构: 1)一个Servlet要继承HttpServlet, 2)根据数据决定通过get还是post发送,重写doGet,doPost或Service方法。所带参数有HttpServletRequest类型和HttpServletResponse类型。 3)Servlet还要在web.xml文件中部署描述文件,将URL映射到Servlet中:   <Servlet>         <Servlet-name>UserServlet</Servlet-name>         <Servlet-class>mao.UserServlet</Servlet-class>   </Servlet>   <Servlet-mapping>          <Servlet-name>UserServlet</Servlet-name>          <url-pattern>*.user</url-pattern>   </Servlet-mapping>

Servlet的生命周期: Servlet运行在Servlet容器中,其生命周期由容器来管理。 Servlet的生命周期通过javax.Servlet.Servlet接口中的init(),service(),destroy()方法来表示.

Servlet的初始化参数: 容器初始化一个Servlet时,会为每个Servlet创建唯一一个ServletConfig, 容器从web.xml中读出Servlet的初始化参数,并把这些参数交给ServletConfig, 然后把ServletConfig传递给Servlet的Init()方法。整个过程Servlet初始化参数只读一次。 ServletConfig的主要任务是提供初始化参数。 Servlet的初始化参数只能为该Servlet所用,JSP不能读出web.xml中特定<Servlet>标记中的初始化参数。 Servlet可以在web.xml中配置初始化参数:   <Servlet>         <init-param>                <param-name>filePath</param-name>                <param-value>e:\mao\</param-value>         </init-param>         <Servlet-name>UserServlet</Servlet-name>         <Servlet-class>mao.UserServlet</Servlet-class>   </Servlet> 在Servlet代码中,获取初始化参数:out.println(this.getServletConfig().getInitParameter("filePath"));

ServletContext初始化参数: ServletContext初始化参数(上下文初始化参数)对整个Web应用都可用,包括Servlet和JSP。 Servlet中:out.println(this.getServletContext().getInitParameter("filePath")); JSP中:<%= pageContext.getServletContext().getInitParameter("filePath")%>

Servlet请求分派: 在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,HTML页面,啦处理对请求的响应。

有三种方法可以得到RequestDispatcher对象: 1)ServletRequest的getRequestDispatcher(String path)方法 2)ServletContext的getNamedDispatcher(String path)方法 3)ServletContext的getRequestDispatcher(String path)方法

RequestDispatcher对象由Servlet容器创建,提供两种方法用于请求转发: forward(ServletRequest,ServletResponse):请求转发给服务器上另一个Servlet,JSP或HTML页面,原先Servlet没有提交的内容被清除。 include(ServletRequest,ServletResponse);请求转发后,原先的Servlet还可以继续输出响应信息。

重定向:工作在浏览器端,sendRedirect()可以带参数传递,重定向后浏览器地址栏会出现重定向页面的URL。 请求分派:forward/include。

会话管理机制: Servlet API规范定义了一个简单的HttpServlet接口,通过它可以方便地实现会话跟踪用户。 会话对象中存取数据: session.setAttribute(key,value); session.getAttribute(key);

 ==================

Servlet过滤器: Servlet过滤器相关的API有三个接口,它们都在javax.Servlet包中,分别是Filter,FilterChain,FilterConfig接口。 1)所有的过滤器都必须实现Filter接口,该接口定义了init(),doFilter(),destory()三个方法. 2)FilterChain接口用于对资源请求过滤链的依次调用,定义了doFilter()方法。 3)FilterConfig接口检索过滤名,初始化参数及活动的Servlet上下文。该接口提供了四个方法。   getFilterName(),getServletContext(),getInitParameter(),getInitParameterNames()。

过滤器的配置: 过滤器通过Web应用程序中的部署描述文件web.xml中的XML标签来声明: <filter>:过滤器定义元素     <filter-name>:过滤器名字     <filter-class>:由容器载入的实际类完整路径     <init-param>:为过滤器实例提供初始化参数           <param-name>           <param-value> </filter> <filter-mapping>:过滤器规则配置     <filter-name>     <url-pattern>:将过滤器映射到指定特征的URL的JSP页面 </filter-mapping>

过滤器链配置:

Servlet监听器: 监听器Listener接口: Event类:

Servlet上下文: 服务器上的每个Web应用都有一个背景环境对象,称为上下文。 Web应用中的所有资源共享此上下文对象,因此上下文对象提供了一个同Web应用内不同资源共享信息的场所。 通过ServletConfig实例的getServletContext()方法可以得到Servlet运行的上下文对象。 Servlet上下文功能: 1)ServletContext通过getResource()和getResourceAsStream()方法访问Web应用程序内的静态资源文件。 2)Servlet通过上下文对象来存储Java对象,如getAttribute()等方法。 3)获取初始化信息,如ServletContext.getInitParameterNames()。 4)提供日志支持,如ServletContext.log(String msg)。

 

 

===================================JSP与Servlet的关系
1.jsp页面中form表单提交,由"action"指定跳转到某一个Servlet处理类,
该类继承HttpServlet类,提供doGet()或doPost()方法处理请求(Web.xml).
2.请求页面中获取请求的参数值:
String name = request.getParameter("name");
3.请求页面中设置传递参数:
request.setAttribute("name", name);
EL表达式获取:
${name};
4.请求处理流程:
请求login.jsp----转换成Servlet,同时将Servlet(web.xml中的url-pattern)中的名字映射转换成"login.jsp".
这样,看起来访问的就像是login.jsp一样.
5.跳转:
客户端跳转: response.sendRedirect("login.jsp");
服务器跳转: request.getRequestDispatcher("/result.jsp");  或者 forward(request, response);
这两个不能同时执行,否则报异常.
6.response提交commit后,不能再调用request.getSession(),会报null异常.

posted @ 2012-08-14 18:44  汤姆是一只猫  阅读(285)  评论(0编辑  收藏  举报