今天想尝试下Struts2的注解方式在web.xml里修改了原来的Filter
<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>manning.chapterTwo</param-value>
</init-param>
</filter>然后在包manning.chapterTwo下面添加一个Action,代码如下:
package manning.chapterTwo;import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;@Result(name="success",location="login.jsp")public class AnnotationAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 2296720831644414741L;
public String execute()
{
return "success";
}}启动,访问http://127.0.0.1:8888/Struts/annotationAction.action Struts是工程名提示说找不到action
是我少配什么东西了么?
<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>manning.chapterTwo</param-value>
</init-param>
</filter>然后在包manning.chapterTwo下面添加一个Action,代码如下:
package manning.chapterTwo;import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;@Result(name="success",location="login.jsp")public class AnnotationAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 2296720831644414741L;
public String execute()
{
return "success";
}}启动,访问http://127.0.0.1:8888/Struts/annotationAction.action Struts是工程名提示说找不到action
是我少配什么东西了么?
解决方案 »
- 包含文件数据传递的问题?
- Weblogic连接池异常!!!!
- 大家麻烦来看下-JSP运行错误
- 有没有做GIS的朋友,帮忙看一下
- jsp下载文件中乱码问题
- <form action="mailsend.jsp" method="post" enctype="multipart/form-data" name="myform">的问题??
- struts调运mysql存储过程问题
- 新手上路:请问为什么要把apache和tomcat整合?
- 请问:如何在servlet中获得当前时间和当前日期?菜鸟问题,请见谅。
- 如何获取当前路径?为什么我的比较奇怪??在线,来者给分
- 用apache FTPClient如何删除ftp下的文件夹
- 如何实现 车辆保险和年检的自动提醒功能
<!-- 用注解方式注入bean -->
<context:annotation-config/>
<!-- 扫描包路径 -->
<context:component-scan base-package="com"/>
没用Spring,也许哟啊加这些么?
* @author haigejiang
*
*/
@ParentPackage(value="default")//命名空间默认default
@Action//表明是一个Action
@Results(value={
@Result(name="addsuccess",location="subject!addsuccess.action",type="redirectAction"),
@Result(name="success",location="/WEB-INF/page/add_success.jsp"),
@Result(name="index",location="/WEB-INF/page/index.jsp"),
@Result(name="toadd",location="/WEB-INF/page/add.jsp"),
@Result(name="tovote",location="/WEB-INF/page/vote.jsp")
})public class SubjectAction extends BaseAction{
<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>manning.chapterTwo</param-value>
</init-param>
</filter><filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
试了半天都没效果....
package manning.chapterTwo;import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;@ParentPackage(value="manning.chapterTwo")
@Action
@Result(name="success",location="login.jsp")public class AnnotationAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 2296720831644414741L;
public String execute()
{
return "success";
}}struts.properties
struts.devMode=false
struts.enable.DynamicMethodInvocation=true
struts.i18n.reload=true
struts.ui.theme=simplestruts.locale=zh_CN
struts.i18n.encoding=GBKstruts.serve.static.browserCache=false
struts.url.includeParams=none
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.custom.i18n.resources" value="messages" />
<!-- 配置默认的Action -->
<package name="default" namespace="/" extends="struts-default">
<interceptors>
<!-- 定义权限验证拦截器 -->
<interceptor name="AuthInterceptor" class="cn.jbit.votingsystem.interceptor.AuthInterceptor"/>
<!-- 自定义连接器栈-->
<interceptor-stack name="myStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="AuthInterceptor"/>
</interceptor-stack>
</interceptors>
<!-- 使用拦截器栈 -->
<default-interceptor-ref name="myStack"/>
<global-results>
<result name="error" >/WEB-INF/page/error.jsp</result>
<result name="login">/WEB-INF/page/login.jsp</result>
</global-results>
</package>
</struts>
然后Acton里面才是这样写的
/**
* @author haigejiang
*
*/
@ParentPackage(value="default")//命名空间默认default
@Action//表明是一个Action
@Results(value={
@Result(name="addsuccess",location="subject!addsuccess.action",type="redirectAction"),
@Result(name="success",location="/WEB-INF/page/add_success.jsp"),
@Result(name="index",location="/WEB-INF/page/index.jsp"),
@Result(name="toadd",location="/WEB-INF/page/add.jsp"),
@Result(name="tovote",location="/WEB-INF/page/vote.jsp")
})public class SubjectAction extends BaseAction{
http://127.0.0.1:8888/Struts/annotation.action约定的规则是:如果是已Action结尾要去掉Action,以大小写为单词分隔,以“-”符号分割。
我的项目里有个ACTION的命名是WsThreadInfoAction,访问它的链接就是ws-thread-info.action
新建一个package就不行了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> <package name="armeng" namespace="/" extends="struts-default">
<action name="submit" class="action.MoreSubmitAction">
<result name="save">/result.jsp</result>
<result name="print">/result.jsp</result>
</action>
<action name="login">
<result>/login.jsp</result>
</action> <action name="userLogin" class="action.LoginAction">
<result name="success" type="freeer">
/WEB-INF/templates/user.ftl
</result>
<result name="jspsuccess" >
/loginsuccess.jsp
</result>
</action>
</package>
<package name="haha" namespace="/zero" extends="struts-default">
<action name="sum" class="test.FirstAction">
<result name="positive">/positive.jsp</result>
<result name="negative">/negative.jsp</result>
</action>
</package>
</struts>
test.FirstAction是用来验证package生效的Action,可以运行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>haha</param-value>
</init-param>
</filter>Action类
package test;import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;@ParentPackage(value="haha")
@Result(name="success",location="/login.jsp")public class AnnotationAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 2296720831644414741L;
public String execute()
{
return "success";
}}访问链接
http://127.0.0.1:8888/Struts/annotation.action
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>test</param-value>
</init-param>
</filter><filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>struts.xml
<constant name="struts.convention.package.locators" value="test,action" />