【web开发学习笔记】Structs2 Action学习笔记(一个)
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学习笔记(一个)的更多相关文章
- 【web开发学习笔记】Structs2 Action学习笔记(两)
action学习笔记2-大约action method讨论 Action运行的时候并不一定要运行execute方法,能够在配置文件里配置Action的时候用method=来指定运行哪个方法 也能够在u ...
- Java Web开发及应用软件方向的学习计划
从接触计算机以来,一直抱有很浓厚的兴趣.我并不擅长与人交际,与机器对话可能更有性格方面的优势.虽然我很想做出一些改变,但总得需要时间和历练,暂时也只能这样了~ 一直很向往代码的神秘,在梦之站待过两年时 ...
- 搭建java web开发环境、使用eclipse编写第一个java web程序
开发工具:eclipse-jee-juno-SR2-win32-x86_64(请自行官网下载) 使用服务器:apache-tomcat-7.0.35-windows-x64(请自行官网下载) 打开 e ...
- 超全的web开发工具和资源
首页 新闻 产品 地图 动态 城市 帮助 论坛 关于 登录 注册 · 不忘初心,继续前进,环境云V2接口正式上线 · 环境云测点地图全新改版 · 祝福各位环境云用户中秋快乐! 平台信息 培训互动 ...
- 干货100+ 最超全的web开发工具和资源大集合
干货100+ 最超全的web开发工具和资源大集合 作为Web开发者,这是好的时代,也是坏的时代.Web开发技术也在不断变化.虽然很令人兴奋,但是这也意味着Web开发人员需要要积极主动的学习新技术和 ...
- 快速使用node.js进行web开发
首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这 ...
- 【python】 web开发入门
进入Web开发 现在你完成了Python忍者训练,准备深入Ptyhon的Web开发,但现在的问题是有很多的框架,从中选择最好的框架非常困难,但从初学者的角度出发,Flask基本Web框架将非常适合We ...
- 想做web开发 就学JavaScript
有一天我被问到,为了快速地在 web 开发工作上增加优势,应该学习什么语言.我的思绪回到了大学,那时候我用 Pascal.Fortran.C和汇编语言,不过那个时候有不同的目标. 鉴于当前的状况和趋势 ...
- 什么是 web 开发
什么是 web 开发 这几天因为工作需要,了解了一下Web development 的技术路线,来源自 en.wikipedia.org/wiki/Web_development ...
随机推荐
- Qt调用DLL
声明: 事先我已经自己动手写了一个简单的dll文件(myDLL.dll),C版接口的.并且用我前两篇有关DLL文章里面的方法,从dll中导出了导入库(.lib)文件,dll中有两个函数,原型如下: ...
- Mixtile LOFT
日前,国内电子原型类开发团队Mixtile(深圳致趣科技)新推出的 Mixtile LOFT套件,受到业内著名的海外科技网站CNXSoft的关注和报道. 如果要阅读相关的原文报道,可点击这里.下面摘录 ...
- STM32 + RT Thread OS 学习笔记[二]
串口通讯例程 通过上面的练习,对STM32项目开发有了一个直观印象,接下来尝试对串口RS232进行操作. 1. 目标需求: 开机打开串口1,侦听上位机(使用电脑串口测试软件)发送的信息,然后原样输 ...
- cloudflare的新waf,用Lua实现的
我们使用nginx贯穿了我们的网络,做前线web服务,代理,流量过滤.在某些情况下,我们已经扩充了nginx上我们自己的模块的核心C代码,但近期我们做了一个重大举措,与nginx结合使用lua 差点儿 ...
- NDK Android* 应用移植方法
概述 本指南用于帮助开发者将现有的基于 ARM* 的 NDK 应用移植到 x86.假设您已经拥有一个正常执行的应用,须要知道怎样可以高速让 x86 设备在 Android* Market 中找到您的应 ...
- Eclipse用法和技巧十九:eclipse修改workspace
工作中某一个项目的文件一般都在某一个路径,大多数人都习惯固定eclipse的workspace.不过偶尔也有点别的,比如做一个大项目中穿插着做些OJ,或者别的……这个时候当然可以选择在安装一个ecli ...
- BZOJ 2005: [Noi2010]能量采集( 数论 + 容斥原理 )
一个点(x, y)的能量损失为 (gcd(x, y) - 1) * 2 + 1 = gcd(x, y) * 2 - 1. 设g(i)为 gcd(x, y) = i ( 1 <= x <= ...
- POI读入excel文件到Java中
package Poi_Test; //导入java自带的包 import java.io.BufferedInputStream; import java.io.File; import java. ...
- JQuery - 去除所有空格
$('#submit').click(function () { //去除所有空格 String.prototype.NoSpace = function () { return this.repla ...
- Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)
Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ...