这段时间做到了权限处理部分,想用struts2的拦截器处理. 但看了不少技术资源,还是有点晕,得请教大家的经验.谢谢.给代码或说明下它的重点,或者说下它,先做什么,后做什么,然后再做什么?
解决方案 »
- 图片轮换的问题??
- getHibernateTemplate() 为空 怎么处理?
- 为了省心,我将漫画文件直接做成网页显示
- 为什么驱动包都已经加载还会出现驱动不对错误?
- 关于幻灯的尺寸的问题
- 表单上有几个文本域,其中有一个没有连接到数据库,如何在表单提交后,获取该文本域的内容?
- 再Cookie中存取中文的问题:
- 关于在WIN98下JDK1.4+TOMCAT4.1的配置问题.
- 这是什么意思?dbTrans.executeUpdate:[Microsoft][ODBC SQL Server Driver]Optional feature not im
- 用clob类型为什么出现乱码?
- 碰到一个问题,百思不解.向大家求教!
- 超简单JS问题
import org.apache.struts2.interceptor.SessionAware;import com.lil.test_ch10_03.model.User;public class LoginAction extends ActionSupport implements SessionAware {
private User user;
private Map session;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user=user;
}
public void setSession(Map session) {
this.session=session;
}
public String input() throws Exception {
return INPUT;
}
public String execute() throws Exception {
if("zhangsan".equals(user.getUsername()) && "123".equals(user.getPassword())) {
session.put("user", user);
} else {
addActionError("login failed");
return INPUT;
}
return SUCCESS;
}
}
interceptorpackage com.lil.test_ch10_03.interceptor;import java.util.Map;import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;public class AuthenticationInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext ctx=ActionContext.getContext();
Map session=ctx.getSession();
Object user=session.get("user");
if(user==null) {
ActionSupport action=(ActionSupport)invocation.getAction();
action.addActionError("you have to login");
return Action.LOGIN;
}
return invocation.invoke();
}
}
entitypackage com.lil.test_ch10_03.model;import java.io.Serializable;public class User implements Serializable {
private String username;
private String password;
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;
}
}
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">
<interceptors>
<interceptor name="auth" class="com.lil.test_ch10_03.interceptor.AuthenticationInterceptor" />
<interceptor-stack name="securityStack">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="auth" />
</interceptor-stack>
</interceptors>
<global-results>
<result name="login">/WEB-INF/pages/login.jsp</result>
</global-results>
<action name="login" class="com.lil.test_ch10_03.action.LoginAction">
<result>/WEB-INF/pages/success.jsp</result>
<result name="input">/WEB-INF/pages/login.jsp</result>
</action>
<action name="resource">
<result>/WEB-INF/page/resource.jsp</result>
<interceptor-ref name="securityStack" />
</action>
</package>
</struts>
web-inf/pages/
login.jsp<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<s:form action="login">
<s:actionerror />
<s:textfield name="user.username" label="Username" />
<s:password name="user.password" label="Password" />
<s:submit label="Submit" />
</s:form>
resource.jsp<%@ page language="java" contentType="text/html;charset=UTF-8" %>
this is a test.
success.jsp<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
success
你就可以看到效果了。
<result name="login">/WEB-INF/pages/login.jsp</result>
</global-results>这块的意思是?
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:494)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.异常信息.....
你要么是没配对,要么是访问路径不对,http://localhost:8000/test_ch10_03/resource.action
设globalresult的意思就是
设置一个默认的返回结果,在不在action里覆盖这个默认结果看你自己意愿
<result>/WEB-INF/page/resource.jsp</result>
<interceptor-ref name="securityStack" />
</action>
"/WEB-INF/page/"这里少写了一个"s"
应为"/WEB-INF/pages/",不好意思
The action execution was a failure.
static String INPUT
The action execution require more input in order to succeed.
static String LOGIN
The action could not execute, since the user most was not logged in.
static String NONE
The action execution was successful but do not show a view.
static String SUCCESS
The action execution was successful 这是API中的解释,这是常用的几种情况,当然自己也可以定义
LOGIN的情况就指的用户没有登陆的情况下,一般就会跳转到你自定义的登陆页了