jsp总结

[b]一、jsp简介[/b]

1.jsp页面构成
静态内容(html)、指令(<%@page...)、表达式(<%=***%>)、脚本块(<%java代买块%>)、声明<%!%>、动作<jsp:动作名***/>、注释<%--注释部分--%>。

2.jsp 执行过程
客户端发出请求
------------>web容器将jsp转译成Servlet的源代码
------------>web容器将产生的源代码经过编译
------------>web容器加载编译后的代码并执行
------------>把执行结果响应至客户端
jsp实质就是一个servlet,转化和编译后,会创建一个servlet。此时开始servlet的生命周期。在servlet的生命周期中,jsp引擎(web容器)会加载和创建servlet类的实例。调用jspInit方法以初始化servlet类。jsp引擎调用jspService方法,并将请求和响应对象传递给jspService方法去执行并把结果返回给客户端。


3.jsp的优点
内容生成与表示相分离、强调可重用组件(如javabean)、简化页面开发

[b]二、jsp脚本和指令的使用[/b]

1.jsp脚本元素(表达式、脚本块块(Scriptlet)、声明)前面已经说过

2.jsp指令(page指令、include指令、taglib指令)
其中page指令主要用于指定页面的属性,用法包括如下
language、import、errorPage、isErrorPage、buffer
include指令主要是<%@include file=url %>
注:作用是在运行时将html或jsp文件页面嵌入到另外一个jsp页面,且include只支持file属性,url应当在编译时已知。

taglib主要用于将标签库描述符文件(TLD)引入到该页面中,并设置前缀,在页面中利用前缀去使用标签库描述符文件中的标签。


[b]三、jsp隐式对象(略)[/b]

注:response.sendRedirect(url)

[b]四、javaBean和jsp中的标准动作[/b]

javaBean主要是get和set方法

jsp标准动作包括
<jsp:useBean id="bean的引用名" class="bean类路径" scope="Bean范围"/>

<jsp:serProperty name="bean的引用名" property="属性名" value="value" param="param" />

<jsp:getProperty name="bean的引用名" property="属性名" />

<jsp:forward="url"/>用于请求转发:地址栏不变

<jsp:include page="url" flush="true" />
或带参数
<jsp:include page="url" flush="true" >
<jsp:param name="paramName" value="paramValue"/>
</jsp:include>

[b]五、jsp表达式语言[/b]1.EL表达式:${name}
其中EL表达式可以用于一下几种
静态文本、动态内容、读取javaBean
禁用el表达式:isELIgnored=true
.和[]来获取变量的值


2.EL隐式对象
pageContext,request,param,paramValues,
pageScope,requestScope,sessionScope,applicationScope

3.运算符
!或 not
empry
*
/或div
+
-
<或lt
>或gt
<=或le
>=或ge
==或eq
!=或ne
&&或and
|| 或or
num1?num2:result

[b]六、自定义标签(略)[/b]

[b]七、jsp标准标签库[/b]

1.jstl
核心标签库(通用标签、条件标签、迭代标签)
I18N与格式化标签库
SQL标签库
XML标签库

[b]八、过滤器[/b]


1.作用

授权请求、加密解密、修改请求标题和数据、修改响应标题和数据

2.响应过程

用户<------------------>过滤器<--------------->web资源(Servlet或jsp)

3.生命周期
过滤器必须实现javax.servlet.Filter接口以导入Filter接口中的所有方法。它还使用到另外2个接口FilterConfig 、FilterChain
实例化-->初始化(使用FilterConfig对象作为init()参数)-->过滤(doFilter())-->销毁(destroy())


4.过滤器的定义和过滤器的映射

<filter>
<filter-name>MyFilter</filter-name>
<filter-class>package.MyFilter</filter-class>
<init-param>
<param-name>myname</param-name>
<param-value>jack</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>MyFilter</filter-name>
<filter-pattern>/*</filter-pattern>
</filter-mapping>

5.总结

filter使用户可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在response离开servlet时处理response.换种说法,filter其实是一个“servlet chaining“(servlet 链).一个filter
包括:   
1. 在servlet被调用之前截获;   
2. 在servlet被调用之前检查servlet request;   
3. 根据需要修改request头和request数据;   
4. 根据需要修改response头和response数据;   
5. 在servlet被调用之后截获.

每一个filter从doFilter()方法中得到当前的request及response.在这个方法里,可以进行任何的针对request及response的操作.(包括收集数据,包装数据等).filter调用chain.doFilter()方法把控制权交给下一个filter.一个filter在doFilter()方法中结束.如果一个filter想停止request处理而获得对response的完全的控制,那它可以不调用下一个filter.
该过滤器类的一个引用将传递给 FilterChain 对象,以允许过滤器把控制权传递给链中的下一个资源。FilterConfig对象将由容器提供给过滤器,以允许访问该过滤器的初始化数据。


[b]九、MVC设计模式[/b]

1.ModelI体系
JSP页面中可以非常容易地结合业务逻辑(jsp:useBean)、服务端处理过程(jsp:let)和HTML(),在JSP页面中同时实现显示,业务逻辑和流程控制,从而可以快速地完成应用开发。现在很多的Web应用就是由一组JSP页面构成的。这种以JSP为中心的开发模型我们可以称之为Model1。
jsp同时担负view和Controller角色

客户端<------(请求1/回应4)------->应用服务器(jsp<--2-->javaBean)<-----3----->数据库服务器

2.ModelII体系(MVC)

Model 2表示的是基于MVC模式的框架。MVC是Model-View-Controller的简写。“Model”代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),“View”是应用的表示面(由JSP页面产生),“Controller”是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。从而弥补了Model1的不足。
ModelII与ModelI不同的是将Servlet纳入了Controller角色

M是指数据模型,V是指用户界面,C则是控制器

MVC是一个架构模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。   

[b]视图  [/b] 

视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Adobe Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.   如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。   

[b]模型 [/b] 

模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。   

[b]控制器[/b]

控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器(例如:servlet)本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。   

现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

[b]MVC的优点[/b]
低耦合性、高重用性和可适用性、较低的生命周期成本、快速的部署、可维护性、有利于软件工程化管理、MVC将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶。
[b]MVC的缺点[/b]
测试难度
MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。


[b]Java开发Web Application有几种符合MVC设计模式的开发方式。[/b]   1:Jsp+Servlet+JavaBean(EJB)   
2:Jsp+JavaBean(Controller)+JavaBean(EJB)(Model)  
3:TDK(Turbine,Velocity...)
4:Xsp
5:Jsp+Struts+JavaBean(EJB)


[b]常见的MVC组件[/b]
Struts: Apache的,最流行的MVC组件
Struts2 :Apache用Struts 和 WebWork的组合出来的新产品,目前上升势头强劲   WebWork: 这个可是老牌的MVC组件,后来组合成了Struts2, 不过自身仍在发展   Spring MVC:SpringFramework自己整合自己Spring的优势推出的MVC组件,用户也不少
JSF: 这个是一个规范,Sun的和 Apache的都有各自的实现。用户量很大,被众多IDE支持。
Tapestry: 最彻底的MVC开发框架,丰富的组件资源,重用性很高。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值