日期:2014-05-16  浏览次数:20429 次

JSP、Servlet等------学习笔记
    JSP(Java Server Page)和Servlet是JavaEE规范的两个基本成员,他们是JavaWeb开发的重点知识,也是JavaEE开发的基础知识。JSP和Servlet本质是一样的,因此JSP最终必须编译成Servlet才能运行,或者说JSP指示生成Servlet的“草稿”文件。Html+JSP标签(or自定义标签)。
除JSP外,表现层技术还有FreeMaker/Velocity/Tapestry等
JavaEE6规范的应用服务器或支持Servlet3.0的Web服务器-----如Tomcat7.X

2.1 Web应用和web.xml文件
web.xml又称配置描述符,位于每个web应用的WEB-INF路径下,JavaWeb应用的绝大部分组件都通过web.xml文件来配置管理。另外Servlet3.0规范可通过Annotation来配置管理Web组件。
Web.xml配置什么呢???
有:配置JSP、配置和管理Servlet、配置和管理Listener、配置和管理Filter、配置标签库、配置JSP属性
除此之外还配置、管理如下:
配置和管理JAAS授权认证、配置和管理资源引用、Web应用首页

2.2 JSP的基本原理
JSP的内容包括两部分:静态部分+动态部分(动态生成)
<%@ page contentType=”text/html;charset=GBK” language=”Java” errorPage=””%>
x.jsp转换成Servlet文件后,servlet名字为x_jsp.java,该类主要包含如下三个方法,init():初始化JSP/Servlet的方法
destroy():销毁JSP/Servlet之前的方法。
Service():对用户请求生成响应的方法。

2.3JSP的注释
JSP注释<%--udhusfi--%>
Html注释<!—dhdfs?也是xml的注释
//单行注释

<%!
声明成员和方法              //会转换成Servlet对应的成员属性和方法
%>
2.4JSP的3个编译指令

JSP常见的三个编译指令:page、include、taglib
编译指令是通知JSP引擎的消息,他不直接生成输出。
格式:<%@ 编译指令名 属性名=”…..”%>

2.8JSP的7个动作指令

编译指令和动作指令不同,编译指令只是通知Servlet引擎处理信息,而动作指令只是运行时的动作。
编译指令在将JSP转换成Servlet时起作用。

JSP的主要7个动作指令:
Jsp:include   用于动态引入一个JSP页面
Jsp:forward    执行页面跳转,将请求的处理转发到下一个页面
Jsp:param    用于传递参数,必须与其它支持参数的标签一起使用
JSP:plugin     用于下载JavaBean或Appleat到客服端执行
JSP:useBean  创建一个JavaBean实例
Jsp:serProperty  设置JavaBean实例的属性值
Jsp:getProperty  输出JavaBean实例的属性值


2.9JSP脚本的9个内置对象

JSP脚本的9个内置对象都是Servlet API接口的实例,只是JSP规范对它们进行了默认初始化,由_jspService()方法来创建这些实例。

  Application:javax.servlet.ServletContext的实例,代表JSP所属的Web应用的本身
  Config:javax.ServletConfig的实例,代表JSP的配置信息
  Exception:java.lang.Throwable的实例,代表其他页面中的异常和错误,只有当编译指令page的isErrorPage属性为true时,该对象才使用。
  Out:javax.servlet.jsp.JspWriter的实例,该实力代表JSP页面的输出流,用于输出内容,形成html页面
  Page:代表页面本身,即Servlet的this
  PageContext:javax.servlet.jsp.PageContext的实例,代表JSP页面上下文,使用该对象可访问页面中的共享数据,常用的方法有getServletConfig()和 getServletContext()等
  Request:javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客服端的请求参数都被封装在该对象里边。
  Response:javax.servlet.http.HttpServletResponse的实例,代表服务器对客服端的响应。该对象常用于重定向,如sendRedirect(String)等,+getOutputStream();
  Session:javax.servlet.http.HttpSession的实例,该对象代表一次会话。

2.10 Servlet介绍

Servlet通常被称为服务端的小程序,是运行在服务端的程序,用于处理及相应客服端的请求。
Servlet是个特殊的类,这个Java类必须继承HttpServlet,每个Servlet可以响应客服端的请求,Servlett提供不同的方法来响应客服端请求:
doGet:响应客服端的get请求
doPost:
doPut:
doDelete:
HttpServlet还包括两个方法:init(ServletConfig config):创建Servlet实例时,调用该方法初始化Servlet资源。
Destroy(),销毁Servlet实例,自动调用该方法回收资源。

JSP和Servlet的区别:
1、Servle没有内置对象,原来JSP的内置对象都必须有程序显示创建
2、对于静态的html标签,Servlet都必须使用页面输出流逐行输出。


2.11  JSP2的自定义标签

自定义标签是一款非常优秀的表现层组件技术,通过使用自定义标签,可以封装复杂的功能。
开发标签的步骤:
1、开发自定义的标签处理类
2、建立一个*.tld文件,每个tld文件对应一个标签库,每个标签库可包含多个标签。
3、在JSP文件中使用自定义标签

○1
自定义标签类需继承一个父类:javax.servlet.jsp.target.SimpleTagSupport,要求:如果标签类包含属性,每个属性都应有对应的getter和setter方法,重写doTag()方法,这个方法负责在页面上输出内容。
○2
TLD是Tag Library Definition的缩写,即标签库定义,文件后缀是tld,每个tld文件对应一个标签库,一个标签库可包含对各标签。
○3
在JSP中确定制定的标签需要两点:
标签库URI:确定使用哪个标签库
标签名:确定使用那个标签

使用步骤:
1、 导入标签库
2、 <%@ taglib uri=”tagliburi” prefix=”me”%>
Prefix属性指定标签库前缀,即使用该前缀的标签将有次标签库处理。
<me:helloWorld/>


2.12 Filter介绍

Filter可以说是Servlet的加强版,主要用于对用户请求进行