Struts学习----struts2架构详解

struts介绍

           Struts 2是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。lStruts 2以WebWork为核心,采用拦截器的机制,来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开。

           Struts和Webwork同为服务于Web的一种MVC框架。

           框架:就是半成品,框架已经完成一些通用功能。只需要实现与业务有关功能。

           框架的优势:

  • 不用侵入性比较高的Servlet.可以直接写普通java类作为处理请求逻辑的处理类.
  •  这样更易于测试.
  • 整合了一些之前需要手动来做的功能. 后台验证,表单回显,自动将表单参数封装,防止表单重复提交...
  •  如果不够用我们还可以扩展框架的功能.

struts核心功能

  • 在Action的实现方面,可以是一个普通的POJO
                 POJO(Plain Old Java Objects)。
  • 线程模型方面,Action是一个请求对应一个实例(新new一个对象),没有线程安全方面的问题。
  • Servlet依赖方面,Action不再依赖于Servlet API,有利于测试
                实现TDD(Test-Driven Development,测试驱动开发)。
  • 封装请求参数,可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。
  • 表达式语言方面,整合了OGNL
                OGNL(Object Graph NavigationLanguage)对象图形导航语言。
  • 绑定值到视图技术,使用"ValueStack"技术。
  • 类型转换,使用OGNL进行转换,可以更方便的使用。
  • 数据校验,支持重写validate方法或者使用XWork的验证框架。
  • 基于Spring AOP思想的拦截器机制,更易扩展

struts目录结构 

Struts学习----struts2架构详解

 struts的jar包介绍

Struts学习----struts2架构详解

 struts的架构图解

Struts学习----struts2架构详解

编写hello world 

  1. 导入jar包
  2. Action类(请求处理类)
    package cn.itcast.b_constant;
    import java.util.Arrays;
    import org.apache.struts2.ServletActionContext;
    import com.opensymphony.xwork2.ActionContext;
    
    public class Demo1Action {
    	public String execute(){			
    		return "success";
    	}
    }
    

     

  3. 核心配置文件:struts.xml
    <!-- 
    		http://localhost:8080/struts2-mini/HelloAction.action
    		http://localhost:8080/struts2-mini/aaa/HelloAction.action		
    		name:单纯的给包起一个名字,不要与其他包名重复
    		namespace: 为action访问加上一层或多层路径
    		extends: 继承一个其他包,目的是引入其他包的配置
    	 -->
    	<package name="hello" namespace="/aaa" extends="struts-default" >
    		<!-- 
    			name: 为我们的action类加上一个标识,在访问时填入name名称.就可以找到action
    			class: action完整类名
    			method:处理的方法
    		 -->
    		<action name="HelloAction" class="cn.itcast.action.HelloAction" method="execute" >
    			<!-- name:返回结果的标识,用于找到结果路径
    				 type: 可以决定跳转到结果的方式=> 转发,重定向.....
    			 -->
    			<result name="success" type="dispatcher" >/index.jsp</result>
    		</action>
    	</package>

     

  4. web.xml配置过滤器
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
    	xmlns="http://java.sun.com/xml/ns/javaee" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name></display-name>	
      <!-- 重要: 配置struts2的核心过滤器 -->
      <!-- 注意: 配置struts2过滤器要放置到其他过滤器后面.保证其他过滤器可以执行 -->
      <filter>
      		<filter-name>struts2</filter-name> 
            <filter- class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>
      <filter-mapping>
    	  <filter-name>struts2</filter-name>
    	  <url-pattern>/*</url-pattern>
      </filter-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

     

  5. 测试

 

 

 

上一篇:五大 JAVA Web 框架的优缺点对比,Spring MVC 领先


下一篇:分享java web 期末项目实验源码20套,自用学习非常不错!