以java平台为基础,专注项目管理、关注电子商务
揽住母亲的肩头,敬父亲一杯酒,对爱的女人说“我爱你”,和另外一个男人打架,不要打女人,有一个自己的孩子,年轻的时候去漂泊,有自己的一份事业.

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 阅读(563) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 

<2006年3月>
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(3)

随笔分类

随笔档案

友情链接

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜