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的加强版,主要用于对用户请求进行预处理,也可以是HttpServletesponse进行后处理,是个典型的处理链。

Filter有如下几类:
用户授权的filter
日志filter
负责解码的filter
能改变xml内容的XSLT Filter等。
Filter可以拦截多个请求和响应,一个请求和相应也可被多个filter拦截。

开发filter的步骤
1、创建filter类
2、Web.xml中配置Filter.

创建Filter需实现javax.servlet.Filter接口,也有三个方法init()/destroy()./doFilter(ServletRequest request,ServletResponse response,FilterChain chain);
Chan.doFilter(request.response);该方法是用来区分对用户进行预处理和服务器响应进行后处理的分界线

3、用Annotation来配置filter
需导入javax.servlet.Annotation这个类
@WebFilter(filterName=”log”,urlPatterns={“/*”})

Servlet配置
@WebServlet(name=”login”,urlPatterns={“/login”})

2.13Listener介绍

用于监听不同Web事件。
使用listener只需两个步骤
1、定义Listener类 ,需实现ServletContextListener接口
2、通过Annotation或web.xml文件中配置Listener

Web事件如:Web应用被启动,被关闭,用户Session开始、用户Session结束、用户请求到达等,通常这些事件对用户来说是透明的。

常用的几个监听接口:
ServletContextListener:用于监听Web应用的启动和关闭
ServletContextAttributeListener:用于监听ServletContext范围(Application)内属性的改变
ServletRequestListener:用于监听用户请求
ServletRequestAttributeListener:用于监听request范围内的属性的改变
HttpSesionListenr:用于监听用户Session的开始和结束
HttpSesionAttributeListener:......

2.14 JSP 2的特性

直接配置JSP属性---在web.xml文件中
表达式语言
简化的自定义标签API
Tag文件语法


表达式语言EL:是一种简化的数据访问方式。使用EL可以方便地访问JSP隐含对象和JavaBeans组件。
表达式语言格式:${expression}
1、支持算术运算符和逻辑运算符
2、表达式语言的内置对象包含11个
PageContext:与JSP的pageContext相同
pageScore:用于获取page范围的属性
requestScore:
sessionScore:
applicationScore:
param:用于获取请求的参数值
paramValues:
header:用于获取请求头的属性值
headValues:
initParam:获取Web应用的初始化参数
cookie:获取制定的cookie值

内置对象取值格式如:${内置对象名[‘属性名’]}  或者${内置对象名.属性名}




学习笔记..................

猜你喜欢

转载自haiors.iteye.com/blog/1603831