Struts2学习遇到的一个小问题

hqq1007 2015-12-03 11:03:35
最近在学习strut2,在做一个小例子的时候遇到这样的问题,一直没办法解决,麻烦各路大神帮小弟找出问题的原因
先上代码:
strut.xml:

<constant name="struts.devMode" value="true" />
<package name="package2" namespace="/user2" extends="struts-default">

<interceptors>
<interceptor name="checkLogin" class="com.hhg.interceptor.CheckLoginInterceptor"></interceptor>
<interceptor-stack name="checkLoginInterceptor">
<interceptor-ref name="checkLogin"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>

<default-interceptor-ref name="checkLoginInterceptor"></default-interceptor-ref>

<global-results>
<result name="error">/jsp/Error.jsp</result>
</global-results>

<action name="login" class="com.hhg.action.LoginAction">
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">/jsp/Login2.jsp</result>
</action>

<action name="score" class="com.hhg.action.ScoreAction" method="{*}">
<result name="success">/jsp/Interceptor_Success.jsp</result>
</action>
</package>

Login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
<form name="userlogin" action="<%=request.getContextPath()%>/user2/login" method="post">
username : <input name="username" type="text"/>
password : <input name="password" type="password"/>
<input type="submit" value="submit"/>
</form>

<a href="<%=request.getContextPath()%>/user2/score!add">增加</a>
<a href="<%=request.getContextPath()%>/user2/score!delete">删除</a>
<a href="<%=request.getContextPath()%>/user2/score!update">修改</a>
<a href="<%=request.getContextPath()%>/user2/score!search">查看</a>
</body>
</html>


ScoreAction.java

import com.opensymphony.xwork2.ActionSupport;

public class ScoreAction extends ActionSupport{

public String add() {
System.out.println("ScoreAction的add方法");
return SUCCESS;
}
public String delete() {
System.out.println("ScoreAction的delete方法");
return SUCCESS;
}
public String update() {
System.out.println("ScoreAction的update方法");
return SUCCESS;
}
public String search() {
System.out.println("ScoreAction的search方法");
return SUCCESS;
}
}

先不考虑拦截器,在点击jsp页面中的增加/删除/修改/查看时,报错如下:
There is no Action mapped for namespace [/user2] and action name [score!add] associated with context path [/MyStruts2]

看了代码没找出问题所在,麻烦帮忙解答一下,谢谢
...全文
143 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hqq1007 2015-12-03
  • 打赏
  • 举报
回复
上面的代码有点错误,应该是

<action name="score" class="com.hhg.action.ScoreAction" method="{*}">
            <result name="success">/jsp/Interceptor_Success.jsp</result>
 </action>
hqq1007 2015-12-03
  • 打赏
  • 举报
回复
引用 4 楼 yiguanyagao 的回复:
通配符代表是你method中的第几个方法,比如: <action name="score!*!*" class="com.hhg.action.ScoreAction" method="{2}"> <result name="success">/jsp/Interceptor_Success.jsp</result> </action>
<action name="*_*!*" class="com.hhg.action.{1}Action" method="{2}"> <result name="success">/jsp/{1}_Success.jsp</result> </action> 这样的用法我清楚。 只是今天在学习的时候看到了这种

<action name="score*" class="com.hhg.action.ScoreAction" method="{*}">
            <result name="success">/jsp/Interceptor_Success.jsp</result>
 </action>
然后就自己测试了下,但是一直不成功,但是视频中是可以正确运行的。 所以就很疑惑,想知道自己哪不对了
yiguanyagao 2015-12-03
  • 打赏
  • 举报
回复
通配符代表是你method中的第几个方法,比如: <action name="score!*!*" class="com.hhg.action.ScoreAction" method="{2}"> <result name="success">/jsp/Interceptor_Success.jsp</result> </action>
hqq1007 2015-12-03
  • 打赏
  • 举报
回复
引用 2 楼 yiguanyagao 的回复:
<action name="score!*" class="com.hhg.action.ScoreAction" method="{1}"> <result name="success">/jsp/Interceptor_Success.jsp</result> </action> 把配置里面最后一个aaction换成这个试一试
这样就可以了 但是这是为什么,通配符*号怎么就用不了呢。可以解释一下吗
yiguanyagao 2015-12-03
  • 打赏
  • 举报
回复
<action name="score!*" class="com.hhg.action.ScoreAction" method="{1}"> <result name="success">/jsp/Interceptor_Success.jsp</result> </action> 把配置里面最后一个aaction换成这个试一试
hqq1007 2015-12-03
  • 打赏
  • 举报
回复
没有人吗
网络评论:这书真的是我感觉特烂的一本书了,目录看上去不错,讲的挺多,但是到每一部分时,烂到都没法看了,完全没有逻辑,直接就来一段莫名的代码,也不解释什么意思,总之一句话非常差,慎买! 《搞定j2ee核心技术与企业应用:ajax,jsp,struts 2,spring,hibernate》是笔者在多年项目开发过程中的经验总结,它通过丰富的实例由浅入深、循序渐进地介绍了目前采用java进行web开发的各种框架的使用方法,从而帮助软件设计人员快速掌握这些web开发技术的使用,并能将其应用到实战中。   《搞定j2ee核心技术与企业应用:ajax,jsp,struts 2,spring,hibernate》在编排上力求让读者能够快速掌握java web的设计方法。首先对javaee的来源、整体框架和核心技术,以及mvc模式的设计思想、规范及优缺点进行了讲解;然后对java web环境的建立、数据库的搭建、一些基本技术(比如javascript、jsp、servlet、jdbc)进行了讲解;接着对ajax、struts 2、spring 3、hibernate 3进行了讲解;又对log4j、dom4j、junit和 jfreechart等工具的使用方法进行了介绍。《搞定j2ee核心技术与企业应用:ajax,jsp,struts 2,spring,hibernate》的目的就是使读者快速学会工具的使用。最后,笔者按照软件的开发过程,采用面向对象的设计思想,通过不同的技术整合来进行一些项目实战。   《搞定j2ee核心技术与企业应用:ajax,jsp,struts 2,spring,hibernate》适用于初、中、高级软件设计人员阅读,同时也可用做高校相关专业和社会培训班的教材。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧