struts2登录操作报错,菜鸟求大神啊

qq_37469229 2017-10-18 04:26:54
严重: Exception occurred during processing request: null
java.lang.NullPointerException
at cn.itcast.user.web.action.UserAction.login(UserAction.java:28)
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 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:446)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:285)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:544)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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(Thread.java:619)


这是代码
public class UserService {
// 登录操作
public User login(String logonName, String logonPwd) throws SQLException {
return new UserDao().findUserByNameAndPwd(logonName, logonPwd);
}



}


public class UserDao {
// 登录
public User findUserByNameAndPwd(String logonName, String logonPwd)
throws SQLException {

String sql = "select * from s_user where logonName=? and logonPwd=?";

QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
return runner.query(sql, new BeanHandler<User>(User.class), logonName,
logonPwd);
}



}


public class UserAction extends ActionSupport implements ModelDriven<User>{

private User user;
public User getModel() {

return user;
}

public String login() {

// 调用service中登录方法.
UserService service = new UserService();

try {
user = service.login(user.getLogonName(), user.getLogonPwd());
if (user == null) {
this.addActionError("用户名或密码错误");
return Action.LOGIN;
}
ServletActionContext.getRequest().getSession()
.setAttribute("user", user);
} catch (SQLException e) {
e.printStackTrace();
// throw new LoginException();
this.addActionError("登录失败");
return Action.LOGIN;
}

return "SUCCESS";
}

}

配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>


<constant name="struts.ui.theme" value="simple"></constant>
<package name="default" namespace="/" extends="struts-default">

<global-results>
<result name="login">/login/login.jsp</result>
</global-results>

<action name="user_*" class="cn.itcast.user.web.action.UserAction"
method="{1}">
<result>/login/home.jsp</result>
<result name="input">/login/login.jsp</result>

</action>
</package>
</struts>

打断点是调用service时出错,是没有注入吗,但是看代码找不到原因啊
...全文
202 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37469229 2017-10-18
  • 打赏
  • 举报
回复
<%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <script type="text/javascript"> function ini(){ document.form1.logonName.focus(); } </script> <html> <head> <meta http-equiv="Content-Language" content="zh-cn"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> <link href="${pageContext.request.contextPath}/css/Style.css" rel="stylesheet" type="text/css"> </head> <body onload="ini()"> <table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td align="center"> <table width="452" height="290" border="0" cellpadding="0" cellspacing="0"> <tr> <td bgcolor="#FFFFFF"> <table width="452" height="290" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="74"> <img src="${pageContext.request.contextPath}/images/logintitle.gif"> </td> </tr> <tr> <td align="center" valign="bottom" background="${pageContext.request.contextPath}/images/loginbg.gif"> <s:form id="loginAction_home" name="form1" action="user_login" namespace="/" target="_top" method="post" theme="simple"> <table border="0" align="center" cellpadding="2" cellspacing="0"> <tr align="center"> <td height="30" colspan="2" style="border-bottom: 1px dotted #cccccc"> <strong style="font-size: 14px;">请登录</strong> </td> </tr> <tr align="center"> <td height="30" colspan="2" style="border-bottom: 1px dotted #cccccc"> <s:actionerror/> <s:fielderror/> </td> </tr> <tr> <td height="30" nowrap> <font color="000F60"><strong>用户名:</strong> </font> </td> <td> <s:textfield name="logonName" id="logonName" cssClass="text" cssStyle="width: 160px;"/> </td> </tr> <tr> <td height="30" nowrap> <strong><font color="000F60">密码: </font> </strong> </td> <td> <s:password name="logonPwd" id="logonPwd" showPassword="true" cssClass="text" cssStyle="width: 160px;"/> </td> </tr> <tr> <td height="30" nowrap colspan="2"> <strong><font color="red"></font> </strong> </td> </tr> <tr> <td height="30"> </td> <td> <s:submit name="submit" value="登录" cssClass="buttoninput"/> <s:reset name="reset" value="取消" cssClass="buttoninput"/> </td> </tr> </table> </s:form> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="30" align="center"> </td> </tr> <tr> <td height="23" align="center"></td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </td> </tr> </table> </body> </html> 登录页面也贴上吧

61,112

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧