今天试着用注解的方式配了action,可是总说404,无法映射,其实也没什么东西啊:前台页面、action类、web.xml、struts2.xml。spring的配置文件虽然也有但这里根本用不到啊。有下面代码帮我改一下,或者谁能写个简单的例子给我,大家一起交流交流!!
错误显示:

目录结构:

主要代码:
1、web.xml
<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.zzc.action</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,src/struts.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
2、struts.xml
<!-- 指定由spring负责action对象的创建 -->
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.convention.result.path" value="/"/>
<!-- 请求参数的编码方式-->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<constant name="struts.convention.action.includeJars" value="*"/>
<!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开-->
<constant name="struts.action.extension" value="action,do,htm"/>
<!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.devMode" value="flase"/>
<!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 是否开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
3、LoginAction.java
@ParentPackage("struts-default")
@Namespace("/loginns")
public class LoginAction extends ActionSupport {
private String username;
private String userpass;
@Action(value="login",results={
@Result(name="success",location="/login/login_success.jsp"),
@Result(name="error",location="/error/error.jsp")
})
public String login(){
System.out.println("ok");
if ("qq".equals(username) && "123".equals(userpass)) {
return SUCCESS;
}
return ERROR;
}
login.jsp
<form action="${pageContext.request.contextPath }/loginns/login.action" method="post">
用户名:<input type="text" name="username" id="username" />
密码:<input type="password" name="userpass" id="userpass" />
<input type="submit" value="submit" />
<input type="reset" value="reset" />
</form>
错误显示:

目录结构:

主要代码:
1、web.xml
<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.zzc.action</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,src/struts.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
2、struts.xml
<!-- 指定由spring负责action对象的创建 -->
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.convention.result.path" value="/"/>
<!-- 请求参数的编码方式-->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<constant name="struts.convention.action.includeJars" value="*"/>
<!-- 指定被struts2处理的请求后缀类型。多个用逗号隔开-->
<constant name="struts.action.extension" value="action,do,htm"/>
<!-- 当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.devMode" value="flase"/>
<!-- 设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 是否开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
3、LoginAction.java
@ParentPackage("struts-default")
@Namespace("/loginns")
public class LoginAction extends ActionSupport {
private String username;
private String userpass;
@Action(value="login",results={
@Result(name="success",location="/login/login_success.jsp"),
@Result(name="error",location="/error/error.jsp")
})
public String login(){
System.out.println("ok");
if ("qq".equals(username) && "123".equals(userpass)) {
return SUCCESS;
}
return ERROR;
}
login.jsp
<form action="${pageContext.request.contextPath }/loginns/login.action" method="post">
用户名:<input type="text" name="username" id="username" />
密码:<input type="password" name="userpass" id="userpass" />
<input type="submit" value="submit" />
<input type="reset" value="reset" />
</form>