程序采用struts1+spring2.5+ibatis
就完成一个简单的用户登录功能
运行时jsp页面提交的action路径老是找不到
我看不出哪里配制有问题
求高手帮忙运行结果:
HTTP Status 404 - /loginAction--------------------------------------------------------------------------------type Status reportmessage /loginActiondescription The requested resource (/loginAction) is not available.
--------------------------------------------------------------------------------Apache Tomcat/6.0.14jsp页面核心代码:
<form name="loginForm" action="/loginAction" method="post" OnSubmit="return mycheck()">
<table>
<tr><td>用户名:</td><td width="100"><input name="userName" type="text"/></td></tr>
<tr><td>密 码:</td><td width="100"><input name="password" type="password"/></td></tr>
<tr><td height="20" align="center" rowspan="2"><input type="submit" name="Submit" value=" 登录 " Onclick="javascript:return(mycheck());"></td></tr>
</table>
</form>
web.xml核心配制
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
spring核心配制
<bean name="/loginAction" class="com.lee.action.LoginAciton">
<property name="loginDao">
<ref bean="loginDAO"/>
</property>
</bean>
<bean id="loginDAO" class="com.lee.dao.LoginDAOImpl">
<property name="sqlMapClient">
<ref bean="sqlMapClient"/>
</property>struts核心配制
<form-beans>
<form-bean name="loginForm" type="com.lee.form.LoginForm"></form-bean>
</form-beans> <action-mappings>
<!--登录信息-->
<action path="/loginAction" attribute="loginForm" input="login.jsp" type="org.springframework.web.struts.DelegatingActionProxy" validate="false" scope="request">
<forward name="success" path="/loginsucc.jsp" redirect="false"/>
<forward name="fail" path="/fail.jsp" redirect="false"/>
</action>
</action-mappings>
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
求解
就完成一个简单的用户登录功能
运行时jsp页面提交的action路径老是找不到
我看不出哪里配制有问题
求高手帮忙运行结果:
HTTP Status 404 - /loginAction--------------------------------------------------------------------------------type Status reportmessage /loginActiondescription The requested resource (/loginAction) is not available.
--------------------------------------------------------------------------------Apache Tomcat/6.0.14jsp页面核心代码:
<form name="loginForm" action="/loginAction" method="post" OnSubmit="return mycheck()">
<table>
<tr><td>用户名:</td><td width="100"><input name="userName" type="text"/></td></tr>
<tr><td>密 码:</td><td width="100"><input name="password" type="password"/></td></tr>
<tr><td height="20" align="center" rowspan="2"><input type="submit" name="Submit" value=" 登录 " Onclick="javascript:return(mycheck());"></td></tr>
</table>
</form>
web.xml核心配制
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
spring核心配制
<bean name="/loginAction" class="com.lee.action.LoginAciton">
<property name="loginDao">
<ref bean="loginDAO"/>
</property>
</bean>
<bean id="loginDAO" class="com.lee.dao.LoginDAOImpl">
<property name="sqlMapClient">
<ref bean="sqlMapClient"/>
</property>struts核心配制
<form-beans>
<form-bean name="loginForm" type="com.lee.form.LoginForm"></form-bean>
</form-beans> <action-mappings>
<!--登录信息-->
<action path="/loginAction" attribute="loginForm" input="login.jsp" type="org.springframework.web.struts.DelegatingActionProxy" validate="false" scope="request">
<forward name="success" path="/loginsucc.jsp" redirect="false"/>
<forward name="fail" path="/fail.jsp" redirect="false"/>
</action>
</action-mappings>
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
求解
/loginAction 当然访问不了改为/loginAction.do才对
比如写个静态的html看看能访问不, 不是404不。
改成/loginAction.do后运行结果:
HTTP Status 404 - /loginAction.do--------------------------------------------------------------------------------type Status reportmessage /loginAction.dodescription The requested resource (/loginAction.do) is not available.
--------------------------------------------------------------------------------Apache Tomcat/6.0.14
跟提交应该没关系吧
后台将用户名和密码封装成form了么
现在的问题是提示路径找不到
<form name="loginForm" action="loginAction" method="post" OnSubmit="return mycheck()">
<table>
<tr><td>用户名:</td><td width="100"><input name="userName" type="text"/></td></tr>
<tr><td>密 码:</td><td width="100"><input name="password" type="password"/></td></tr>
<tr><td height="20" align="center" rowspan="2"><input type="submit" name="Submit" value=" 登录 " Onclick="return mycheck()"></td></tr>
</table>
</form>也就是提交的action里的"/"去掉了
错误发生变化:HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause java.lang.NullPointerException
com.lee.action.LoginAciton.execute(LoginAciton.java:44)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
后台:
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.lee.action.LoginAciton.execute(LoginAciton.java:44)
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:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)求解
at com.lee.action.LoginAciton.execute(LoginAciton.java:44)空指针异常,有啥求解的,自己研究下 LoginAciton.java 的第44行代码,使用了什么可能为null的变量。
com.lee.action.LoginAciton.execute(LoginAciton.java:44)
说明LoginAciton第44行有使用了空指针。你看看,看不明白可以直接把LoginAciton.java的全部代码贴上来。
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm lgForm = (LoginForm) form;
ActionErrors errors = new ActionErrors();
ActionForward forward = new ActionForward(); String username = lgForm.getFormusername();
String password = lgForm.getFormpassword(); // invalidate the original session if exists
HttpSession session = request.getSession(true);
Mana mana;
mana = loginDao.queryMana(username, password); // create a new session for the user
request.setAttribute("getuser", mana);
return mapping.findForward("success");
}网上搜的有的说是如果有些bean没有注入就会出现空指针
后台提示String username = lgForm.getFormusername();运行出错
我想请问,LoginForm需要注入吗?
formbean 中属性要写成 userName吧 你的是formusername,接受得到吗