目录

一、什么是Struts2

二、搭建Struts2的开发环境

三、Struts2的配置文件

四、MVC模式

一、什么是Struts2

     Struts2是一个非常优秀的MVC框架,由传统的Struts1和WebWork两个经典框架发展而来。

     Struts2有以下几个核心功能:

     (1) 允许POJO(Plain Old Java Objects)对象作为Action。

     (2) Action的execute方法不再与Servlet API耦合,更易测试。

     (3) 支持更多的视图技术(JSP、FreeMarker、Velocity)。

     (4)基于Spring AOP思想的拦截器机制,更易扩展。

     (5)更强大、更易用输入校验功能。

 

二、搭建Struts2的开发环境

1.下载最新的包

     它的目录结构如下。

    

     apps: 包含了基于Struts2的示例应用。

     docs: 包含了Struts2相关文档及API文档。

       libs: 包含了Struts2框架和核心类库,及第三方插件类库。

       src: 包含了Struts2框架的全部源码。

 

2.复制核心jar包到工程中

    

 

3.配置核心过滤器

	<!-- 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>

 

4.创建struts.xml的配置文件放到src目录下

<?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> <!-- 开启开发模式 -->
<constant name="struts.devMode" value="true"></constant>
<package name="p1" extends="struts-default"> <!-- 配置一个动作 -->
<action name="sayHello" class="com.kiwi.action.HelloAction" method="sayHello">
<!-- 配置结果视图 -->
<result name="success">/success.jsp</result>
</action> </package> </struts>

 

注意:

       配置struts.xml无提示问题的解决

      (1)在struts2-core-2.3.7.jar中含有 struts-2.3.dtd,将其复制到硬盘任意位置 例如:G:\\struts-2.3.dtd。

      (2)myeclipse - window - preferences - 搜索xml catalog - Add,注意key的类型要选用url。

 

三、Struts2的配置文件

1.配置文件的加载顺序

Struts2框架按照如下顺序加载struts2配置

     default.properties 该文件保存在 struts2-core-2.3.7.jar 中 org.apache.struts2包里面。

     struts-default.xml 该文件保存在 struts2-core-2.3.7.jar。

     struts-plugin.xml 该文件保存在struts-Xxx-2.3.7.jar。

      struts.xml 该文件是web应用默认的struts配置文件。

      struts.properties 该文件是Struts的默认配置文件。

      web.xml 该文件是Web应用的配置文件。

如果多个文件配置了同一个struts2 常量,则后一个文件中配置的常量值会覆盖前面文件配置的常量值。

 

2.配置文件的内容标签

(1)package

     作用: 分模块开发。

     属性:

           name:  包的名称,唯一的。

           extends: 一般都需要直接或间接的一个叫做struts-default的包名,因为struts2的一些核心功能配置都在这里。

           abstract: 如果为true,说明是一个抽象包,让别人去继承,没有任何action子元素的包就可以定义为抽象包。

           namespace: 名称空间,一般以"/"开头,和action一起构成了用户的访问路径。

          

          

 

Action名称的搜索顺序

 

(2)action

     作用: 配置动作。

     属性:

           name: 动作的名称,要唯一。

           class: 动作的全类名,可以不指定,默认是 com.opensymphony.xwork2.ActionSupport。

           method: 执行的动作类的动作方法。可以不指定,默认值是execute。

 

(3)constant

     default.properties定义了struts2 框架的大量常量,开发者可以通过改变这些常量来满足应用的需求,修改struts2 的配置常量,可以通过以下三种方式配置。

     a: 配置src/struts.xml

        <constant name="struts.devMode" value="true"></constant>

     b: 配置src/struts.propertis

         struts.devMode=false

     c: 配置web.xml

	<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param>
<param-name>struts.devMode</param-name>
<param-value>false</param-value>
</init-param> </filter>

 

常见的constant

指定默认编码集,作用于HttpServletRequest的setCharacterEncoding方法 和freemarker 、velocity的输出

     <constant name="struts.i18n.encoding" value="UTF-8"/>

该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开

     <constant name="struts.action.extension" value="action"/>

设置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好关闭

     <constant name="struts.serve.static.browserCache" value="false"/>

当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开

     <constant name="struts.configuration.xml.reload" value="true"/>

开发模式下使用,这样可以打印出更详细的错误信息

     <constant name="struts.devMode" value="true" />

默认的视图主题

     <constant name="struts.ui.theme" value="simple" />

与spring集成时,指定由spring负责action对象的创建

     <constant name="struts.objectFactory" value="spring" />

该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false

    <constant name="struts.enable.DynamicMethodInvocation" value="false"/>

上传文件的大小限制

     <constant name="struts.multipart.maxSize" value=“10701096"/>

 

3.指定多个Struts配置文件

     在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过<include>元素指定多个配置文件:

<struts>
<include file="struts-part1.xml"/>
<include file="struts-part2.xml"/>
</struts>

 

四、MVC模式

1.概述

     MVC是一种架构型模式,它本是并不引入新的功能,只是指导我们改善应用程序的架构,使得应用程序的模型和视图相分离,从而得到更好的开发和维护效率。

     MVC模式中,应用程序被划分成模型、视图、控制器三个部分。其中模型部分包含了应用程序的业务逻辑和业务数据。视图部分封装了应用程序的输出形式,也就是页面。而控制器部分负责协调模型和视图,根据用户请求来选择要调用哪个模型来处理业务,以及最终由哪个视图为用户做出应答。

     MVC模式的这三个部分职责明确,而且相互分离,因此每个部分都可以独立改变而不影响其他部分,从而大大提高了应用的灵活性和重用性。

 

2.MVC各个部分的作用

模型(Model): 负责封装应用的状态,并实现应用的功能。通常又分为数据模型和业务逻辑模型。数据模型负责存放业务数据,比如订单信息、用户信息。业务逻辑模型包含了应用的业务操作,比如订单的添加或者修改。

视图(View): 将模型的内容展现给用户,用户可以通过视图请求模型进行更新。视图从模型获得要展示的数据,然后用自己的方式展现给用户,提供页面与用户进行交互。

控制器(Controller): 用来控制应用程序的流程和处理视图所发出的请求。当控制器接收到用户的请求时,会调用相应模型来实现用户请求的功能,然后选择相应的视图把模型更新后的数据展示给用户。

 

3.Struts2与MVC

     Struts2是一种基于MVC的Web应用框架。

    

 

1.控制器—FilterDispatcher

     用户请求首先会到达前端控制器FilterDiapatcher,FilterDiapatcher会根据用户提交的请求和struts.xml中的配置,选择合适的Action,然后让这个Action处理这个请求。

 

2.模型—Action

     在用户请求经过FilterDiapatcher之后,被分发到相应的Action,Action负责把用户请求中的参数组成合适的数据模型,并调用相应的业务逻辑进行真正的功能处理,然后获取下一个视图展示所需要的数据。

 

3.视图—Result

     视图结果把Action中获取到的数据展现给用户。

Struts2基础学习(一)—初识Struts2的更多相关文章

  1. Struts2基础学习2

    Struts2基础学习2 项目结构,测试页面与实体类 <%@ page language="java" contentType="text/html; charse ...

  2. Struts2基础学习总结

    引用自:http://www.cnblogs.com/jbelial/archive/2012/05/10/2486886.html Struts 2是在WebWork2基础发展而来的. 注意:str ...

  3. Struts2基础学习(五)—拦截器

    一.概述 1.初识拦截器      Interceptor 拦截器类似前面学过的过滤器,是可以在action执行前后执行的代码,是我们做Web开发经常用到的技术.比如:权限控制.日志等.我们也可以将多 ...

  4. struts2 基础学习

      Struts 2是在WebWork2基础发展而来的. 注意:struts 2和struts 1在代码风格上几乎不一样. Struts 2 相比Struts 1的优点: 1.在软件设计上Struts ...

  5. struts2基础学习--环境配置(*原创)

    1) -->下载开发包,网址:http://struts.apache.org/download.cgi 本文使用的是struts-2.5.2-all开发包 2) -->导入jar包,具体 ...

  6. Struts2基础学习(八)—Struts2防止表单重复提交

    一.原因      用户重复提交表单在某些场合将会造成非常严重的后果.例如,在使用信用卡进行在线支付的时候,如果服务器的响应速度太 慢,用户有可能会多次点击提交按钮,而这可能导致那张信用卡上的金额被消 ...

  7. Struts2基础学习(七)—值栈和OGNL

    目录: 一.值栈 二.OGNL表达式 一.值栈(ValueStack) 1.定义      ValueStack贯穿整个Acton的生命周期,每个Action类的对象实例都拥有一个ValueStack ...

  8. Struts2基础学习(六)—文件的上传和下载

    一.文件的上传 1.单个文件上传      Struts2使用拦截器完成了文件的上传,而且底层使用的也是FileUpload开源组件. 客户端注意事项: (1)method="post&qu ...

  9. Struts2基础学习(四)—类型转换器和数据校验

    一.自定义类型转换器 1.概述      Struts2提供了常规类型转换器,可以用于常用数据类型的转换,但如果目标类型是一个特殊类型,则需要自定义转换器.Struts2 类型转换器实际上都是基于OG ...

随机推荐

  1. cura-engine学习(1)

    cura-engine为开源3D打印软件cura的核心引擎代码,详细介绍参看github主页.现在学习的是一个简单版的https://github.com/repetier/CuraEngine,最新 ...

  2. Asp.Net 常用工具类之加密——对称加密DES算法(2)

    又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...

  3. JavaWeb:JSTL

    JSTL 说明 什么是JSTL? JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个定制的标签库的集合,用来解决像遍历map或者集合.条件测 ...

  4. div模拟table

    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>div模 ...

  5. Azure Messaging-ServiceBus Messaging消息队列技术系列4-复杂对象消息是否需要支持序列化和消息持久化

    在上一篇中,我们介绍了消息的顺序收发保证: Azure Messaging-ServiceBus Messaging消息队列技术系列3-消息顺序保证 在本文中我们主要介绍下复杂对象消息是否需要支持序列 ...

  6. JVM 体系结构

    JVM 是一种抽象的计算机,基于堆栈架构,它有自己的指令集和内存管理,是 Java 跨平台的依据,JVM解释执行字节码,或将字节码编译成本地代码执行.Java 虚拟机体系结构如下: Class Fil ...

  7. bat文件的一些小技巧

    bat文件的简介: bat文件是dos下的批处理文件.批处理文件是无格式的文本文件,它包含一条或多条命令.它的文件扩展名为 .bat 或 .cmd.在命令提示下键入批处理文件的名称,或者双击该批处理文 ...

  8. DOM操作和样式操作库的封装

    一.DOM常用方法和属性复习 以下粗略的罗列一下DOM的常用方法和属性,由于不是介绍DOM的基础内容,所以就不一一详细说明各个方法和属性了(学习DOM的封装的,一般都对基础DOM比较熟悉了). 1.1 ...

  9. 或许是介绍Android Studio使用Git最详细的文章

    欢迎访问我的个人博客转发请注明出处:http://www.wensibo.top/2017/03/12/GitOnAS/ 前言 本文较长,图片很多很多,流量党慎入 使用Git已经有一段时间了,但是之前 ...

  10. SEO-长尾词与分词技术

        长尾关键词与分词技术 长尾关键词:网站非目标关键词,能给网站带来流量的关键词. 例如:主关键词是成都网站建设 那么,跟成都网站建设相关的词,就叫做长尾关键词. 比如:成都网站建设哪里好?成都网 ...