从以上路径copy struts.xml文件。加入到自己的工程的src文件夹下面。 这样经过编译,会在WEB-INF/classes文件夹中生成struts.xml

从以上路径copy struts2需要的类库。放入自己工程的lib文件夹中。

打开web.xml  copy出对struts的配置。

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

注意点:

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

ng:下一代。 用的是2.1以后的struts2.       2.0是没有ng的。

示例的struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false" /><constant name="struts.devMode" value="false" /><!--true:开发者模式  开发模式下,修改struts的配置文件后不需要重启tomcat服务器即生效--><!--关键字extends的使用:我想在下面的这个配置包中使用上面那个包中的结果集,那么可以使用extends关键字继承上一个包    <package name="default" namespace="/" extends="struts-default"><!-- namespace 对应项目名称后的‘/’--><default-action-ref name="index" /><!-- 默认的action 配置文件中没有用户要访问的Aciton的时候,会调用<default-action-ref 所定义的Action --处理错误页面-->

<!-- 配置全局的结果集:当返回的result没有配置的时候会执行全局结果集的配置--><global-results><result name="error">/error.jsp</result></global-results>

<global-exception-mappings><exception-mapping exception="java.lang.Exception" result="error"/></global-exception-mappings>

<action name="index"><result type="redirectAction"><!-- result有四个type 四种配置分别代表了四种不同的跳转方式 --><!--type不写默认的为dispatcher:用服务器跳转跳转到结果页面--只能跳转到页面,不能跳转到Action --><!--客户端跳转的方式跳转到结果页面  只能跳转到页面,不能跳转到Action  type="redirect"--><!--客户端跳转的方式跳转到Action type="redirectAction--><!--服务器跳转的方式跳转到Action   type="chain" --><!--当要跳转的Action在别的包下的时候 应该这样写 写明actionName 和namespace--><param name="actionName">HelloWorld</param><param name="namespace">/example</param></result></action></package>

<include file="example.xml"/>

<!-- Add packages here -->

</struts>

关于namespace:

namespace决定了action的访问路径,默认为"",可以接收所有路径的actionnamespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,/xxx/index.action,或者/xxx/yyy/index.actionnamespace最好也用模块来进行命名

struts1 和struts2的重要区别:

在struts1中进行多次访问的时候用到的是同一个Action对象。而struts2则是每一次访问都会创建一个Action对象,所以struts2不会有线程安全问题的发生

及其简单的action:

<constant name="struts.devMode" value="true" /><package name="default" namespace="/" extends="struts-default"><action name="hell"><result>                /Hello.jsp</result></action></package>

<result>标签如果没有指定name属性默认返回值为success

路径问题:

struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse经常用的,指定basePath
<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

<base href="<%=basePath%>" />

<a href="index.jsp">index.jsp</a>

所以再写连接的时候就可以按照namespace的方式写了。
request.getContextPath()得到项目的名字,一般用来解决路径问题 如果项目为根目录,则得到一个"",即空的字条串。request.getscheme()返回的协议名称.默认是http request.getServerName()就是获取你的网站的域名,如果是在本地的话就是localhostrequest.getServerPort()获取服务的端口号  

PS:struts.xml不自动提示的解决办法: window--perferences-XML catalog---add---keyType="URI"  key="*.dtd"


转载于:https://www.cnblogs.com/bukudekong/archive/2012/04/08/2437296.html

struts2学习 - action - 1相关推荐

  1. struts2学习 - action -3 动态方法调用 DMI

    Action执行的时候并不一定要执行execute方法 可以在配置文件中配置Action的时候用method=来指定执行哪个方法 也可以在url地址中动态指定(动态方法调用DMI)(推荐)   配置文 ...

  2. Struts2学习总结三

    Struts2框架OGNL与文件上传以及防止表单重复提交 Struts2学习总结三 1.OGNL表达式 1.1.什么是OGNL. 1.2.OGNL的3个符号. 1.2.1.#符号 1.2.1.1.访问 ...

  3. Struts2学习总结二

    Struts2框架学习 Struts2学习总结二 1.请求封装参数 1.1.动作类作为实体模型 1.1.1.创建UserAction类 1.1.2.创建struts.xml并编写 1.1.3.编写we ...

  4. SpringAop对struts2的Action设置切面织入时报错java.lang.NoSuchMethodException

    学习springAop,尝试对struts2的Action层使用Aop切面实现日志的打印. 执行出现报错:java.lang.NoSuchMethodException. 查阅资料解决办法:sprin ...

  5. Struts2学习笔记(一)--入门常见配置

     Struts2框架的学习路线 l 第一天:Struts2的概述.Struts2的入门.Struts2常见的配置.Struts2的Action的编写 l 第二天:Struts2的数据的封装.结果页面配 ...

  6. Struts2学习总结(完整版)

    Struts2学习总结(完整版) 一.搭建struts2环境 1.jar包的导入 主要是到 解压其中的一个工程,得到里面lib下包含的jar包 把这里的所有的jar包拷贝到项目的 WEB-INF目录下 ...

  7. Struts2中Action的属性接收参数

    Struts2中Action的属性接收参数,有三种传递并接收参数的方式,第一种是在Action添加成员属性接收参数,第二种是域模型,就是利用对象域来进行传递和接收参数,第三种是ModelDriven接 ...

  8. Struts2学习笔记(八) 拦截器(Interceptor)(上)

    什么是拦截器(Interceptor) 拦截器是struts2框架最重要的特性之一.它可以让你在Action 方法执行前后(Result执行之后)进行一些功能处理.在前面学习Action和学习Resu ...

  9. Struts2学习笔记(六) 结果(Result)(上)

    大多数情况下我们的用例可以被分成两个部分.一是我们需要改变和查询应用程序的状态,而是需要呈现和更新应用程序的视图.在Struts2中Action管理应用程序的状态,Result Type管理视图. R ...

最新文章

  1. 生产系统服务器是啥意思,生产系统服务器主机名怎么看
  2. Vert.x MySQLClient体验
  3. WAP调用微信支付https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1
  4. Python 实现窗函数
  5. Word解析之Word内部结构
  6. 当面试官说“你还有什么问题想问的”,你该如何回答?
  7. 职称计算机萧山考点地址,杭州各科目考点一览表(地址+考试时间+电话)
  8. 《Person Re-identification:Past, Present and Future》论文笔记
  9. 什么是cert文件?
  10. 设计师都在用的6个免费设计素材网站~
  11. pythonopencv人脸识别考勤_Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(一)...
  12. ubuntu16.04安装ROS Kinetic(保姆式安装)
  13. Android 适配暗黑模式
  14. Electron-vue开发实战 - 文件下载及进度显示
  15. 书评《HTTP权威指南》
  16. Pr 入门教程:了解时间轴面板
  17. 云管理服务AWS Organizations正式在AWS中国区域上线
  18. Mask Rcnn tensorflow(keras前端)模型 c++预测 windows系统
  19. S7-200 SMART 编程技巧及实例分享
  20. 第5课python植物大战僵尸-添加豌豆射手类

热门文章

  1. vscode 5500 but failed to open in Browser Preview. Got Browser Preview extension installed?
  2. 测试软件ipc,IPC产线调焦测试工具
  3. java包名命名规则_告别编码5分钟,命名2小时!史上最全的Java命名规范参考!
  4. java接口多态的变量能_「JAVA」多态的灵魂,面向接口的程序设计,这才是你该懂得的接口(interface)...
  5. ++代码实现 感知机的原理_常见排序算法原理及JS代码实现
  6. linux内核内存溢出检测,linux下有什么检测内存溢出的工具
  7. linux内核定时器 详解,Linux系统内核定时器机制详解(下)
  8. ActiveMQ_Linux安装
  9. java 二分搜索获得大于目标数的第一位_Java后端架构师技术图谱,你都了解多少?...
  10. java 7个数排序_7 Java 快速排序