1.jsp页面<%@page language="java" import="java.util.*" pageEncoding="gbk" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
%>
<html>
  <head>
    <base href="<%=basePath%>"> 
    <title>登录页面</title>
<script type="text/javascript" language="javascript">
function cal(arg)
{
document.form1.operate.value=arg;
document.form1.submit();
}
</script>
  </head>
  
  <body>
    <form action="log.do" method="post" name="form1">
    <input type="hidden" name="operate">
      <table border="0">
        <tr>
          <td>用户名:</td>
          <td><input type="text" name="u.uName"></td>
        </tr>
        <tr>
          <td>密码:</td>
          <td><input type="password" name="u.uPass"></td>
        </tr>
        <tr>
          <td colspan="2" align="center">
          <input type="button" value=" 登录 " onClick="cal('doLogin')">
          <input type="reset" value=" 取消 ">
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>2.struts-config.xml:
<form-beans>
<form-bean name="calForm" type="y2.ssha.chap3.CalForm" />
<form-bean name="userDynaForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name="uName" type="java.lang.String"></form-property>
<form-property name="uPass" type="java.lang.String"></form-property>
</form-bean>
<form-bean name="logForm" type="y2.ssha.chap3.LogForm"></form-bean>
</form-beans><action name="logForm" path="/log" scope="request"
type="y2.ssha.chap3.LogAction" parameter="operate">
<forward name="login" path="/chap3/login.jsp" />
<forward name="success" path="/chap3/logSuccess.jsp" />
<forward name="fail" path="/chap3/logFail.jsp" />
</action>
3.LogAction:/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package y2.ssha.chap3;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 org.apache.struts.actions.DispatchAction;public class LogAction extends DispatchAction {
public ActionForward doLogin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LogForm userForm = (LogForm) form;
System.out.println(userForm.getU().getUName());
if (userForm.getU().getUName().equals("accp")
& userForm.getU().getUPass().equals("0000")) {
request.setAttribute("user", userForm.getU().getUName());
return mapping.findForward("success");
}
return mapping.findForward("fail");
}
}4.LogForm:/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package y2.ssha.chap3;import org.apache.struts.action.ActionForm;import y2.ssha.entity.User;public class LogForm extends ActionForm {
/**
 * 
 */
private static final long serialVersionUID = 1L;
private User u = new User(); public User getU() {
return u;
} public void setU(User u) {
this.u = u;
}}5.异常:
警告: Unhandled Exception thrown: class java.lang.NullPointerException
2009-11-9 13:49:00 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException

解决方案 »

  1.   

    jsp内
    <form action="log.do" method="post" name="form1">
    name不对
    应为
    <form action="log.do" method="post" name="logForm">
      

  2.   

    像这种nullPointException用debug一调,就知道哪里进行了空操作
      

  3.   

    空指针,Debug 排查~ 还有错误不全不知道哪里错
      

  4.   

    debug过了,错就错在,表单提交后,u.Name=null,u.Pass=null,
      

  5.   

    可是怎样不让表单提交的为null呢??
      

  6.   

    异常的全部信息:2009-11-9 14:40:13 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_10\bin;D:\apache-tomcat-5.5.17\bin
    2009-11-9 14:40:13 org.apache.coyote.http11.Http11BaseProtocol init
    信息: Initializing Coyote HTTP/1.1 on http-8181
    2009-11-9 14:40:13 org.apache.catalina.startup.Catalina load
    信息: Initialization processed in 1109 ms
    2009-11-9 14:40:14 org.apache.catalina.core.StandardService start
    信息: Starting service Catalina
    2009-11-9 14:40:14 org.apache.catalina.core.StandardEngine start
    信息: Starting Servlet Engine: Apache Tomcat/5.5.17
    2009-11-9 14:40:14 org.apache.catalina.core.StandardHost start
    信息: XML validation disabled
    2009-11-9 14:40:16 org.apache.catalina.startup.HostConfig deployDescriptor
    严重: Error deploying configuration descriptor store.xml
    2009-11-9 14:40:21 org.apache.coyote.http11.Http11BaseProtocol start
    信息: Starting Coyote HTTP/1.1 on http-8181
    2009-11-9 14:40:22 org.apache.jk.common.ChannelSocket init
    信息: JK: ajp13 listening on /0.0.0.0:8009
    2009-11-9 14:40:22 org.apache.jk.server.JkMain start
    信息: Jk running ID=0 time=0/94  config=null
    2009-11-9 14:40:22 org.apache.catalina.storeconfig.StoreLoader load
    信息: Find registry server-registry.xml at classpath resource
    2009-11-9 14:40:22 org.apache.catalina.startup.Catalina start
    信息: Server startup in 8610 ms
    null
    2009-11-9 14:41:07 org.apache.struts.action.RequestProcessor processException
    警告: Unhandled Exception thrown: class java.lang.NullPointerException
    2009-11-9 14:41:07 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet action threw exception
    java.lang.NullPointerException
    at y2.ssha.chap3.LogAction.doLogin(LogAction.java:20)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:619)
      

  7.   

    你的java文件中的Form 是ActionForm,而配置文件中的的Form确是DynaActionForm,看来你对那个struts的应用一点儿都不熟
      

  8.   

    把你的那个 user类 贴出来。
      

  9.   

    user类又改了一下
    package y2.ssha.entity;public class USER {
    // /////////////字段////////////
    private String uname;
    private String upass; // ////////////属性//////////////
    public String getUname() {
    return uname;
    } public void setUname(String uname) {
    this.uname = uname;
    } public String getUpass() {
    return upass;
    } public void setUpass(String upass) {
    this.upass = upass;
    } // ////////////构造函数////////////////
    public USER() { }
    public USER(String uname, String upass) {
    this.uname = uname;
    this.upass = upass;
    }}
    《form-beans》
    <form-beans>
    <form-bean name="calForm" type="y2.ssha.chap3.CalForm" />
    <form-bean name="userDynaForm"
    type="org.apache.struts.action.DynaActionForm">
    <form-property name="uName" type="java.lang.String"></form-property>
    <form-property name="uPass" type="java.lang.String"></form-property>
    </form-bean>

    <form-bean name="userlogForm" type="y2.ssha.chap3.UserLogForm"></form-bean>
    </form-beans>
      

  10.   

    我日,我说了半天,怎么你还没有弄明白啊,我说了,你配置的时候就直接写ActionForm,哎,你怎么不听劝了
      

  11.   

    Struts1.X 没有Struts2里面的OGNL表达式工能
    不能<input type="text" name="u.uName<input type="password" name="u.uPass>这样传值
    package y2.ssha.chap3;import org.apache.struts.action.ActionForm;import y2.ssha.entity.User;public class LogForm extends ActionForm {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private User u = new User();    public User getU() {
            return u;
        }    public void setU(User u) {
            this.u = u;
        }}
    里面按照11楼该
      

  12.   

              <td>用户名:</td>
              <td><input type="text" name="u.uName"></td>
            </tr>
            <tr>
              <td>密码:</td>
              <td><input type="password" name="u.uPass"></td>
            </tr>
    表单名字不对吧? U.?   改成uName和uPass看看
      

  13.   

    uname和uName在动态映射的时候取的是不同的方法。
    按11楼的肯定出现方法找不到异常.
      

  14.   

    诶,搞定了,
    出错原因是:
    1.struts-config.xml里面的内容是我手写的.
    <form-beans>
        <form-bean name="userForm" type="y2.ssha.chap3.UserForm" />
        </form-beans><action-mappings>
        <action
          attribute="userForm"
          input="/chap3/login.jsp"
          name="userForm"
          path="/userlog"
          type="y2.ssha.chap3.UserAction" scope="request" parameter="operate">
          <forward name="success" path="/chap3/logSuccess.jsp" />
          <forward name="fail" path="/chap3/logFail.jsp" />
        </action> </action-mappings>解决办法:.以添加struts组件的形式,添加ActionForm,Action(DispatchAction)
    2.问题解决,!!