原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。
http://kin111.blog.51cto.com/738881/165753
<!--正文 begin-->
当我们进行一个应用的时候,根据从页面提交过来的应用的类型不同的时候,需要进行不同的action转发处理的时候,如何做呢,可以在struts中通过result标签的设置来进行。
举例如:是管理者的用户登录的时候,执行完了认证需要的loginaction后,想进行admin权限action的处理,并跳转到管理者的首页面。
而如果是普通用户登录后,执行完了认证需要的loginaction后,想进行普通用户的权限action的处理,并跳转到普通用户的首页面。
以下是一个实现示例:
首先是一个login.jsp文件,
在这个jsp文件中,我们提交admin或者user来设定权限。
文件内容:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<form action="login.action" method="post">
输入admin,或者user<br>
role: <input type="input" name="role"><br>
<input type="submit" value="login">
</form>
</html>
然后是LoginAction.java文件
在这个文件中取得页面传过来的权限(role)
文件内容;
package struts2.login;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String role = "";
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}
}
然后是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="default" extends="struts-default">
<action name="login" class="struts2.login.LoginAction">
<result name="success" type="chain">${role}</result>
</action>
<action name="admin">
<result>admin.jsp</result>
</action>
<action name="user">
<result>user.jsp</result>
</action>
</package>
</struts>
在这个文件中,在login的action配置的地方,result的设定使用了type="chain"的设定方式,将结果进行其它action的转发,而转发的action名字则为action中的变量值role。
然后在下面配置了两个forward的action,根据role分别转到不同的页面。
这里没有指定action的class,可以根据实际的应用进行添加。
结果页面;
文件名:admin.jsp
文件内容:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
admin管理action成功。
</html>
文件名:user.jsp
文件内容:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
user的action成功。
</html>
好我们,执行以下,看到输入admin的时候,会跳转到admin.jsp页面
而输入user的时候,会跳转到user.jsp页面。
如图:
举例如:是管理者的用户登录的时候,执行完了认证需要的loginaction后,想进行admin权限action的处理,并跳转到管理者的首页面。
而如果是普通用户登录后,执行完了认证需要的loginaction后,想进行普通用户的权限action的处理,并跳转到普通用户的首页面。
以下是一个实现示例:
首先是一个login.jsp文件,
在这个jsp文件中,我们提交admin或者user来设定权限。
文件内容:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<form action="login.action" method="post">
输入admin,或者user<br>
role: <input type="input" name="role"><br>
<input type="submit" value="login">
</form>
</html>
然后是LoginAction.java文件
在这个文件中取得页面传过来的权限(role)
文件内容;
package struts2.login;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport{
private String role = "";
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}
}
然后是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="default" extends="struts-default">
<action name="login" class="struts2.login.LoginAction">
<result name="success" type="chain">${role}</result>
</action>
<action name="admin">
<result>admin.jsp</result>
</action>
<action name="user">
<result>user.jsp</result>
</action>
</package>
</struts>
在这个文件中,在login的action配置的地方,result的设定使用了type="chain"的设定方式,将结果进行其它action的转发,而转发的action名字则为action中的变量值role。
然后在下面配置了两个forward的action,根据role分别转到不同的页面。
这里没有指定action的class,可以根据实际的应用进行添加。
结果页面;
文件名:admin.jsp
文件内容:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
admin管理action成功。
</html>
文件名:user.jsp
文件内容:
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
user的action成功。
</html>
好我们,执行以下,看到输入admin的时候,会跳转到admin.jsp页面
而输入user的时候,会跳转到user.jsp页面。
如图:
本文出自 “点点滴滴” 博客,请务必保留此出处http://kin111.blog.51cto.com/738881/165753