• 在<action>元素中使用method属性,将多个请求关联到同一个Action
类的不同方法。
比如:
login.action,register.action,logout.action等多个和用户相关的请
求,由一个Action类处理。
一个Action类处理多种请求时,数据的装载也会自动完成。
【示例】用户登录和新用户注册,使用同一个Action
• 【了解】另一种配置方式
请求URL使用:user!login.action, user!register.action, user!logout.action的形式;
在struts.xml中配置:
<constant name="struts.enable.DynamicMethodInvocation"
value="true"></constant>
<action name="user" class=“XXXAction">
<result name="main">/main.jsp</result>
<result name="login">/login.jsp</result>
<!—struts2.5后需追加-->
<allowed-methods>login,register</allowed-methods>
</action>
注意:
在配置<package>标签的路径时,如果配置为相对路径,当注册页面出现类型不匹配的问题时,struts 框架会通过 <result name="register">/register.jsp</result>的配置回到本页面,但是会在当前目录下,除了你所访问jsp页面资源之外的路径作为你当前路径的前缀+/***(你所配置的namespace路径+jsp资源路径)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!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>Insert title here</title>
</head>
<body>
<form method="post" action="user/register.action">
账号:<input type="text" name="userInfo.account" /><br/>
密码:<input type="password" name="userInfo.pwd" /><br/>
确认密码:<input type="password" name="confirm" /><br/>
姓名:<input type="text" name="userInfo.userName" /><br/>
年龄:<input type="text" name="userInfo.age" /><br/>
出生日期:<input type="text" name="userInfo.dob" /><br/>
性别:<input type="radio" name="userInfo.gender" value="0" checked="checked"/>男
<input type="radio" name="userInfo.gender" value="1" />女<br/>
<input type="submit" value="注册"/><br/>
<s:fielderror></s:fielderror>
<s:actionerror></s:actionerror>
</form>
</body>
</html>
<package name="demo" extends="struts-default" namespace="/user">
<action name="login" class="com.xixi.struts_demo.action.UserAction" method="login">
<result name="success">/main.jsp</result>
<result name="login">/login.jsp</result>
<result name="input">/login.jsp</result>
</action>
<action name="register" class="com.xixi.struts_demo.action.UserAction" method="register">
<result name="success">/reg_success.jsp</result>
<result name="register">/register.jsp</result>
<result name="input">/register.jsp</result>
</action>
</package>
出现结果为:
image.png
出错一次后的访问路径:
image.png
出错多次后的访问路径:
image.png
每次出错后都会在jsp资源路径前加上/user,会使你的访问路径相当的深入。但是struts会帮助我们找到相应的资源,无论我们多加了多少级的/user;
一般情况下以更目录为主设置路径:
action="/struts_demo/user/register.action"
action="/工程名/<package>namespace属性的配置名称/action请求名称.action"
注意:
当action的路径为/开头时,struts只会在其前面加上主机名和端口号;
其他不会添加额外的信息;
网友评论