Struts2 入门
来源:互联网 发布:淘宝夏宽 编辑:程序博客网 时间:2024/06/04 01:13
Struts2的执行过程及原理
简要:
用户发起请求 → StrutsPrepareAndExecuteFilter核心控制器 → interceptor拦截器
→ Action类中 execute → result 结果页面 →响应
环境搭建
- apps: 该文件夹包含了基于struts2的示例应用
- docs: 该文件夹包含了struts2的文档,包括struts2快速入门、struts2的文档以及API等
- lib: 该文件夹包含了struts2框架核心类库,以及struts2第三方插件类库
- src: 该文件夹包含了struts2框架的全部源代码
Struts2中用到的一些jar包简介
- struts2-core-2.3.15.1.jar Struts2框架的核心类库 xwork-core-2.3.15.1.jar
- Command模式框架,WebWork和Struts2都基于xwork ognl-3.0.6.jar Object Graph
- Navigation Language 对象图导航语言,struts2框架通过它来读写对象的属性
- freemarker-2.3.19.jar Struts2的UI标签的模板使用freeMarker编写
- commons-logging-1.1.3.jarASD出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK1.4+的日志记录
- commons-lang3-3.1.jar对java.lang包的增强 commons-io-2.0.1.jar 传输文件依赖的jar包
- commons-fileupload-1.3.jar 文件上传组件,2.1.6版本后需要加入此文件
开发中为了方便,基础的jar包可以直接导入apps\struts2-blank\WEB-INF\lib中的jar包
配置Struts2核心控制器
在web.xml中配置Struts2
<filter> //配置核心Filter的名字 <filter-name>struts2</filter-name> //配置核心Filter的类名 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter><filter-mapping> <filter-name>struts2</filter-name> //要拦截的URL,/*指拦截所有用户 <url-pattern>/*</url-pattern></filter-mapping>
配置struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <package name="default" namespace="/" extends="struts-default"> <action name="hello" class="com.java.action.HelloAction"> <result name="success">/success.jsp</result> </action> </package></struts>
Struts2配置
- default.properties:默认的常量配置。该文件保存在struts2-core-2.3.7.jar中org.apache.struts2包里面
- struts-default.xml:Bean、拦截器、结果类型。该文件保存在struts2-core-2.3.7.jar
- struts-plugin.xml:插件的配置信息。该文件保存在struts-Xxx-2.3.7.jar
- struts.xml:web应用默认的struts配置文件,配置action或常量。
- struts.properties:配置常量。该文件是Struts的默认配置文件
- web. xml:配置struts2,监听器,过滤器,常量。该文件是 Web 应用的配置文件
后加载文件中struts2常量会覆盖之前加载文件常量内容
Struts2的Action配置
当我们编写完Action类后,就可以在struts.xml文件中配置该Action。在struts.xml中配该Action就是让Struts2容器知道该Action的存在,并且能调用该Action来处理用户请求。
Struts 2使用包来组织Action,因此,将Action定义放在包定义下完成,定义Action通过使用<package>下的<action>
标签来完成。定义action同时要给出name属性和class属性。
package的属性
<package name="p1" extends="" namespace="" abstract="">
name:包名称,在struts2的配置文件中,包名不能重复 ,name并不是真正包名,只是为了管理Action
namespace:namespace属性和name属性,决定 Action的访问路径 (以/开始 )
extends:extends表示继承自哪个包,通常开发中继承 struts-default 包 (struts-default包在 struts-default.xml定义 )
name属性必选,唯一值
extends属性可选
namespace属性可选,定义了包的命名空间
abstract属性可选,在当前包下是否为一个抽象包,抽象包不能包含Action
action的属性
name:该action的名字,同时也是也是需要处理的URL前半部分。<action>的name 和 <package>
的namespace属性 共同决定 Action的访问路径
例如 :访问路径 /user/hello.action
<package name="default" namespace="/user" extends="struts-default"> <action name="hello" class="com.java.struts2.HelloAction">
class:指定了该Action的实现类,如果不指定,默认ActionSupport类
Action只是一个控制器,它并不直接对浏览器生成响应,所以在Action处理完用户的请求后,Action需要将指定的视图资源展示给用户,要配置映射关系,用<result>标签。<result>
元素有两个属性,name和type,系统默认name属性是success,type属性是dispatch。
每个result标签都代表了一个可能输出的结果。当Action类的方法执行完成时,它返回一个字符串作为结果,框架根据这个结果选择对应的result(result的name属性),向用户输出结果页面。在com.opensymphony.xwork2.Action接口中定义了一组标准的结果代码,可供开发人员使用,当然了只有我们的action继承ActionSupport 这个类才可以使用下面的结果代码,后面再来详细总结结果类型。
public interface Action{ public static final String SUCCESS = “success”; public static final String NONE = “none”; public static final String ERROR = “error”; public static final String INPUT = “input”; public static final String LOGIN = “login”; }
返回结果 解释
SUCCESS Action执行成功,返回相应的视图,success是 name属性的默认值
NONE Action执行成功,但并不返回任何视图
ERROR Action执行失败,返回到 错误处理视图
INPUT Action在执行时需要从前端界面获取参数,INPUT就是代表这个输入参数的界面,通常会对这些参数进行验证,如果验证没有通过,将自动返回到该视图
LOGIN Action因为用户没有登陆,将返回该登陆视图,要求用户进行 登陆验证
- Struts2入门
- struts2 入门
- struts2入门
- struts2-入门
- struts2入门
- struts2入门
- Struts2入门
- struts2入门
- Struts2入门
- struts2 入门
- struts2-入门
- Struts2入门
- struts2 入门
- struts2入门
- Struts2入门
- struts2入门
- Struts2入门
- Struts2入门
- Java多线程之旅(一)
- Vue.js指令
- 遍历数组
- Unity计算两点之间的距离或者向量的长度常用方法
- 安卓 使用点击事件完成双击效果的简单写法
- Struts2 入门
- Windows10下C# 使用EmguCV3.2 读取本机摄像头
- 安卓include文件踩过的坑
- python正则表达式
- 第2章 导数与微分
- 开机广播,并且开机时播放音乐,点击按钮可以停止
- Effective Jave 创建和销毁对象 5.避免创建不必要的对象
- 算法复习:两个链表的第一个公共结点
- python2.7中文编码报错问题