首先在index.jsp页面登录:
<form action="
itcsss" method="post">
<input type="text" name="username" />
<br>
<input type="password" name="password"/>
<br>
<input type="submit" value="login"/>
</form>
然后是action中方法(HelloWorldAction):
public String execute()
{
System.out.println("****************");
message = "这是我的第一个jsp页面!";
if(username.length()>0)
{
//此处可以通过
查询数据库来判断用户是否可以登录
System.out.println("username isd:"+username);
HttpSession session =
ServletActionContext.getRequest().getSession();
session.setAttribute("loginuser", username);
return "success";
}
else
{
return "error";
}
}
保存登录信息。
配置文件:
struts.xml
<struts>
<!--
用户登录的action -->
<package name="strut-login" extends="struts-default">
<global-results>
<result name="error">/index.jsp</result>
</global-results>
<action name="itcsss" class="cn.itcast.action.HelloWorldAction">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
<!-- 使用拦截器拦截非法登录的用户 -->
<package name="struts2" extends="struts-default" >
<interceptors>
<interceptor class="cn.itcast.indeptor.AuthorityInterceptor" name="authority"/>
<interceptor-stack name="mydefault">
<!--配置默认的拦截器 -->
<interceptor-ref name="defaultStack"/>
<!--配置
自定义的拦截器-->
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault" /><!--
全局拦截 -->
<global-results>
<result name="error">/index.jsp</result>
</global-results>
<action name="go" class="cn.itcast.action.HelloWorldAction" method="go">
<!-- interceptor-ref name="mydefault">
<param name="excludeMethods">go</param>
</interceptor-ref-->
<result name="success">/WEB-INF/page/MyJsp.jsp</result>
</action>
</package>
</struts>
拦截该方法:
public String go()
{
return "success";
}
判断session里时候有用户的登录信息,如果没有就跳转到登录页面。拦截器的实现:
package cn.itcast.indeptor;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class AuthorityInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// TODO Auto-generated method stub
ActionContext ctx = invocation.getInvocationContext();
Map<String,Object> session = ctx.getSession();
String username = (String)session.get("loginuser");//获取用户登录的信息,从session中获取
if(username==""||username==null)
return "error";//跳转到登录页面
//如果session中有登录的信息,就继续执行action中的方法
return invocation.invoke(); //如果有权限就执行Action
}
}