struts总结

struts2在web.xml中的定义


<?xml version="1.0" encoding="GBK"?>
<!-- web-app是 Web应用配置文件的根元素,指定Web应用的Schema信息 -->
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.
com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- 定义 Struts 2 的 FilterDispatcher 的 Filter -->
<filter>
<!-- 定义核心 Filter的 名字 -->
<filter-name>struts2</filter-name>
<!-- 定义核心 Filter 实现类-->
<filter-class>org.apache.Struts2.dispatcher.FilterDispatcher
</ filter-class>
</filter>
<!-- FilterDispatcher用来初始化 Struts 2并且处理所有的Web 请求 -->
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


为了给Web应用增加struts2功能,只需要将struts2安装到Web应用中即可,在Web应用中安装struts2框架核心只需要经过如下三个步骤.
1. 修改web,xml文件,在web.xml文件中配置struts2的核心Filter
2.将struts2框架的类库复制到web应用的WEB-INF/lib路径下
3. 在WEB-INF/classes下增加struts.xml配置文件

<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2 配置文件的 DTD 信息 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<!-- struts 是Struts 2 配置文件的根元素 -->
<struts>
<!-- Struts 2 的Action 必须放在指定的包空间下定义 -->
<package name="strutsqs" extends="struts-default">
<!-- 定义 login 的 Action该 Action 的实现类为 lee.Action类 -->
<action name="Login" class="lee.LoginAction">
<!--定义处理结果和资源之间的映射关系-->
<result name="error">/error.jsp</result>
<result name="success">/welcome.jsp</result>
</action>
</package>
</struts>

使用拦截器需要的两个步骤:
1。通过《interceptor../>元素来定义拦截器
2。通过<interceptor-ref.../>元素来使用拦截器

Struts2精髓部分

1、Struts 2的配置文件有两份:

— 配置Action的struts.xml文件。— 配置Struts 2全局属性的struts.properties文件。

2、Struts 2的标签库也是Struts 2的重要组成部分。通过使用Struts 2的标签,开发者可以最大限度地减少页面代码的书写。

3、Struts 2的控制器组件是Struts 2框架的核心,事实上,所有MVC框架都是以控制器组件为核心的。正如前面提到的,Struts 2的控制器由两个部分组成:FilterDispatcher和业务控制器Action。

4、完成程序国际化

定义国际化资源文件

加载资源文件:struts.custom.i18n.resources=messageResource

输出国际化信息


5、增加数据校验

继承ActionSupport

使用Struts 2的校验框架


6、Struts 2的类型转换


7、Struts 2的拦截器


8、文件的上传和下载


在maven的工程里配置依赖为
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.0.11.2</version>
</dependency>

jsp页面:
<%@ taglib prefix="s" uri="/struts-tags" %>


错误: HTTPStatus 404 -ThereisnoActionmapped for namespace/andactionnamelogin. 没有Action映射到命名空间
解决: 1.检查命名空间 2.检查Struts.xml配置文件 3.放置路径(处于WEB-INF\classes目录下面)


struts2的总结


struts.xml中的配置::


<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>

<!-- include节点是struts2中组件化的方式 可以将每个功能模块独立到一个xml配置文件中 然后用include节点引用 -->
<include file="struts-default.xml"></include>


<!-- package提供了将多个Action组织为一个模块的方式
package的名字必须是唯一的 package可以扩展 当一个package扩展自
另一个package时该package会在本身配置的基础上加入扩展的package
的配置 父package必须在子package前配置
name:package名称
extends:继承的父package名称
abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false
namespace:定义package命名空间 该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action
-->
<package name="com.kay.struts2" extends="struts-default" namespace="/test">
<interceptors>
<!-- 定义拦截器
name:拦截器名称
class:拦截器类路径
-->
<interceptor name="timer" class="com.kay.timer"></interceptor>
<interceptor name="logger" class="com.kay.logger"></interceptor>
<!-- 定义拦截器栈 -->
<interceptor-stack name="mystack">
<interceptor-ref name="timer"></interceptor-ref>
<interceptor-ref name="logger"></interceptor-ref>
</interceptor-stack>
</interceptors>

<!-- 定义默认的拦截器 每个Action都会自动引用
如果Action中引用了其它的拦截器 默认的拦截器将无效 -->
<default-interceptor-ref name="mystack"></default-interceptor-ref>


<!-- 全局results配置 -->
<global-results>
<result name="input">/error.jsp</result>
</global-results>

<!-- Action配置 一个Action可以被多次映射(只要action配置中的name不同)
name:action名称
class: 对应的类的路径
method: 调用Action中的方法名
-->
<action name="hello" class="com.kay.struts2.Action.LoginAction">
<!-- 引用拦截器
name:拦截器名称或拦截器栈名称
-->
<interceptor-ref name="timer"></interceptor-ref>

<!-- 节点配置
name : result名称 和Action中返回的值相同
type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher
-->
<result name="success" type="dispatcher">/talk.jsp</result>
<!-- 参数设置
name:对应Action中的get/set方法
-->
<param name="url">http://www.sina.com</param>
</action>
</package>
</struts>


web.xml的配置

Filter是Strusts2中非常重要的机制,而Filter的配置就放在Web.xml文件中,如下:

<?xml version="1.0" encoding="GBK"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值