程序目的:通过提交用户名和密码跳转到相应页面,成功就跳到success页面,否则跳到fail页面
struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<data-sources />
<form-beans>
<form-bean name="loginForm" type="form.LoginForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/login" name = "loginForm" scope = "request" type = "action.LoginAction" parameter = "method"
attribute = "loginForm" input = "/login.jsp" validate = "true" >
<forward name="success" path="/success.jsp"></forward>
<forward name="error" path="/error.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="ApplicationResources" />
</struts-config>
login.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for LoginForm form</title>
</head>
<body>
<html:form action="/login?method=login">
用户名 : <html:text property="username"/><html:errors property="username"/><br/>
密 码 : <html:password property="userpass"/><html:errors property="userpass"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
LoginActionpackage action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;import form.LoginForm;public class LoginAction extends Action{
public ActionForward login(ActionMapping actionmapping,ActionForm actionForm,
HttpServletRequest request,HttpServletResponse response){
DynaActionForm loginForm = (DynaActionForm)actionForm;
HttpSession session = request.getSession();
//解析请求参数
String username = (String)loginForm.get("username");
String userpass = (String)loginForm.get("userpass");
String actionpath = "error";
if("joe".equals(username) & "joe".equals(userpass)){
session.setAttribute("name", username);
actionpath = "success";
}
return actionmapping.findForward(actionpath);
}
}
提交用户名密码后跳到http://localhost:8080/logindemo01/login.do?method=login,但是结果一片空白
求解答?
struts-config.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<data-sources />
<form-beans>
<form-bean name="loginForm" type="form.LoginForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings>
<action path="/login" name = "loginForm" scope = "request" type = "action.LoginAction" parameter = "method"
attribute = "loginForm" input = "/login.jsp" validate = "true" >
<forward name="success" path="/success.jsp"></forward>
<forward name="error" path="/error.jsp"></forward>
</action>
</action-mappings>
<message-resources parameter="ApplicationResources" />
</struts-config>
login.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>JSP for LoginForm form</title>
</head>
<body>
<html:form action="/login?method=login">
用户名 : <html:text property="username"/><html:errors property="username"/><br/>
密 码 : <html:password property="userpass"/><html:errors property="userpass"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>
LoginActionpackage action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;import form.LoginForm;public class LoginAction extends Action{
public ActionForward login(ActionMapping actionmapping,ActionForm actionForm,
HttpServletRequest request,HttpServletResponse response){
DynaActionForm loginForm = (DynaActionForm)actionForm;
HttpSession session = request.getSession();
//解析请求参数
String username = (String)loginForm.get("username");
String userpass = (String)loginForm.get("userpass");
String actionpath = "error";
if("joe".equals(username) & "joe".equals(userpass)){
session.setAttribute("name", username);
actionpath = "success";
}
return actionmapping.findForward(actionpath);
}
}
提交用户名密码后跳到http://localhost:8080/logindemo01/login.do?method=login,但是结果一片空白
求解答?
LoginAction的:
DynaActionForm loginForm = (DynaActionForm)actionForm;
改为LoginForm loginForm=(ActionForm)actionForm;
这样试试看看
<html:form action="login.do"
用户名 : <html:text property="username"/><html:errors property="username"/><br/>
密 码 : <html:password property="userpass"/><html:errors property="userpass"/><br/>
<html:submit/><html:cancel/>
</html:form>
回4L:请问是把<input type=hidden name=method value=login/>放在
<html:form action="/login?method=login"></html:form>之中吗?这样试了也不行,请问还有什么办法吗?
package action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;import form.LoginForm;public class LoginAction extends DispatchAction{
//既然你说了要用DispatchAction,那么你这个action应该继承DispatchAction
public ActionForward login(ActionMapping actionmapping,ActionForm actionForm,
HttpServletRequest request,HttpServletResponse response){
LoginForm loginForm = (LoginForm)actionForm;
//你配置文件中用的是LoginForm,不是虚拟form
HttpSession session = request.getSession();
//解析请求参数
String username = (String)loginForm.get("username");
String userpass = (String)loginForm.get("userpass");
String actionpath = "error";
if("joe".equals(username) & "joe".equals(userpass)){
session.setAttribute("name", username);
actionpath = "success";
}
return actionmapping.findForward(actionpath);
}
}
如此如此,这般这般,就可以了!
请问 DynaActionForm loginForm = (DynaActionForm)actionForm;
这句代码怎么会错呢?我照着书上打的,书本写错了?