Java Web编程的主要组件技术——Struts入门

参考书籍:《J2EE开源编程精要15讲》

Struts是一个开源的Java Web框架,很好地实现了MVC设计模式。通过一个配置文件,把各个层面的应用组件联系起来,使组件在程序层面联系较少,耦合度较低。它定义了自己的标签库来实现是视图层,创建了一个内在的Servlet,叫ActionServlet,作为自己的控制器,建立一个叫Action类的对象实现业务逻辑。视图组件和业务逻辑组件的关系在struts-config.xml的配置文件中声明。当Struts应用程序启动时,它首先从struts-config.xml文件中读取信息。根据信息,控制器ActionServlet知道把视图中的请求转发给对应的业务逻辑组件处理,各组件之间没有代码上的联系。

Struts工作原理图:

核心组件

  控制器组件

    从客户端接受输入数据、调用业务逻辑操作、决定返回给客户何种视图等,包括:ActionServlet、Action、ActionMapping和ActionForward

    1) ActionServlet类

      把HTTP消息打包传送到框架中合适的处理器,非抽象类,可直接作为具体的控制器使用,必须在配置文件中详细配置

    2) Action类

      控制器组件的扩展,把用户动作与业务操作连接起来,使客户请求和业务模型松散耦合。收到请求后,调用execute()方法

    3) 配置文件struts-config.xml

      整个Struts应用程序的枢纽,声明各组件及其关系,主要包括<form-beans>、<action-mappings>等,用以对ActionForm、Action声明,

      如:

        (配置文件详解) http://blog.csdn.net/zzs0829/article/details/2695410

    4) ActionMapping

      动作映射(ActionMapping)封装了配置文件中action-mappings元素所包含的配置信息,ActionMapping对象包括了一个path属性,用来与外来

      请求URI匹配

    5) ActionForward

      表示一个目标,指在Action完成后,控制器要转交控制权的地方。此时不指定实际的JSP页面,而是以声明的方式把某个动作的转发映射与JSP页面

      相连,然后在整个应用程序中使用那个ActionForward对象。ActionForward对象封装了配置文件中forward元素所包含的信息。

  视图组件

    JSP页面、ActionForm、Struts标记、Java资源包等

    1) ActionForm

    用来在用户和业务层之间传输客户的输入数据,也叫Form Bean。Struts框架自动从请求中收集输入数据,交给一个使用Form Bean实例的Action对

    象,再交给业务层

    Struts框架处理每个请求对应的ActionForm对象步骤:

      1. 检查该项动作的相应映射,查看是否有某个ActionForm得到配置

      2. 如果配置了某个ActionForm,使用action元素中的name属性来查找Form Bean的配置信息

      3. 查看是否已经创建了ActionForm的一个实例

      4. 如果在适当的作用域内已经存在一个ActionForm实例,而且这个实例的类型正是这个新请求所需类型,则重用这个实例

      5. 否则,创建一个新实例,存储在适当的作用域(action元素的scope属性设置)

      6. 调用ActionForm实例的reset()方法

      7. 反复处理请求参数,如果参数名在ActionForm实例中具有对应的设置方法(setter method),则为它填上该参数的值

      8. 如果validate属性为true,则调用ActionForm实例的validate()方法,并返回所出现的任何错误

    简单的ActionForm例子:

 1 import javax.servlet.http.HttpServletRequest;
 2 import org.apache.struts.action.ActionErrors;
 3 import org.apache.struts.action.ActionForm;
 4 import org.apache.struts.action.ActionMapping;
 5
 6 public class loginActionForm extends ActionForm {
 7     private String username;
 8
 9     public String getUserName(){
10         return username;
11     }
12     public void setUsername(String username){
13         this.username=username;
14     }
15     public ActionErrors validate(ActionMapping mapping,
16             HttpServletRequest request) {
17         return null;
18     }
19     public void reset(ActionMapping mapping, HttpServletRequest request) {
20     }
21 }

    控制器将表单数据填入ActionForm实例之前,会先调用reset()方法,可将ActionForm性质重新设置为默认状态。当输出插入完毕后,控制器会调用

    validate()方法,对输入的数据进行验证,并向控制器返回任何错误。业务逻辑验证应在业务对象中完成,ActionForm中进行的验证只是表示层的验

    证。

      

    2) Struts标记库

      包括HTML标记库、Bean标记库、Logic标记库、Nested标记库、Template标记库和Tiles标记库

      要使用这些标记库,需在web.xml中注册这些标记库

      例如使用HTML标记库:

        <taglib>

          <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>

          <taglib-location>/WEB-INF/struts-html.tld</taglib-location>

        </taglib>

      并在JSP页面引入taglib元素:<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>,最后加入所需JAR包

    3) 使用消息资源包

      Java库中有一组类允许从Java类或属性文件(properties file)中读取消息资源。Struts也提供了一组类似的类,

      org.apache.struts.util.MessageResources

      例如 登入应用程序的资源包:

      #页面标题  

      title.login=Login

      #图像

      image.logo=image/logo.gif

      如何将title.Login插入到页面中:

      <title><bean:message key="title.login"/></title>

  模型组件

    JavaBeans或EJB

应用示例一:http://flforever1213.iteye.com/blog/941053

简单应用示例二:http://kuai.xunlei.com/d/Dgv0CU6inOj7VAQA24b

时间: 2024-10-26 04:24:30

Java Web编程的主要组件技术——Struts入门的相关文章

Java Web编程的主要组件技术——Struts核心组件

参考书籍:<J2EE开源编程精要15讲> Struts配置文件struts-config.xml Struts核心文件,可配置各种组件,包括Form Beans.Actions.ActionMappings.全局转发GlobalForwards.数据源DataSource及插件Plugins. 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts-config PUBLI

Java Web编程的主要组件技术——Struts的高级功能

参考书籍:<J2EE开源编程精要15讲> Struts对国际化的支持 "国际化"(I18N)指一个应用程序在运行时能根据客户端请求所来的国家/地区.语言的不同显示不同的用户界面.要用Struts实现国际化,所要用的各种语言版本的"标签"信息存放在不同的属性文件中,每个文件对应一个语言版本.文件名后缀必须为properties,前缀名由开发者确定,其中的语言种类字段必须是有效的ISO(International Standardization Organi

Java Web编程的主要组件技术——Hibernate入门

参考书籍:<J2EE开源编程精要15讲> Hibernate是对象/关系映射(ORM,Object/Relational Mapping)的解决方案,就是将Java对象与对象关系映射到关系型数据库中的表格与表格之间的关系.它是Java应用与关系数据库之间的桥梁,负责Java对象和关系数据之间的映射.Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API. Hibernate的体系结构 Hibernate通过配置文件( hibernate.prope

Java Web编程的主要组件技术——MVC设计模式

参考书籍:<J2EE开源编程精要15讲> MVC(Model View Controller),Model(模型)表示业务逻辑层,View(视图)代表表述层,Controller(控制)表示控制层. 在Java Web应用程序中, View部分一般用JSP和HTML构建.客户在View部分提交请求,在业务逻辑层处理后,把结果返回给View部分显示 Controller部分一般用Servlet组成,把用户的请求发给适当的业务逻辑组件处理:处理后又返回Controller,把结果转发给适当的Vie

Java Web编程的主要组件技术——JDBC

参考书籍:<J2EE开源编程精要15讲> JDBC(Java DataBase Connectivity)是Java Web应用程序开发的最主要API之一.当向数据库查询数据时,Java应用程序先调用JDBC API,然后JDBC API把查询语句提交给JDBC驱动器,JDBC驱动器把查询语句转化为特定数据库理解的形式,JDBC驱动器检索SQL查询的结果,并转化为Java应用程序使用的等价JDBC API类和接口. JDBC驱动器 JDBC软件包本身不能链接任何数据库,它只是一个API框架,需

Java Web编程的主要组件技术——Hibernate核心组件

参考书籍:<J2EE开源编程精要15讲> Hibernate配置文件 1) hibernate.cfg.xml 1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configuration PUBLIC 3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 4 "http://www.hibernate.org/dtd/

Java Web编程的主要组件技术——Servlet

参考书籍:<J2EE开源编程精要15讲> Servlet是可以处理客户端传来的HTTP请求,并返回响应,由服务器端调用执行,有一定编写规范的Java类. 例如: 1 package test; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 impo

JAVA web编程经验之: 一个请求一个事务

对于一个web请求,你会开启几个事务呢? 或许你没注意过吧. 又或许你不会对代码,性能要求太高,所以.... 一个请求一个事务, 因为一个事务往往和一个数据库连接关联, 如果开启了多个事务的话,也就意味着多个数据库连接, 性能不高吧? 前提 1.项目的代码结构分层如下: web层 ->  service层 -> infrastructure层(或DAO层) 2.所有事务都添加在 service层, 通过AOP(或其他类似的技术)实现 先看代码(一个Spring Controller 的调用代码

java web学习:三大组件 Listener基础

1.概念 事件源:被监听的对象 .监听器主要监听三个域对象 ,分别是 request  session  servletContext 监听器:用来监听某个对象状态变化的组件 响应行为:监听器监听的对象相应的状态发生变化时出发的动作. 2.Listener分类 在java web中,监听器的种类比较多,可以按照事件源(监听的对象)进行分类,也可以按照监听的动作进行分类.这里按照监听的动作进行分类. (1)监听域对象自身创建和销毁的监听器: ①ServletContextListener接口 监听