当前位置: 代码迷 >> JavaScript >> action向jsp页面传送数据的方法
  详细解决方案

action向jsp页面传送数据的方法

热度:38   发布时间:2012-09-08 10:48:07.0
action向jsp页面传递数据的方法
action向jsp页面传递数据的方法
关键字: struts, request
action向jsp页面传递数据的几种方法:



前提:在struts的配置文件struts-config.xml中,设置该action的scope属性为“request”,即:

Xml代码 
<struts-config> 
    <form-beans> 
        <form-bean name="loginForm" type="com.bjsxt.struts.LoginActionForm"/> 
    </form-beans> 
     
    <action-mappings> 
        <action path="/login" 
                type="com.bjsxt.struts.LoginAction" 
                name="loginForm" 
                scope="request" 
        > 
            <forward name="success" path="/login_success.jsp"/> 
            <forward name="error" path="/login_error.jsp"/>         
        </action> 
    </action-mappings> 
</struts-config> 

<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.bjsxt.struts.LoginActionForm"/>
</form-beans>
  
   <action-mappings>
   <action path="/login"
   type="com.bjsxt.struts.LoginAction"
   name="loginForm"
   scope="request"
   >
   <forward name="success" path="/login_success.jsp"/>
<forward name="error" path="/login_error.jsp"/>
   </action>
   </action-mappings>
</struts-config>    注意:所有struts-config.xml中的path属性都是以"/"开头的。

方法一:在action中利用request对象的setAttribute方法来传递数据

Java代码 
package com.bjsxt.struts;  
/** 
* 用户登录的Action 
*/ 
public class LoginAction extends Action {  
 
    public ActionForward execute(ActionMapping mapping, ActionForm form,  
            HttpServletRequest request, HttpServletResponse response)  
            throws Exception {  
        LoginActionForm laf = (LoginActionForm)form;  
        String username = laf.getUsername();  
        String password = laf.getPassword();  
        String errorInfo = "";  
        try {  
            UserManager.getInstance().login(username, password);  
            //request.setAttribute("username", username);  
            return mapping.findForward("success");  
        }catch(UserNotFoundException unfe) {  
            unfe.printStackTrace();  
            errorInfo = "用户不能找到,用户名称=[" + username + "]";  
        }catch(PasswordErrorException pee) {  
            pee.printStackTrace();  
            errorInfo = "密码错误";  
        }  
        request.setAttribute("errorinfo", errorInfo);  
        return mapping.findForward("error");  
    }  


package com.bjsxt.struts;
/**
* 用户登录的Action
*/
public class LoginAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginActionForm laf = (LoginActionForm)form;
String username = laf.getUsername();
String password = laf.getPassword();
String errorInfo = "";
try {
UserManager.getInstance().login(username, password);
//request.setAttribute("username", username);
return mapping.findForward("success");
}catch(UserNotFoundException unfe) {
unfe.printStackTrace();
errorInfo = "用户不能找到,用户名称=[" + username + "]";
}catch(PasswordErrorException pee) {
pee.printStackTrace();
errorInfo = "密码错误";
}
request.setAttribute("errorinfo", errorInfo);
return mapping.findForward("error");
}
}


设置好后,就可以在login_success.jsp页面中,利用一下代码得到数据:

Java代码 
<%= request.getAttribute("username") %> 

<%= request.getAttribute("username") %>

方法二:直接在request对象中获取ActionForm对象:

Html代码 
<%@ page import="com.bjsxt.struts.*" %> 
 
<%  
    LoginActionForm laf = (LoginActionForm)request.getAttribute("loginForm");  
%> 
               <%=laf.getUsername() %>,登录成功 
  相关解决方案