目录

一、什么是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. Android通过Apk插件调起微信支付

    App对接微信调起微信支付需要在微信平台注册,鉴别的标识就是App的包名,所以将申请的包名单独打包成一个Apk文件,则在其他的App调起此Apk的时候同样可以起到调用微信支付的功能.这样就实现了调起微 ...

  2. Lucas,.net Web框架

    #LucasLucasLucasWeb框架是基于新的魔法糖思想创建的框架.本框架有两大特点.1.所有框架里最简单易学易配置的.2.所有框架里效率最快的.1.UrlRouter没有使用IOC注入及反射, ...

  3. Material Design学习-----CollapsingToolbarLayout

    博客引用(http://www.open-open.com/lib/view/open1438265746378.html) CollapsingToolbarLayout为我们提供了一个很方便的顶部 ...

  4. Python学习--23 第三方库

    本文将介绍python里常用的模块.如未特殊说明,所有示例均以python3.4为例: $ python -V Python 3.4.3 网络请求 urllib urllib提供了一系列用于操作URL ...

  5. Docker私有仓库--自签名方式

    为了能集中管理我们创建好的镜像,方便部署服务,我们会创建私有的Docker仓库.通读了一遍官方文档,Docker为了确保安全使用TLS,需要CA认证,认证时间长的要钱啊,免费过期时间太短,还是用自签名 ...

  6. apicloud中dialog使用方法

    var dialog = new auiDialog(); function openDialog(type){ switch (type) { case "text": dial ...

  7. js 各进制前缀 及 转换

    二进制前缀0b var a=0b11;//a=3 八进制前缀0 var a=011;//a=9 十进制不用前缀 十六进制前缀0x var a=0x11;//a=17 数字转各进制字符串用num.toS ...

  8. html基础知识2(有序无序列表,表格)2017-03-08

    摘要:php 基础知识2   重点:有序无序列表:<a>标签:<table>标签  内容容器 1.段落标签 <p></p> 注: 执行前后换行,并空一行 ...

  9. Single Number leetcode

    Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...

  10. 长连接 Socket.IO

    概念 说到长连接,对应的就是短连接了.下面先说明一下长连接和短连接的区别: 短连接与长连接 通俗来讲,浏览器和服务器每进行一次通信,就建立一次连接,任务结束就中断连接,即短连接.相反地,假如通信结束( ...