是一个关于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>

解决方案 »

  1.   

    关于"admin".equals(username)与username.equals("admin")
    前者是比较正规、正确的写法。而后且往往在某些情况下会报错:
    比如:username == null的时候。这个时候就会报空指针异常.
    至于跳转至失败页面,肯定是判断没能通过。
    估:你先将我上面所说的改正过来。
    然后再debug一下。
    在判断跳转前加上:
    System.out.println("username is:"+username + ";Password is:" + password);
    看看打出来的信息,再和你的判断一比较 就知道此次跳转是否正确了! 
      

  2.   

    loginActionForm loginform=new loginActionForm();
    这个不是这样的 
    改成这样的
    loginActionForm loginform=(loginActionForm) form;
      

  3.   

    用户:<input type="text" name="username"><br>
    改为:<html:text property="username">
    估计是值没取到,好久没做struts1的项目了,有点忘了,另外,
    你可以在if(username.equals("111")&&password.equals("111")){行打个断点,
    看看username和password的值是什么,
    要是不会打断点,就System。out。println(username + “---”password);
    你这样看看吧。
      

  4.   

    看了下代码,问题很大
    @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");
      }
      
    }
        
    }
      

  5.   

    @Override
    这个重写也要去掉。。