1、org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter准备和运行

2、

  <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

url-pattern约定熟成仅仅写/*,不是必需写*.action

3、

	<package name="default" namespace="/" extends="struts-default">
<action name= "hello">
<result>
/Hello.jsp
</result>
</action>
<span style="white-space:pre"> </span></package>

namespace="/"和訪问的路径意义相应; 

    /hello.action

    訪问了action。给了我们result的结果。

    默认的action能够省略。

4、关联structs源码和java docs

    jar文件右键代->properies->Java Source Attachment

    设置源代码

        D:/Program Files/struts-2.1.6/src/core/src/main/java

    javadoc 文档

        file:/D:/Program Files/struts-2.1.6/docs/struts2-core/apidocs/

    设置xml提示:

        a)window – preferences – 搜索 catalog – add

b)选择key type为URI

c)key: http://struts.apache.org/dtds/struts-2.0.dtd

d)location: 相应的dtd文件。位于struts-core包中,解压开。指定相应位置,如D:/Program Files/struts-2.1.6 \lib\struts2-core-2.1.6\struts-2.0.dtd

5、structs执行机制

    client -> url -> Http请求 -> Tomacat -> 查找相应的Webapplication -> web.xml -> filter doFilter方法->

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

->參考struct.xml -> 查找相应的namespace -> 查找相应的action -> 查找相应的result -> 反馈result -> 请求Forwad给目标文件 

	  <package name="default" namespace="/" extends="struts-default">
<action name="index">
<result>
/index.jsp
</result>
</action>
</package>

6、namespace决定了action的訪问路径,默觉得""。能够接收全部路径的action

    namespace能够写为/,或者/xxx,或者/xxx/yyy,

    相应的action訪问路径为/index.action,/xxx/index.action。或者/xxx/yyy/index.action.

    namespace最好也用模块来进行命名

   <constant name="struts.devMode" value="true" />
<package name="front" extends="struts-default" namespace="/front">
<action name="index">
<result>/Namespace.jsp</result>
</action>
</package> <package name="main" extends="struts-default" namespace="">
<action name="index">
<result>/Namespace.jsp</result>
</action>
</package>

struct.xml分析

        package作用:避免action的重名和冲突问题;

        namespace="/front",必须以斜杠开头,namespace最好也用模块来进行命名;

        不写namespace,等效于namespace = "",意味着仅仅要找到action,全都交给

        namespace处理。

                流程:先找相应路径下的action进行匹配。假设没有的话找namespace为空的action。

                假设还没有找到action则会报错;

7、 详细视图的返回能够由用户自定义的Action来决定;

    详细的手段是依据返回的字符串找到相应的配置项,来决定视图的内容;

	<constant name="struts.devMode" value="true" />
<package name="front" extends="struts-default" namespace="/">
<action name="index" class="com.struts2.front.action.Index">
<result name="success">
/ActionIntroduction.jsp
</result>
</action>
</package>

详细Action的实现能够是一个普通的java类。里面有public String execute方法就可以或者实现

    Action接口;

    package com.bjsxt.struts2.front.action;
import com.opensymphony.xwork2.Action;
public class IndexAction1 implements Action {
@Override
public String execute() {
return "success";
}
}

配置分析:

            <class="com.bjsxt.struts2.front.action.Index">

            struct.xml -> 找到相应的class -> 实例化对象 -> 运行相应的execute()方法

    运行过程:

        读到xml -> action是class -> 找到class对象(每次訪问必须new一个对象) -> 

        当不配置class的时候,默认的class是ActionSupport。

ActionSupport源代码

   public String execute() throws Exception {
return SUCCESS;}


最经常使用的是从ActionSupport继承。优点在于能够直接使用Struts2封装好的方法

    package com.struts2.front.action;
import com.opensymphony.xwork2.ActionSupport;
public class IndexAction2 extends ActionSupport {
@Override
public String execute() {
return "success";}
}

原因:ActionSupport内部已经为我们封装了很多能够直接调用的方法,在子类中能够直接使用。

以上是根据麻石兵云集了来自老师的教程。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

【web开发学习笔记】Structs2 Action学习笔记(一个)的更多相关文章

  1. 【web开发学习笔记】Structs2 Action学习笔记(两)

    action学习笔记2-大约action method讨论 Action运行的时候并不一定要运行execute方法,能够在配置文件里配置Action的时候用method=来指定运行哪个方法 也能够在u ...

  2. Java Web开发及应用软件方向的学习计划

    从接触计算机以来,一直抱有很浓厚的兴趣.我并不擅长与人交际,与机器对话可能更有性格方面的优势.虽然我很想做出一些改变,但总得需要时间和历练,暂时也只能这样了~ 一直很向往代码的神秘,在梦之站待过两年时 ...

  3. 搭建java web开发环境、使用eclipse编写第一个java web程序

    开发工具:eclipse-jee-juno-SR2-win32-x86_64(请自行官网下载) 使用服务器:apache-tomcat-7.0.35-windows-x64(请自行官网下载) 打开 e ...

  4. 超全的web开发工具和资源

    首页 新闻 产品 地图 动态 城市 帮助 论坛 关于 登录 注册 · 不忘初心,继续前进,环境云V2接口正式上线 · 环境云测点地图全新改版 · 祝福各位环境云用户中秋快乐!   平台信息 培训互动 ...

  5. 干货100+ 最超全的web开发工具和资源大集合

    干货100+ 最超全的web开发工具和资源大集合   作为Web开发者,这是好的时代,也是坏的时代.Web开发技术也在不断变化.虽然很令人兴奋,但是这也意味着Web开发人员需要要积极主动的学习新技术和 ...

  6. 快速使用node.js进行web开发

    首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这 ...

  7. 【python】 web开发入门

    进入Web开发 现在你完成了Python忍者训练,准备深入Ptyhon的Web开发,但现在的问题是有很多的框架,从中选择最好的框架非常困难,但从初学者的角度出发,Flask基本Web框架将非常适合We ...

  8. 想做web开发 就学JavaScript

    有一天我被问到,为了快速地在 web 开发工作上增加优势,应该学习什么语言.我的思绪回到了大学,那时候我用 Pascal.Fortran.C和汇编语言,不过那个时候有不同的目标. 鉴于当前的状况和趋势 ...

  9. 什么是 web 开发

    什么是 web 开发     这几天因为工作需要,了解了一下Web development 的技术路线,来源自     en.wikipedia.org/wiki/Web_development    ...

随机推荐

  1. DHCP的工作原理

    什么是dhcp?它是如何实现的? DHCP称为动态主机配置协议.DHCP服务允许工作站连接到网络并且自动获取一个IP地址.配置DHCP服务的服务器可以为每一个网络客户提供一个IP地址.子网掩码.缺省网 ...

  2. 更换Winform 皮肤(下)----完全GDI+绘制

    skin皮肤和DLL程序及文件:下载 链接:http://www.cnblogs.com/DebugLZQ/archive/2013/04/15/3021659.html

  3. BZOJ 1537: [POI2005]Aut- The Bus(dp + BIT)

    对y坐标离散化, 然后按x坐标排序, dp. 一个点(x, y), 设到达这个点接到的最多乘客数为t, 那么t可以用来更新y'>=y的所有点.用树状数组维护最大值. -------------- ...

  4. 使用SHA1、SHA2双证书进行微软数字签名

    微软是第一个宣布了SHA-1弃用计划,在2016年之后Windows和IE将不再信任SHA-1证书.正好我们公司的数字签名也到期了,索性就重新申请了sha256和sha1的新数字证书,用来给产品签名. ...

  5. 一步一步重写 CodeIgniter 框架 (2) —— 实现简单的路由功能

    在上一课中,我们实现了简单的根据 URI 执行某个类的某个方法.但是这种映射没有扩展性,对于一个成熟易用的框架肯定是行不通的.那么,我们可以让 框架的用户 通过自定义这种转换来控制,用 CI 的术语就 ...

  6. mysql 安装过程中的错误:my-template.ini could not be processed and written to XXX\my.ini.Error code-1

    安装mysql的过程中,在最后配置mysql时,提示错误:Configuration file tmeplate E:\编程\MySQL\my-template.ini could not be pr ...

  7. Android ListView 常见问题与使用总结

    一.机制 ListView机制 - 先运行getCount.然后运行getView. 假设getCount返回0,不运行getView Gallery convertView不会复用.每次都返回NUL ...

  8. 异步的两种写法: async 与 BeginInvoke

    现在要实现异步只要用关键字async/await就可以轻松实现,在此之前需要用到委托/回调等一堆东西. 对一下是对比写法: class Program { delegate string SendMe ...

  9. 简单区分`:before`与`::before`的区别

    简单区分:before与::before的区别 :hover我们都知道,称作伪类,英文名pseudo-class,而我们此处提到的:before以及:after也是伪类,属于css2的内容,在ie8下 ...

  10. 图示CCScrollView的相关概念

    (转载请注明原文地址:http://blog.csdn.net/while0/article/details/11527899) 见下图: 1)设置ScrollView的视口大小的函数是:setVie ...