是一个关于struts流程的简易程序
一个登录页面,收集登录信息到loginActionForm 由loginAction处理(单纯的equals) 成功到 login_success.jsp页面,失败到login_error.jsp页面 1 环境配置搭建的应该没问题,我用源代码导入测试过了
2 本菜鸟写的真的和源代码几乎一模一样啊,个人觉得取值,数据流向应该不存在问题吧,请高手看看
3 login.jsp 页面的form里 属性不用写 name吗? 如果写是用于什么的?
4 jsp页面上的contentType="text/html 属性有个取代的 import"util"什么的,是什么意思?
5 问题大概就在action的逻辑判断那一句了 :
if(username.equals("111")&&password.equals("111")) 用这样的会报很多的错
HTTP Status 500 - type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request. if("admin".equals(username) && "admin".equals(password)) 改用源代码的判断,不会出错,但是一直都是转向失败页面 用单纯的3>1等判断完全没问题,所以问题是页面取值,还是equals方法呢? 求高手指教!PS :不知道排版好不好,这么多东西麻烦各位了,新人在家实在没办法,积分也不多,请各位包含login.jsp 页面 <%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="login.do" method="post"> 用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录" >
</form>
</body>
</html>
loginActionForm.java package com.javass.struts;import org.apache.struts.action.ActionForm;public class loginActionForm extends ActionForm {
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;
}
}loginAction.java
package com.javass.struts;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;public class loginAction extends Action { @Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception { loginActionForm loginform=new loginActionForm();
String username=loginform.getUsername();
String password=loginform.getPassword();
if(username.equals("111")&&password.equals("111")){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}
struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.javass.struts.loginActionForm"></form-bean>
</form-beans>
<action-mappings>
<action path="/login"
type="com.javass.struts.loginAction"
name="loginForm"
scope="request"
>
<forward name="success" path="/login_success.jsp"></forward>
<forward name="error" path="/login_error.jsp"></forward>
</action>
</action-mappings>
</struts-config>
一个登录页面,收集登录信息到loginActionForm 由loginAction处理(单纯的equals) 成功到 login_success.jsp页面,失败到login_error.jsp页面 1 环境配置搭建的应该没问题,我用源代码导入测试过了
2 本菜鸟写的真的和源代码几乎一模一样啊,个人觉得取值,数据流向应该不存在问题吧,请高手看看
3 login.jsp 页面的form里 属性不用写 name吗? 如果写是用于什么的?
4 jsp页面上的contentType="text/html 属性有个取代的 import"util"什么的,是什么意思?
5 问题大概就在action的逻辑判断那一句了 :
if(username.equals("111")&&password.equals("111")) 用这样的会报很多的错
HTTP Status 500 - type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request. if("admin".equals(username) && "admin".equals(password)) 改用源代码的判断,不会出错,但是一直都是转向失败页面 用单纯的3>1等判断完全没问题,所以问题是页面取值,还是equals方法呢? 求高手指教!PS :不知道排版好不好,这么多东西麻烦各位了,新人在家实在没办法,积分也不多,请各位包含login.jsp 页面 <%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="login.do" method="post"> 用户:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录" >
</form>
</body>
</html>
loginActionForm.java package com.javass.struts;import org.apache.struts.action.ActionForm;public class loginActionForm extends ActionForm {
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;
}
}loginAction.java
package com.javass.struts;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;public class loginAction extends Action { @Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception { loginActionForm loginform=new loginActionForm();
String username=loginform.getUsername();
String password=loginform.getPassword();
if(username.equals("111")&&password.equals("111")){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}
struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.javass.struts.loginActionForm"></form-bean>
</form-beans>
<action-mappings>
<action path="/login"
type="com.javass.struts.loginAction"
name="loginForm"
scope="request"
>
<forward name="success" path="/login_success.jsp"></forward>
<forward name="error" path="/login_error.jsp"></forward>
</action>
</action-mappings>
</struts-config>
前者是比较正规、正确的写法。而后且往往在某些情况下会报错:
比如:username == null的时候。这个时候就会报空指针异常.
至于跳转至失败页面,肯定是判断没能通过。
估:你先将我上面所说的改正过来。
然后再debug一下。
在判断跳转前加上:
System.out.println("username is:"+username + ";Password is:" + password);
看看打出来的信息,再和你的判断一比较 就知道此次跳转是否正确了!
这个不是这样的
改成这样的
loginActionForm loginform=(loginActionForm) form;
改为:<html:text property="username">
估计是值没取到,好久没做struts1的项目了,有点忘了,另外,
你可以在if(username.equals("111")&&password.equals("111")){行打个断点,
看看username和password的值是什么,
要是不会打断点,就System。out。println(username + “---”password);
你这样看看吧。
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {loginActionForm loginform=new loginActionForm();不能new,这样的话就是空对想了,你下面又用get取值并且赋值给username,这里就已经是空指针异常了,改成loginActionForm loginform=(loginActionForm) form 就没有问题了。
String username=loginform.getUsername();
String password=loginform.getPassword();
if(username.equals("111")&&password.equals("111")){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}
这个重写也要去掉。。