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
<%@ 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
<form action="log.do" method="post" name="form1">
name不对
应为
<form action="log.do" method="post" name="logForm">
信息: 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)
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>
不能<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楼该
<td><input type="text" name="u.uName"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="u.uPass"></td>
</tr>
表单名字不对吧? U.? 改成uName和uPass看看
按11楼的肯定出现方法找不到异常.
出错原因是:
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.问题解决,!!