您的位置:首页 > Web前端 > JavaScript

servlet jsp filter listener el表达式 tag file

2015-08-25 04:15 537 查看
二.jsp和Servlet

jsp servlet 是javaEE开发的两个基本成员

jsp servlet filter listener及自定义标签库是本章要讲的内容,他们必须在web应用中才能使用

web.xml文件是配置描述符

配置和管理 jsp servlet fileter listener 自定义标签库 jsp的属性 web首页等

1.1jsp的基本原理

jsp本质上是Servlet,分为两部分, 静态部分包括HTML的标签和静态内容

动态部分由java程序控制动态生成

JSP必须生成servlet才可以执行

每个Jsp页面第一次访问比较慢,因为要等待编译成servlet

jsp输送到客户端的是标准HTML页面

1.2.jsp的使用

<% %> jsp的声明

<% = 表达式%> jsp的输出

jsp的3个编译指令

page 该指令是针对当前页面的指令

include 包含另一个页面 <%@ include file=”demo.jsp”%>

taglib 自定义标签库导入

jsp的七个动态指令

jsp: forward 执行页面转向

jsp:param 传递参数,必须和其他支持参数的标签一起使用

jsp:include 用于动态引入一个jsp页面

jsp:plugin 用于下载一个javabean或applet到客户端执行

jsp:useBean 创建一个javabean实例

jsp:setProperty 设置javabean实例的属性值

jsp:getPrpperty 输出javabean实例的属性值

1)jsp:forward

<jsp:forward page=”relativeUrl |<% =表达式%> ”>

<jsp:param ...>

<jsp:forward />

对于请求参数 param可以通过 HttpServletRequest类的getParameterr()方法获得

2)jsp:include

使用 <%@include...%> 静态包含
简单的理解就是你可以认为 这两个页面代码是写在同一个页面里。

使用 <jsp:include...> 动态包含
当 向这个页面发出请求后。会转发到 include 的哪个页面去执行。 执行完了后又接着执行本页面余下的代码。

<jsp:useBean id=”javaBean的实例名” class=”实现类” scope=”page | request| session| applocation”>

<jsp: setProperty name= “” property=”” value=””>

<jsp:getProperty name= “” property=””>

jsp的9个内置对象

application :

config

exception

out代表jsp页面的输出流用于输出内容形成HTML

page

pageContext该对象表示jsp页面上下文,使用该对象可以访问页面上的共享数据包括page request session applocation

request

response

session 一次会话

PageContext

pageContext.getAttribute(String name) 取page范围的name属性

pageContext.getAttribute(String name ,int scope) scope的取值:

PageContext.PAGE_SCOPE

PageContext.REQUEST_SCOPE

PageContext.SESSION_SCOPE

PageContext.APLLOCATION_SCOPE

并且有相对应的setAttribute方法来设置相应的数据

并且PageContext对象通过get方法可以获得其他九个内置对象

如getSession()

getServletContext()//获得application对象

Request

string getParameter(String paramName)

Map getParameterMap()//获取参数名和参数值组成的map对象

String [] getParameterValues( Sting paramName)//获取请求参数名对应的值,当值有多个时,返回多个值

String getHeader(String name) //获取请求头的值

Enumeration getHeaderNames()获取请求头的名称

enumeration getHeaders(String name) 获取指定名称的请求头的多个值

可以代替jsp的动态指令,完成forward和include

getRequestDispatcher(“/a.jsp”).include( request,response);

getRequestDispatcher( “ /a.jsp”).forward(request,response)

Response

getOutputStream() //响应输出字节流

重定向 response.sendRedirect(“a.jsp”);

设置cookie

Cookie c= new Cookie(“username”,”name”);

c.setMaxAge(24*3600);

response.addCookie(c);

Session

Map map= new HashMap();

session.setAttribute(“map”,”map”);

Map map= (Map ) ession.getAttribute(“map”);

2.servlet

servlet是运行在服务器的程序,用来处理客户端的请求和响应,是个特殊的类,继承HttpServlet类,在javaee开发中servlet只是作为控制器

doGet()方法响应get请求

doPost()方法响应post请求

service() 处理请求和响应

init()初始化操作

destroy()销毁操作

servlet和jsp的区别

servlet没有内置对象,必须显式创建 servlet生成静态页面必须通过输出流逐行输出

2.1servlet配置

1)servlet3.0两种配置方法 :注解配置 和web.xml配置

注解配置 @WebServlet ( name=” servlet的名字” value| urlPatterns=” servlet要处理的url”)

在servlet上声明即可

2)web.xml方式配置

<servlet>

<servlet-name> servlet名字</servlet-name>

<servlet-class>servlet类</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name> servlet名字</servlet-name>

<url-pattern> /servlet映射的url</url-pattern>

</servlet-mapping>

2.2servlet和jsp的生命周期

servlet创建实例:在客户端第一次发送请求时候或者在web应用启动时(load-on-startup Servlet)

init初始化

处理请求和响应

销毁

配置load-on-startup的两种方式

@WebServlet( loadOnStartup=1)

或者

<servlet>

<load-on-startup>1</load-on-startup>

</servlet>

2.3配置servlet的参数

@WebServlet( initParams=”

@WebInitParam( name= “” value=””),

@WebInitParam( name= “” value=””),

” )

或者 <servlet>

<init-param>

<param-name></param-name>

<param-value></param-value>

</init-param >

</servlet>

要想获得参数 需要ServletConfig类的getInitParameter(“参数名”)方法

servletConfig类获得的是当前servlet的配置参数

servletContext类获得的是整个web应用的配置参数

比如数据库的链接信息可以配置里面,增加代码的可移植性

2,4jsp的自定义标签库

自定义标签库是为了取代丑陋的jsp脚本

jsp2开发自定义标签步骤

开发自定义标签处理类

建立一个*.tld文件

在jsp中使用自定义标签

自定义标签类继承一个父类SimpleTagSupport,重写doTag()方法,如果有属性,属性要有setter getter方法

在WEB-INF下创建tld文件,从tomcat例子中复制一个修改之

<%@ taglib uri=”” prefix=””%>

3.Filter

使用Filter的完整流程:Filter对用户请求进行预处理,并将请求交给servlet接收和响应请求,最后Filter对服务器的响应进行后处理

3.1创建Filter类

必须实现Filter接口

该接口定义有三个方法 init destroy doFilter( ServletRequest req,ServletResponse res, FilterChain chain)

3.2配置Filter

注解配置

@WebFilter( filterName=”” urlPattern| value=””)

或者web.xml

<filter></filter>

<filter-mapping><filter-mapping>

类似于servlet的配置

4.Listener

创建实现类

有很多监听器接口

例如:ServletContextListener 这个接口负责监听web应用的开启和关闭

,在开启和关闭时可以做一些动作

配置这个类

@WebListener()修饰listener实现类

或者使用web.xml

<listener>

<listener-class></listerner-class>

</listener>

5.EL表达式语言 expression laguage

el是一种简化的数据访问格式,可以方便的访问jsp的内置对象和javabean组件,避免使用jsp脚本

格式: ${ expression}

5.1支持算术运算符和逻辑运算符

例如${ (1==2)?2:5} 三目运算符

5.2表达式语言可以获取内置对象 共11个

pageContext

pageScope

requestScope

sessionScope

applicationScope

param //用于获取请求参数值

paramValues // 用于获取请求参数值,获得的是一个数组

header 用于获得请求头的参数值

headValues

initParam 用于获取web应用的初始化参数

cookie 用于获得指定的cookie值

例如 ${param[“name”] 等价 ${param.name}

${sessionScope[“user”]}

${cookie[“name”].value}

5.3表达式语言的自定义函数

类似于自定义标签库 编写函数处理类

使用标签库定义函数 tld

使用函数

6.Tag File

简化的自定义标签 不用写标签处理类和标签库文件

建立tag文件 tag file 代替标签处理类

在页面使用这个标签 需要先导入标签库<%@ taglib prefix=”” tagdir=”path”%>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: