admin管理员组文章数量:1794759
Struts,JSP和XML解析三个问题
1.struts的结构体系,每个结构的简介
MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。MVC的工作原理,如下图所示:
Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的体系结构与工作原理如下图所示:
从图中我们可以知道,Struts的体系结构包括模型(Model),视图(View)和控制器(Controller)三部分。
下面让我们从MVC角度来看看struts的体系结构与工作原理:
① 模型(Model)
在Struts的体系结构中,模型分为两个部分:系统中的内部状态和可以改变状态的操作(事务逻辑)。内部状态通常由一组Actionform Bean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买商品的信息,可能还有checkOut()方法来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很合适。建议用户将事务逻辑与Action类所扮演的角色分开。
②视图(View)
视图主要有JSP建立,struts包含扩展自定义标签库(TagLib),可以简化创建完全国际化用户界面的过程。目前的标签库包括:Bean Tags、HTML tags、Logic Tags、Nested Tags以及Template Tags等。
③控制器(Controller)
在struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。对于业务逻辑的操作则主要有Action、ActionMapping、ActionForward这几个组件协调完成的,其中Action扮演了真正的业务逻辑的实现者,ActionMapping与ActionForward则指定了不同业务逻辑或流程的运行方向。struts-config.xml文件配置控制器。
Struts体系结构中的组件
上图显示了ActionServlet(Controller)、Actionform(form State)和Action(Model Wrapper)之间的最简关系。
体系结构中所使用的组件如下表:
ActionServlet 控制器
ActionClass 包含事务逻辑
Actionform 显示模块数据
ActionMapping 帮助控制器将请求映射到操作
ActionForward 用来指示操作转移的对象
ActionError 用来存储和回收错误
Struts标记库 可以减轻开发显示层次的工作
2.jsp有几个内置对象,简要介绍它们的功能:
内置对象特点:
1. 由JSP规范提供,不用编写者实例化。
2. 通过Web容器实现和管理
3. 所有JSP页面均可使用
4. 只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)
常用内置对象:
1. 输出输入对象:request对象、response对象、out对象
2. 通信控制对象:pageContext对象、session对象、application对象
3. Servlet对象:page对象、config对象
4. 错误处理对象:exception对象
对象常用方法说明:
1.out对象(数据流 javax.servlet.jsp.jspWriter)
方法名 | 说明 |
print或println | 输出数据 |
newLine | 输出换行字符 |
flush | 输出缓冲区数据 |
close | 关闭输出流 |
clear | 清除缓冲区中数据,但不输出到客户端 |
clearBuffer | 清除缓冲区中数据,输出到客户端 |
getBufferSize | 获得缓冲区大小 |
getRemaining | 获得缓冲区中没有被占用的空间 |
isAutoFlush | 是否为自动输出 |
2.request对象(请求信息 javax.servlet.http.HttpServletrequest)
方法名 | 说明 |
isUserInRole | 判断认证后的用户是否属于某一成员组 |
getAttribute | 获取指定属性的值,如该属性值不存在返回Null |
getAttributeNames | 获取所有属性名的集合 |
getCookies | 获取所有Cookie对象 |
getCharacterEncoding | 获取请求的字符编码方式 |
getContentLength | 返回请求正文的长度,如不确定返回-1 |
getHeader | 获取指定名字报头值 |
getHeaders | 获取指定名字报头的所有值,一个枚举 |
getHeaderNames | 获取所有报头的名字,一个枚举 |
getInputStream | 返回请求输入流,获取请求中的数据 |
getMethod | 获取客户端向服务器端传送数据的方法 |
getParameter | 获取指定名字参数值 |
getParameterNames | 获取所有参数的名字,一个枚举 |
getParameterValues | 获取指定名字参数的所有值 |
getProtocol | 获取客户端向服务器端传送数据的协议名称 |
getQueryString | 获取以get方法向服务器传送的查询字符串 |
getRequestURI | 获取发出请求字符串的客户端地址 |
getRemoteAddr | 获取客户端的IP地址 |
getRemoteHost | 获取客户端的名字 |
getSession | 获取和请求相关的会话 |
getServerName | 获取服务器的名字 |
getServerPath | 获取客户端请求文件的路径 |
getServerPort | 获取服务器的端口号 |
removeAttribute | 删除请求中的一个属性 |
setAttribute | 设置指定名字参数值 |
3.response对象(响应 javax.servlet.http.HttpServletResponse)
方法名 | 说明 |
addCookie | 添加一个Cookie对象 |
addHeader | 添加Http文件指定名字头信息 |
containsHeader | 判断指定名字Http文件头信息是否存在 |
encodeURL | 使用sessionid封装URL |
flushBuffer | 强制把当前缓冲区内容发送到客户端 |
getBufferSize | 返回缓冲区大小 |
getOutputStream | 返回到客户端的输出流对象 |
sendError | 向客户端发送错误信息 |
sendRedirect | 把响应发送到另一个位置进行处理 |
setContentType | 设置响应的MIME类型 |
setHeader | 设置指定名字的Http文件头信息 |
4.session对象(会话 javax.servlet.http.HttpSession)
方法名 | 说明 |
getAttribute | 获取指定名字的属性 |
getAttributeNames | 获取session中全部属性名字,一个枚举 |
getCreationTime | 返回session的创建时间 |
getId | 获取会话标识符 |
getLastAccessedTime | 返回最后发送请求的时间 |
getMaxInactiveInterval | 返回session对象的生存时间单位千分之一秒 |
invalidate | 销毁session对象 |
isNew | 每个请求是否会产生新的session对象 |
removeAttribute | 删除指定名字的属性 |
setAttribute | 设定指定名字的属性值 |
5.pageContext对象(页面上下文 javax.servlet.jsp.PageContext)
方法名 | 说明 |
forward | 重定向到另一页面或Servlet组件 |
getAttribute | 获取某范围中指定名字的属性值 |
findAttribute | 按范围搜索指定名字的属性 |
removeAttribute | 删除某范围中指定名字的属性 |
setAttribute | 设定某范围中指定名字的属性值 |
getException | 返回当前异常对象 |
getRequest | 返回当前请求对象 |
getResponse | 返回当前响应对象 |
getServletConfig | 返回当前页面的ServletConfig对象 |
getServletContext | 返回所有页面共享的ServletContext对象 |
getSession | 返回当前页面的会话对象 |
6.application对象(应用程序 javax.servlet.ServletContext)
方法名 | 说明 |
getAttribute | 获取应用对象中指定名字的属性值 |
getAttributeNames | 获取应用对象中所有属性的名字,一个枚举 |
getInitParameter | 返回应用对象中指定名字的初始参数值 |
getServletInfo | 返回Servlet编译器中当前版本信息 |
setAttribute | 设置应用对象中指定名字的属性值 |
7.config对象(Servlet的配置信息 javax.servlet.ServletConfig)
方法名 | 说明 |
getServletContext | 返回所执行的Servlet的环境对象 |
getServletName | 返回所执行的Servlet的名字 |
getInitParameter | 返回指定名字的初始参数值 |
getInitParameterNames | 返回该JSP中所有的初始参数名,一个枚举 |
8.page对象(当前JSP的实例,java.lang.object)
它代表JSP被编译成Servlet,可以使用它来调用Servlet类中所定义的方法
9.exception对象(运行时的异常,java.lang.Throwable)
被调用的错误页面的结果,只有在错误页面中才可使用,
即在页面指令中设置:<%@page isErrorPage=“true”%>
Request(Javax.servlet.ServletRequest)它包含了有关浏览器请求的信息.通过该对象可以获得请求中的头信息、Cookie和请求参数。
Response(Javax.servlet.ServletResponse)作为JSP页面处理结果返回给用户的响应存储在该对象中。并提供了设置响应内容、响应头以及重定向的方法(如cookies,头信息等)
Out(Javax.servlet.jsp.JspWriter)用于将内容写入JSP页面实例的输出流中,提供了几个方法使你能用于向浏览器回送输出结果。
pageContext(Javax.servlet.jsp.PageContext)描述了当前JSP页面的运行环境。可以返回JSP页面的其他隐式对象及其属性的访问,另外,它还实现将控制权从当前页面传输至其他页面的方法。
Session(javax.servlet.http.HttpSession)会话对象存储有关此会话的信息,也可以将属性赋给一个会话,每个属性都有名称和值。会话对象主要用于存储和检索属性值。
Application(javax.servle.ServletContext)存储了运行JSP页面的servlet以及在同一应用程序中的任何Web组件的上下文信息。
Page(Java.lang.Object)表示当前JSP页面的servlet实例
Config(javax.servlet.ServletConfig)该对象用于存取servlet实例的初始化参数。
Exception(Javax.lang.Throwable)在某个页面抛出异常时,将转发至JSP错误页面,提供此对象是为了在JSP中处理错误。只有在错误页面中才可使用<%@page isErrorPage=“true”%>
Jsp内置对象 | 功能 | 主要方法 |
out | 向客户端输出数据 | print() println() flush() clear() isAutoFlush() getBufferSize() close() ………… |
request | 向客户端请求数据 | getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() ………….. |
response | 封装了jsp产生的响应,然后被发送到客户端以响应客户的请求 | addCookie() sendRedirect() setContentType() flushBuffer() getBufferSize() getOutputStream() sendError() containsHeader()…………… |
application |
|
|
config | 表示Servlet的配置,当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet | getServletContext() getServletName() getInitParameter() getInitParameterNames()…………… |
page | Jsp实现类的实例,它是jsp本身,通过这个可以对它进行访问 | flush()……… |
pagecontext | 为JSP页面包装页面的上下文。管理对属于JSP中特殊可见部分中己经命名对象的该问 | forward() getAttribute() getException() getRequest() getResponse() getServletConfig() getSession() getServletContext() setAttribute() removeAttribute() findAttribute() …………… |
session | 用来保存每个用户的信息,以便跟踪每个用户的操作状态 | getAttribute() getId() getAttributeNames() getCreateTime() getMaxInactiveInterval() invalidate() isNew() |
exception | 反映运行的异常 | getMessage()…………
|
本文标签: StrutsJSP和XML解析三个问题
版权声明:本文标题:Struts,JSP和XML解析三个问题 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1693272518a254353.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论