Struts
学习随笔
Struts
是基于
MVC
设计模式的框架技术,现在的流行使用是
struts1.1 and struts1.2,
使用开发框架可以更好地提高开发效率。
Struts
的工作流程
1.
检索和用户请求匹配的
ActionMapping
实例,如果不存在,就返回用户请求中路径无效的信息。
2.
如果
ActionForm
实例不存在,就创建一个
ActionForm
对象,把客户提交的表单数据保存到
ActionForm
对象中。
3.
根据配置信息决定是否需要表单验证。如果需要验证,就调用
ActionForm
的
validate()
方法。
4.
如果
ActionForm
的
validate()
方法返回
null
或返回一个不包含
ActionMessage
的
ActionErrors
对象,就表示表单验证成功。如果返回一个或多个
ActionMessage
的
ActionErrors
对象,就表示表单验证失败,此时
ActionServlet
将直接把请求转发给包含用户提交表单的
jsp
组件。在这种情况下,不会创建
Action
对象和调用
Action
的
execute()
方法。
5.
ActionServlet
根据
ActionMapping
实例包含的映射信息决定将请求转发给哪个
Action
。如果相应的
Action
实例不存在,就先创建这个实例,然后调用
Action
的
execute()
方法。
6.
Action
的
execute()
方法返回一个
ActionForward
对象
,ActionServlet
再把客户请求转发给
ActionForward
对象指向的
jsp
组件
.
7.
ActionForward
对象指向的
jsp
组件生成动态网页,返回给客户。
如何用好
struts
框架技术呢?我们应该掌握如下的知识点:
Ø
MVC
的两种规范
Ø
配置文件
(struts-config.xml,web.xml)
Ø
ActionForm
类及其子类。
Ø
ActionForward
类
Ø
ActionServlet
类
Ø
Action
类
Ø
ActionMessages
类
Ø
国际化的问题
Ø
struts
验证技术
Ø
struts
标签
Ø
struts
扩展(略)
Ø
struts
与
hibernate
结合使用
逐个击破
MVC
的两种规范
两种
MVC
规范是
JSP Model1 and JSP Model2.
假设访问我们分这么几部分:浏览器,
WEB
服务器,应用服务器和数据库,两者不同的是
JSP Model1 WEB
服务器里面只有
JSP
页面和
JavaBean
,
JSP
既充当
V
,又充当
C
的角色。而
JSP Model2
的
WEB
服务器里有
JSP
、
JavaBean
和
Servlet
。
配置文件
(struts-config.xml,web.xml)
web.xml
文件。
配置
ActionServlet(<servlet>,<servlet-mapping>)
初始化
ActionServlet
的初始化参数
(<init-param>
也就是加载
struts-config.xml)
配置欢迎文件
(<welcome-file-list>)
配置错误处理
<error-page>
<error-code>404</error-code>
<location>/common/404.jsp</location>
</error-page>
配置
struts
标签库
(<tablib>)
struts-config.xml
配置数据库连接
(<data-sources>)
配置实体
(<form-beans>)
配置全局的异常处理
(<globel-exceptions>)
配置全局的转发关系
(<globel-forwards>)
配置映射
(<action-mapping>)
配置本地化文件
(<message-resources>)
实际是为了完成国际化。
配置插件
(<plug-in>)(
略
)
ActionForm
类及其子类。
DTO
数据传输对象,生命周期有两种
request and session,ActionForm
有
validate()
和
reset()
方法,主要说
reset()
方法,针对于
request
级的
ActionForm
类是没有很大含义地,因为它只会被调用一次,里面封装的数据也只是一次使用。主要是对于
session
级的作用是很大的,因为它涉及到多次用到。
DynaActionForm
是
ActionForm
子类
,
有
initialize()
方法
,
实现
DynaActionForm
的方法
:
<form-bean name=”loginForm” type=”org.apache.struts.action.DynaActionForm”>
<form-property initial=”alex” name=”userName” type=”java.lang.String”/>
</form-bean>
两种
ActionForm
做比较
.
初始化:
DynaActionForm
是通过实现化,然后覆盖其父类的方法
reset()
在这个方法中
调用
initilize()
进行初始化。
验证:
DynaActionForm
采用动态的验证方法,在(
struts
验证技术中会说到)
使用:
DynaActionForm
的所有属性保存在一个
Map
类中
,
通过
get()
,
set()
方法调用,
如:
String email=(String)form.get(“email”);
form.set(“email”,”cssseek@163.com”);
ActionForward
类
(
略
)
ActionServlet
类
属于
struts
控制器组件,包括:
ActionServlet,RequestProcessor and Action.
组件完成的任务:
接收用户请求、根据用户请求,调用合适的模型组件来执行相应的业务逻辑、获取业务逻辑执行结果、根据当前状态以及业务逻辑执行结果,选择合适的视图组件返回给用户。
Struts
采用
ActionServlet
和
RequestProcessor
组件进行集中控制,并采用
Action
组件来处理单项业务。
ActionServlet
类在应用生命周期中只创建实例一次。
Action
类
Action
类是用户请求和业务逻辑之间的桥梁。在
RequestProcessor
类预处理请求时,在创建了
Action
的实例后,就调用自身的
processActionPerform()
方法,该方法再调用
Action
类的
execute()
方法。
ActionMessages
类
ActionError
类是
ActionMessage
的子类,
struts1.2
放弃
ActionError.
国际化的问题
application_zh.properties
保存一些信息。
如
:error.loginFail=”
登录失败,请输入正确的用户名和密码
”
ActionMessages errors=new ActionMessages();
Errors.add(“loginfail”,new ActionMessage(“error.loginFail”));
关于乱码的问题:
1.
如果一些网站服务器例如
Tomcat 如果遇到中文乱码问题,可以修改conf目录下的server.xml
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100" debug="0"connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
URIENcoding 设成GBK或GB2312
2.
表单中或传递字符串:本来输入的汉字是正常的,但是提交后再显示出来是乱码,因为提交的一般是 ISO8859编码,所以显示的时候要转成GB2312编码: String S=new String(rs.getString("news").getBytes("gb2312"),"ISO8859_1");
//rs为待转换的字符串
然后使用S字符串的值就可以了
3.
有的服务器端的语言环境如果设成简体中文的也可以解决此类问题
4.
插入数据库中的字符是乱码
看看数据库中支持的是何种编码方式,用类似2中的方式作一下转换即可。
5.
总之,用jsp开发,碰到乱码,你得分析是读的时候发生乱码,还是写的时候发生乱码,用2中的转换,基本就能解决问题,有些时候写的时候做一次转换,例如:
String S=new String(rs.getString("news").getBytes("gb2312"),"ISO8859_1");
//读的时候在转换回来
String S=new String(rs.getString("news").getBytes("ISO8859_1"),"GB2312");
或者把ISO8859-1和GB2312 的位置换一下,自己多试试,就能找到解决问题的办法。
struts
验证技术
前面已讲在
ActionForm
中
validate()
验证。这里主要说在配置中验证技术。所需文件
validation.xml validator-rules.xml
优点:当相同的验证逻辑时,可提高代码的可重用性
struts
标签
struts-bean.tld struts-form.tld struts-html.tld struts-logic.tld struts-nested.tld struts-template.tld struts-tiles.tld
七个标签文件。
struts HTML
标签
基本的标记
struts Bean
标签
用于定义输入输出
javaBean
struts Login
标签
逻辑运算、循环遍历
struts Nested
标签
定义
javaBean
嵌套关系。
曹水生
2005
.
11
.
11
随笔
posted on 2006-03-22 20:29
cssseek 阅读(562)
评论(0) 编辑 收藏