今天练习使用注解配置Action,对比网上的大牛的代码,自认为没有什么漏掉的了,结果就是不能成功,求大牛指点。下面是代码
1.Action类代码
package inno_inter; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.ActionSupport; @ParentPackage("struts-default") @Namespace("/inno") @Action( value="demo1", results={ @Result(name="success",location="/WEB-INF/demo.jsp"), @Result(name="input",location="/WEB-INF/demo.jsp") }) /*@Results({ @Result(name="success",location="/WEB-INF/demo.jsp"), @Result(name="input",location="/WEB-INF/demo.jsp") })*/ public class Demo1 extends ActionSupport { private static final long serialVersionUID = 1L; public Demo1() { System.out.println("action创建"); } @Override public String execute() throws Exception { System.out.println("action执行。。。"); return super.execute(); } //@Action("/demo1") public String demo(){ return SUCCESS; } }
2.web.xml文件代码
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 3 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 4 <welcome-file-list> 5 <welcome-file>/WEB-INF/login.jsp</welcome-file> 6 </welcome-file-list> 7 8 <filter> 9 <filter-name>struts2</filter-name> 10 <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> 11 <init-param> 12 <param-name>actionPackage</param-name> 13 <param-value>inno_inter</param-value> 14 </init-param> 15 </filter> 16 <filter-mapping> 17 <filter-name>struts2</filter-name> 18 <url-pattern>/*</url-pattern> 19 </filter-mapping> 20 </web-app>
3.Struts.xml文件代码
1 <?xml version="1.0" encoding="UTF-8" ?>
2
3 <!DOCTYPE struts PUBLIC
4 "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
5 "http://struts.apache.org/dtds/struts-2.5.dtd">
6 <struts>
7 <!-- 请求参数的编码方式-->
8 <constant name="struts.i18n.encoding" value="UTF-8"/>
9 <!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开-->
10 <constant name="struts.action.extension" value="action,do,htm"/>
11 <!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开 -->
12 <constant name="struts.configuration.xml.reload" value="true"/>
13 <!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 -->
14 <constant name="struts.devMode" value="false"/>
15 <!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 -->
16 <constant name="struts.serve.static.browserCache" value="false" />
17 <!-- 指定由spring负责action对象的创建
18 constant name="struts.objectFactory" value="spring" />
19 -->
20 <!-- 是否开启动态方法调用-->
21 <constant name="struts.enable.DynamicMethodInvocation" value="false"/>
22
23 <include file="struts-result.xml"/>
24 <!-- <include file="inno_inter/struts-inno.xml"/> -->
25 <package name="basePackage" extends="struts-default"/>
26
27 </struts>
4.jsp页面代码
<s:form action="/inno/demo1.action" method="post"> <s:textfield name="id" lable="用户名:"></s:textfield> <s:textfield name="pwd" lable="密码:"></s:textfield> <s:submit label="提交"></s:submit> </s:form>
5.项目导入的jar包
折腾了一晚上了,我觉得没有什么问题了,网上各种使用注解的方法都试了,就是不行,是不是新版本的struts2对注解的使用有更改。
web.xml
<!-- struts2 配置 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.yz.webapp.action</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
我新建了一个项目,源代码粘贴过去,就能直接运行了,可能是这个项目的struts-xxx.xml 文件太多,影响了,也可能别的原因,web.xml 文件没有问题。我的是struts2.5.StrutsPrepareAndExecuteFilter类所在的包跟其他版本不同。
你好,struts.xml里边有include file = struts-result.xml能贴一下这个文件的内容吗 我也遇到这问题了 更新了struts版本注解就失效了
那个没用。我是没有注释掉,跟注解这个功能没有关系,是我之前测试别的功能用的一个文件。注解是为了代替xml文件配置,用注解就最好不用配置文件。