Struts2之-用marven配置Struts2项目

什么是Strut2

1、Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型
由传统Struts1和WebWork两个经典框架发展而来

2、Strust2 核心功能
(1)允许POJO(Plain Old Java Objects)对象 作为Action
(2)Action的execute 方法不再与Servlet API耦合,更易测试
(3)支持更多视图技术(JSP、FreeMarker、Velocity)
(4)基于Spring AOP思想的拦截器机制,更易扩展
(5)更强大、更易用输入校验功能
(6)OGNL表达式语言、堆栈

3、什么是MVC
MVC:是一种思想,是一种模式,将软件分为 Model模型、View视图、Controller控制器
struts1 、webwork 、jsf 、SpringMVC 都是MVC

4.Strut1和Strut2什么关系
没有关系,Struts2 全新框架,引入WebWork很多技术和思想,Struts2 保留Struts1 类似开发流程

4、Struts2 内核 webwork
Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Navigation Language),IoC(Inversion of Control反转控制)容器等

marven项目使用Struts2

1、添加核心包
新建一个webapp的marven项目,在pom.xml中添加以下Strut2的核心依赖即可,其他依赖包也会导入进来

<dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.3.8</version>
</dependency>

《Struts2之-用marven配置Struts2项目》

2、添加struts2的配置文件
在web.xml中添加过strut2的滤器来使用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>

在marven项目的resources目录下新建一个struts.xml的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC  
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
    "http://struts.apache.org/dtds/struts-2.3.dtd">  
<struts>
     <!-- 所有匹配*.action的请求都由struts2处理 -->
      <constant name="struts.action.extension" value="action" />
      <!-- 是否启用开发模式 -->
      <constant name="struts.devMode" value="true" />
      <!-- struts配置文件改动后,是否重新加载 -->
      <constant name="struts.configuration.xml.reload" value="true" />
     <!-- 设置浏览器是否缓存静态内容 -->
     <constant name="struts.serve.static.browserCache" value="false" />
     <!-- 请求参数的编码方式 -->
     <constant name="struts.i18n.encoding" value="utf-8" />
     <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
    <constant name="struts.i18n.reload" value="true" />
     <!-- 文件上传最大值 -->
     <constant name="struts.multipart.maxSize" value="104857600" />
     <!-- 让struts2支持动态方法调用 -->
     <constant name="struts.enable.DynamicMethodInvocation" value="true" />
     <!-- Action名称中是否还是用斜线 -->
     <constant name="struts.enable.SlashesInActionNames" value="false" />
     <!-- 允许标签中使用表达式语法 -->
     <constant name="struts.tag.altSyntax" value="true" />
     <!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
     <constant name="struts.dispatcher.parametersWorkaround" value="false" />

     <package name="basePackage" extends="struts-default">
        <action name="first" class="action.HelloAction" method="test">
            <result name="success">/index.jsp</result>
        </action>
     </package>
</struts>

配置文件中给出了处理类的类名(action.HelloAction)和处理的方法(test),以及响应时需要的如何处理(/index.jsp)
意思是一个first的处理器调用的是类HelloAction的test方法,返回success时,跳转到index.jsp页面

method=”test”如果不配置的话,默认调用类的execute方法,没有的话就报错

3、处理类

/**
 * 
 */
package action;

/**
 * @author Administrator
 *
 */
public class HelloAction {
    public String test() throws Exception{
    System.out.println("这是一第一个action的测试方法");
    return "success";
    }

    public String execute() throws Exception{
    System.out.println("这是一第一个action的默认方法");
    return "success";
    }
}

4、返回页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<body>
<h2>Hello Strut2</h2>
</body>
</html>

请求处理器的后缀默认为.action,需要修改的话
方法1:在strut2.xml中配置

 <!-- 所有匹配*.action的请求都由struts2处理 -->
      <constant name="struts.action.extension" value="action,jsp,...." />

方法2:在struts.properties 文件中加入一行配置信息:

  struts.action.extension=action,jsp

方法3:在web.xml中添加init-param

<filter> 
<filter-name>struts2</filter-name> 
<filter-class> org.apache.struts2.dispatcher.FilterDispatcher 
</filter-class> 
<init-param> 
<param-name>struts.action.extension</param-name> 
<param-value>json</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>struts2</filter-name> <url-pattern>*.json</url-pattern> 
</filter-mapping>

5、浏览器测试
《Struts2之-用marven配置Struts2项目》

闲言碎语

这只是一个简单介绍struts2和简单使用的一个小例子,接下来我们就来仔细的研究研究strut2的功能和使用。

参考

浅析JSP Model1与Model2区别
Maven3路程(四)用Maven创建Struts2项目

一、创建基于Maven的Web项目

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注