在学习struts的时候,我们一定要掌握struts2的工作原理。

仅仅有当我们明白了在struts2框架的内部架构的实现过程。在配置整个struts 的框架时。能够非常好的进行逻辑上的配置。接下来我就先简单的解说下struts2的框架工作原理:

一、struts2的工作原理

1、client初始化一个指向Servlet容器(比如Tomcat)的请求;

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其它框架的集成非常有帮助,比如:SiteMesh Plugin);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否须要调用某个Action;

4、假设ActionMapper决定须要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。

5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到须要调用的Action类;

6、ActionProxy创建一个ActionInvocation的实例。

7、ActionInvocation实例使用命名模式来调用。在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8、一旦Action运行完成,ActionInvocation负责依据struts.xml中的配置找到相应的返回结果。

返回结果一般是(但不总是。也可能是另外的一个Action链)一个须要被表示的JSP或者FreeMarker的模版。在表示的过程中能够使用Struts2框架中继承的标签。在这个过程中须要涉及到ActionMapper。

二、部署一个struts2项目的一般步骤

1)在Myeclipse中创建一个web项目,并将struts2须要的jar包导入进项目中,例如以下图

2)在项目中的web.xml中进行配置struts2的框架,在web.xml中须要包括在<filter></filter>,在该节点下能够包括<filter-name>和<filter-mapin

<?

xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 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_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <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>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping> </web-app>

3)编写Action类

4)创建好了Action类中要对action进行配置struts.xml,注意该配置文件的位置要在src的根文件夹下

5)创建jsp的文件,进行測试

三、struts.xml的配置初探

先来看看struts的基本配置的大概情况

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts>
<package name="user" namespace="/" extends="struts-default">
<action name="*user" class="com.zzjmay.action.VaildateAction" method="{1}">
<result name="success">/success.jsp</result>
<result name="input">/{1}.jsp</result>
</action>
</package>
</struts>

从上面的代码中能够看出,xml中包括的再根节点下<struts></struts>下。在实际项目中的编写时,头部信息须要更改,那么我们给以在导入的jar中的jar包中进行获取

在struts-core-2.2.1.1.jar包下的struts2.0.dtd中进行获取。

四、struts.xml中的package的配置

看着前面的代码能够非常清晰的看到package的属性

属性有:

1.     name:逻辑上的包名

2.     namespace:命名空间。用来区分允许struts下的同样action(注意是一种逻辑上的的路径)

3.     extends: 继承某个配置文件

4.     abstract

详细使用过程中要注意。有与命名空间的命名,我们要在相应的过程中加上相应的命名空间的路径,比如:

<s:form
action="db/login.action"
method="post">

此代码说明的就是将会去调用db命名空间下的login相应的action

还须要注意的是:

<result>标签的下的是物理路径(绝对路径),即指在项目中的实际位置,代码例如以下

<result
name="success">/login/error.jsp</result>

五、struts.xml中的action的配置

六、struts.xml中的result的配置

对于action的配置我这里面仅仅是简单的概括,详细非常多细节性的东西我将专门写一篇博客,主要解说的动态的对action进行配置

属性有:

1.     name:Action类的映射名称

2.     class:Action类的完整路径

3.     method:默认使用的execute()方法,假设要自己定义触发方法,须要使用method自己定义

七、struts.xml配置过程中的注意信息

在实际开发的项目中,我们可能须要配置非常多的action,有时候为了便于我们的分类,我们一般须要创建不同包下的struts-user.xml文件,只是终于我们的这些配置都是要导入进我们的struts.xml文件里。使用的标签和jsp编程中<include>

struts.xml

<?

xml version="1.0" encoding="UTF-8"?

>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts>
<include file="struts-user.xml"></include>
</struts>

struts-user.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts>
<constant name="struts.ui.theme" value="simple"></constant>
<package name="user" namespace="/ss" extends="struts-default">
<action name="login" class="com.zzjmay.action.UserAction"
method="execude2">
<!--result下的路径是物理路径 -->
<result name="success">/login/success.jsp</result>
<result name="error">/login/error.jsp</result>
</action>
</package>
<!-- 包名不能同样 -->
<package name="user123" namespace="/db" extends="struts-default">
<action name="login" class="com.zzjmay.action.UserAction"
method="execude2">
<!--result下的路径是物理路径 -->
<result name="success">/login/error.jsp</result>
<result name="error">/login/success.jsp</result>
</action>
</package>
</struts>

Struts2的配置文件的配置struts.xml的更多相关文章

  1. Struts2(三) 配置struts.xml的提示(在不联网的情况下)

    开发过程中如果可以上网,struts.xml 会自动缓存dtd,提供提示功能.如果不能联网需要我们配置本地dtd,这样才能让struts2 产生提示 1.首先,在EClipse中依次点击工具栏中的wi ...

  2. 转载 Struts2的配置 struts.xml Action详解

    在学习struts的时候,我们一定要掌握struts2的工作原理.只有当我们明确了在struts2框架的内部架构的实现过程,在配置整个struts 的框架时,可以很好的进行逻辑上的配置.接下来我就先简 ...

  3. 1-1 struts2 基本配置 struts.xml配置文件详解

    详见http://www.cnblogs.com/dooor/p/5323716.html 一. struts2工作原理(网友总结,千遍一律) 1 客户端初始化一个指向Servlet容器(例如Tomc ...

  4. struts2——配置struts.xml文件

    在struts2框架中struts.xml是应当放到src的根目录,程序编译后会将struts.xml放到WEB-INF/classes目录下. Struts2在web.xml中的一般配置如下: &l ...

  5. 配置Struts.xml DTD文件报错

    报错信息为: The content of element type "struts" must match "((package|include|bean|  cons ...

  6. struts2 配置 struts.xml 提示

    1.这个提示通常是在 连网络的时候才可以看到 2.当没有网路的时候我们该如何配置呢? window -->preferences -->xml catelog -->user.... ...

  7. eclipse配置struts.xml自动提示

    a)window – preferences – xml - xml catalog –> add  b)选择key type为URI c)key: http://struts.apache.o ...

  8. Struts2配置文件复用代码【web.xml、struts.xml、常量配置】

    web.xml的分发器代码: <!-- 引入struts核心过滤器 --> <filter> <filter-name>struts2</filter-nam ...

  9. struts2:struts.xml配置文件详解

    1. 几个重要的元素 1.1 package元素 package元素用来配置包.在Struts2框架中,包是一个独立的单位,通过name属性来唯一标识包.还可以通过extends属性让一个包继承另一个 ...

随机推荐

  1. MFC小程序------01 代码管理器

    1.代码入库: 2.代码查找: 3.查看全部代码: 4.程序设置: 自己学习MFC写的一个小程序,当中还有很多功能还待完好,比方数据库的导入功能还没有写,但导出功能是能够用的,查找算法也不是非常好,还 ...

  2. onWindowFocusChanged重要作用 and Activity生命周期

    onWindowFocusChanged重要作用 Activity生命周期中,onStart, onResume, onCreate都不是真正visible的时间点,真正的visible时间点是onW ...

  3. 【BZOJ】【1089】【SCOI2003】严格n元树

    高精度/递推 Orz Hzwer…… 然而我想多了…… 理解以后感觉黄学长的递推好精妙啊 顺便学到了一份高精度的板子= =233 引用下题解: f[i]=f[i-1]^n+1 ans=f[d]-f[d ...

  4. C语言项目:学生成绩管理系统

    C语言项目:学生成绩管理系统    1.数据结构:学生信息:学号.姓名.年龄.性别.3课成绩    2.功能:   (1)增加学生记录    (2)  删除学生记录    (3)  查找学生信息(学号 ...

  5. vue-router各个属性的作用及用法

    vue-router是vue单页面开发的路由,就是决定页面跳转的! <router-link> 组件支持用户在具体有路由功能的应用中(点击)导航.通过to属性指定目标地址. Props 属 ...

  6. Sql Server的弱口令入侵测试以及防范

    我之所以要做这样的测试是因为这一切都是有背景的!!!被黑客黑的代价!!!伤心ing..... 背景: 测试: 物理机:Win7 虚拟机:xp 扫描工具(我想我最好不写扫描器的名字比较好): 密码之所以 ...

  7. Back Track 5 之 漏洞攻击 && 密码攻击 && Windows下渗透工具

    网络漏洞攻击工具 Metasploit 先msfupdate升级: 然后选择msfconsole: 接下来: set LHOST 本机IP地址 setLPORT setg PAYLOAD window ...

  8. 五条强化 SSH 安全的建议

    当你查看你的 SSH 服务日志,可能你会发现充斥着一些不怀好意的尝试性登录.这里有 5 条常规建议(和一些个别特殊策略)可以让你的 OpenSSH 会话更加安全. 强化密码登录 密码登录很方便,因为你 ...

  9. 设置网站expires和max-age属性

    转:http://www.zicheng.net/article/982022.htm 在使用百度站长工具测试网站优化建议时,在 设置静态内容缓存时间 栏目里,会提示 类似 FAILED - (未设置 ...

  10. [jQuery] $.map, $.each, detach() , $.getJSOIN()

    $.map function will return the modifies array. $.each function will not new a new array, the old val ...