日期:2014-05-20  浏览次数:20782 次

struts2标签问题
今天刚试了试struts2标签,仅仅是做了一个简单的登录验证,发现个问题,直接登录打不开页面,只能通过一个Action才能打开页面。不太理解,希望有人给解释下。 谢谢

------解决方案--------------------
你说的不详细,如果你是想一进去就进行验证,那么,你可以在jsp页面触发onload事件。

如果不是这样,那就是你说的,不能直接访问一个页面,那就可在jsp页面写一段java脚本让他自动跳转:

Java code

<%

        request.getRequestDispatcher(
            "WEB-INF/login/login.jsp").forward(request,
                response);
%>

------解决方案--------------------
莫非这位仁兄的意思是使用了STRUTS2的标签,但是直接用JSP跳了JSP页面而没有经过ACTION?没有经过ACTION的拦截器处理,是不可以直接用struts的标签得到数据的。
------解决方案--------------------
可能和提交的action路径有关系,路径是必须正确滴,




/////////////////////////////////////////////////////////////////////
 jsp页面


<%@ taglib uri="/struts-tags" prefix="s" %>
。。。。。。。。。。。。。。。。

 <body>
<s:actionerror/>
<s:form action="login">
<s:textfield name="lname" label="登录名"></s:textfield>
<s:password name="lpass" label="密码"></s:password>
<s:submit></s:submit>
</s:form>


</body>


//////////////////////////////////////////////////////////////////////////////
控制器::




import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.qulx.service.LoginService;

public class LoginAction extends ActionSupport {

//属性驱动
private String lname;
private String lpass;

public String getLname() {
return lname;
}
public void setLname(String lname) {
this.lname = lname;
}
public String getLpass() {
return lpass;
}
public void setLpass(String lpass) {
this.lpass = lpass;
}
@Override
public String execute() throws Exception {
//验证用户是否是合法用户 
boolean flag = new LoginService()
.loginValidate(this.lname,this.lpass);
if(flag){
//如果用户合法,将用户绑定到会话中
ActionContext.getContext().getSession().put("loginname", lname);
return this.SUCCESS;
}else{
//添加控制器级别的异常
this.addActionError("非法用户,请重新登录");
return this.INPUT;
}
}
/**
* 表单验证
* 用户名不能为空,密码长度不低于六位
*/
@Override
public void validate() {
if(null == this.lname || "".equals(this.lname)){
//添加字段级别的异常
this.addFieldError("lname", "用户名不能为空");
}
if(null == this.lpass || this.lpass.length()<6){

this.addFieldError("lpass", "密码长度不能低于6位");
}
}
}



///////////////////////////////////////////////////////////////////////
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="0331s2" extends="struts-default">

<!-- 注册拦截器 -->
<interceptors>
<!-- 注册登录拦截器 -->
<interceptor name="loginInterceptor" 
class="com.qulx.interceptor.LoginInterceptor"></interceptor>
<!-- 注册方法拦截器 -->
<interceptor name="methodInterceptor" 
class="com.qulx.interceptor.MyMethodInterceptor">
<!--includeMethods定义拦截的方法 -->
<param name="includeMethods">save,update</param>
<!--excludeMethods定义不拦截的方法 -->