struts.xml 通配符问题

投币手 2013-05-26 11:04:52
遇到一个struts通配符问题,求高手帮忙看下到底是哪里有问题。
package chapter8;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.opensymphony.xwork2.Action;

public class LoginRegisterAction implements Action{

private String username;
private String password;

private HttpServletRequest request;


private static Map<String, String> users = new HashMap<String, String>();

public String register() throws Exception{
request.setAttribute("info", "您已经注册成功!");
return SUCCESS;
}

public String login() throws Exception{
try{
if(getUsername().equals("bill") && getPassword().equals("1234")){
request.setAttribute("info", "登陆成功");
return SUCCESS;
}else{
request.setAttribute("info", "登录失败");
return ERROR;
}
}catch(Exception e){
return ERROR;
}
}
public String execute() throws Exception{
return SUCCESS;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public void setRequest(HttpServletRequest request) {
this.request = request;
}

}

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="struts2" extends="struts-default" namespace="/myspace">

<action name="*Action" class="chapter8.LoginRegisterAction" method="{1}">
<result name="success">/chapter8/success.jsp</result>
<result name="error">/chapter8/error.jsp</result>
</action>

</package>
</struts>

jsp页面:
<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<script type="text/javascript">
function login(){
alert("登陆");
form.action = "/loginAction.action";
alert(form.action);
form.submit();
}
function register(){
alert("注册");
form.action = "registerAction";
form.submit();
}
</script>

<s:form name="form" theme="simple" namespace="/myspace">
用户:<s:textfield name="username" /><p />
密码:<s:textfield name="password" /><p />

<s:submit value="登陆" onclick="login()" />
<s:submit value="注册" onclick="register()" />
</s:form>
</body>
</html>



点登陆后 alert


然后提示:
type Status report

message /loginAction.action

description The requested resource (/loginAction.action) is not available.
...全文
310 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
没遇到过,,不知道你怎么弄的,这里肯定是有问题才这样子的。。自己慢慢排查吧
投币手 2013-06-20
  • 打赏
  • 举报
回复
引用 5 楼 syq891015 的回复:
四楼注意下 人家用的是struts2标签 <s:form namespace='/myspace'>有命名空间了 楼主你知道什么原因了吗?
不知道,先不用通配符请求一次,再改用通配符,就可以了,不知道是不是环境的问题?
syq891015 2013-06-13
  • 打赏
  • 举报
回复
四楼注意下 人家用的是struts2标签 <s:form namespace='/myspace'>有命名空间了 楼主你知道什么原因了吗?
  • 打赏
  • 举报
回复
楼主,是你地址的问题啊 。。 <package name="struts2" extends="struts-default" namespace="/myspace"> 你看你的namespace 是myspace 那么每次请求路径都要加上myspace 才可以 另外 在 js下制定路径 最好用绝对的路径。 所以把 form.action = "/loginAction.action"; form.action = "registerAction"; 改成 form.action = "${pageContext.request.contextPath}/myspace/loginAction.action"; form.action = "${pageContext.request.contextPath}/myspace/registerAction";
投币手 2013-05-26
  • 打赏
  • 举报
回复
<action name="loginAction" class="chapter8.LoginRegisterAction" method="register">
		
<action name="registerAction" class="chapter8.LoginRegisterAction" method="register">
		
问题解决了,使用通配符之前,先将请求的action都不用通配符,分别都请求一次之后,再改成通配符形式,就没问题了。 但是不知道具体原因是什么?
投币手 2013-05-26
  • 打赏
  • 举报
回复
在线等,麻烦各位大侠指点~~~~~

25,980

社区成员

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

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