struts2学习 - action - 1
从以上路径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相关推荐
- struts2学习 - action -3 动态方法调用 DMI
Action执行的时候并不一定要执行execute方法 可以在配置文件中配置Action的时候用method=来指定执行哪个方法 也可以在url地址中动态指定(动态方法调用DMI)(推荐) 配置文 ...
- Struts2学习总结三
Struts2框架OGNL与文件上传以及防止表单重复提交 Struts2学习总结三 1.OGNL表达式 1.1.什么是OGNL. 1.2.OGNL的3个符号. 1.2.1.#符号 1.2.1.1.访问 ...
- Struts2学习总结二
Struts2框架学习 Struts2学习总结二 1.请求封装参数 1.1.动作类作为实体模型 1.1.1.创建UserAction类 1.1.2.创建struts.xml并编写 1.1.3.编写we ...
- SpringAop对struts2的Action设置切面织入时报错java.lang.NoSuchMethodException
学习springAop,尝试对struts2的Action层使用Aop切面实现日志的打印. 执行出现报错:java.lang.NoSuchMethodException. 查阅资料解决办法:sprin ...
- Struts2学习笔记(一)--入门常见配置
Struts2框架的学习路线 l 第一天:Struts2的概述.Struts2的入门.Struts2常见的配置.Struts2的Action的编写 l 第二天:Struts2的数据的封装.结果页面配 ...
- Struts2学习总结(完整版)
Struts2学习总结(完整版) 一.搭建struts2环境 1.jar包的导入 主要是到 解压其中的一个工程,得到里面lib下包含的jar包 把这里的所有的jar包拷贝到项目的 WEB-INF目录下 ...
- Struts2中Action的属性接收参数
Struts2中Action的属性接收参数,有三种传递并接收参数的方式,第一种是在Action添加成员属性接收参数,第二种是域模型,就是利用对象域来进行传递和接收参数,第三种是ModelDriven接 ...
- Struts2学习笔记(八) 拦截器(Interceptor)(上)
什么是拦截器(Interceptor) 拦截器是struts2框架最重要的特性之一.它可以让你在Action 方法执行前后(Result执行之后)进行一些功能处理.在前面学习Action和学习Resu ...
- Struts2学习笔记(六) 结果(Result)(上)
大多数情况下我们的用例可以被分成两个部分.一是我们需要改变和查询应用程序的状态,而是需要呈现和更新应用程序的视图.在Struts2中Action管理应用程序的状态,Result Type管理视图. R ...
最新文章
- 生产系统服务器是啥意思,生产系统服务器主机名怎么看
- Vert.x MySQLClient体验
- WAP调用微信支付https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1
- Python 实现窗函数
- Word解析之Word内部结构
- 当面试官说“你还有什么问题想问的”,你该如何回答?
- 职称计算机萧山考点地址,杭州各科目考点一览表(地址+考试时间+电话)
- 《Person Re-identification:Past, Present and Future》论文笔记
- 什么是cert文件?
- 设计师都在用的6个免费设计素材网站~
- pythonopencv人脸识别考勤_Python+Opencv+Tkinter指纹识别与人脸识别的门禁兼考勤(一)...
- ubuntu16.04安装ROS Kinetic(保姆式安装)
- Android 适配暗黑模式
- Electron-vue开发实战 - 文件下载及进度显示
- 书评《HTTP权威指南》
- Pr 入门教程:了解时间轴面板
- 云管理服务AWS Organizations正式在AWS中国区域上线
- Mask Rcnn tensorflow(keras前端)模型 c++预测 windows系统
- S7-200 SMART 编程技巧及实例分享
- 第5课python植物大战僵尸-添加豌豆射手类
热门文章
- vscode 5500 but failed to open in Browser Preview. Got Browser Preview extension installed?
- 测试软件ipc,IPC产线调焦测试工具
- java包名命名规则_告别编码5分钟,命名2小时!史上最全的Java命名规范参考!
- java接口多态的变量能_「JAVA」多态的灵魂,面向接口的程序设计,这才是你该懂得的接口(interface)...
- ++代码实现 感知机的原理_常见排序算法原理及JS代码实现
- linux内核内存溢出检测,linux下有什么检测内存溢出的工具
- linux内核定时器 详解,Linux系统内核定时器机制详解(下)
- ActiveMQ_Linux安装
- java 二分搜索获得大于目标数的第一位_Java后端架构师技术图谱,你都了解多少?...
- java 7个数排序_7 Java 快速排序