页面代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="login" method="post" > <s:textfield name="username" label="姓名" /><br>
<s:password name="password" label="密码" /><br>
<s:submit name="submit" value="提交"/></s:form>
</body>
</html>DAO代码如下:
public class YuangongDAO {
public boolean checkLogin(String name, String password) {
Yuangong yuangong=null;
boolean flag = false;
String sql = "select * from yuangong where yg_name=? and yg_password=?";
try {
Connection connection = DBConn.getConnection();
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
yuangong = new Yuangong();
// 对用户对象属性赋值 yuangong.setYg_name(rs.getString("yg_name"));
yuangong.setYg_password(rs.getString("yg_password")); flag = true;
}
rs.close();
pstmt.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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=UTF-8">
<title>Insert title here</title>
</head>
<body>
<s:form action="login" method="post" > <s:textfield name="username" label="姓名" /><br>
<s:password name="password" label="密码" /><br>
<s:submit name="submit" value="提交"/></s:form>
</body>
</html>DAO代码如下:
public class YuangongDAO {
public boolean checkLogin(String name, String password) {
Yuangong yuangong=null;
boolean flag = false;
String sql = "select * from yuangong where yg_name=? and yg_password=?";
try {
Connection connection = DBConn.getConnection();
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
if(rs.next()) {
yuangong = new Yuangong();
// 对用户对象属性赋值 yuangong.setYg_name(rs.getString("yg_name"));
yuangong.setYg_password(rs.getString("yg_password")); flag = true;
}
rs.close();
pstmt.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
}
package edu.niit.shixun.bean;public class Yuangong implements java.io.Serializable {
private int yg_id; private String yg_name; private int bm_id; private int yg_phone; private int js_id; private int zz_id; private String yg_password;
// Constructors public Yuangong(){}
public Yuangong (int yg_id ,String yg_password, String yg_name , int bm_id ,int yg_phone, int js_id, int zz_id) {
this.yg_id = yg_id;
this.yg_name = yg_name;
this.bm_id = bm_id;
this.yg_phone = yg_phone;
this.js_id = js_id;
this.zz_id = zz_id;
this.yg_password=yg_password;
} public int getYg_id() {
return yg_id;
} public void setYg_id(int ygId) {
yg_id = ygId;
} public String getYg_name() {
return yg_name;
} public void setYg_name(String ygName) {
yg_name = ygName;
} public int getBm_id() {
return bm_id;
} public void setBm_id(int bmId) {
bm_id = bmId;
} public int getYg_phone() {
return yg_phone;
} public void setYg_phone(int ygPhone) {
yg_phone = ygPhone;
} public int getJs_id() {
return js_id;
} public void setJs_id(int jsId) {
js_id = jsId;
} public int getZz_id() {
return zz_id;
} public void setZz_id(int zzId) {
zz_id = zzId;
} public String getYg_password() {
return yg_password;
} public void setYg_password(String yg_password) {
this.yg_password = yg_password;
}
}
action代码如下:
package edu.niit.shixun.action;import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;import edu.niit.shixun.bean.Yuangong;
import edu.niit.shixun.dao.YuangongDAO;public class LoginAction extends ActionSupport implements ModelDriven{
@Override
public Object getModel() {
// TODO Auto-generated method stub
return yuangong;
} private Yuangong yuangong; @Override
public String execute() throws Exception {
YuangongDAO yuangongDAO=new YuangongDAO();
if(yuangongDAO.checkLogin(yuangong.getYg_name(), yuangong.getYg_password())){
return SUCCESS;
}else{
return INPUT;
}
} public Yuangong getYuangong() {
return yuangong;
} public void setYuangong(Yuangong yuangong) {
this.yuangong = yuangong;
}}
java.lang.NullPointerException
edu.niit.shixun.action.LoginAction.execute(LoginAction.java:25)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:255)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:192)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:510)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:662)
--------------------------------------------------------------------------------You are seeing this page because development mode is enabled. Development mode, or devMode, enables extra debugging behaviors and reports to assist developers. To disable this mode, set: struts.devMode=falsein your WEB-INF/classes/struts.properties file. 我是刚学的新手,求各位帮帮忙啊!!!
edu.niit.shixun.action.LoginAction.execute(LoginAction.java:25)
明显说你有地方为空了! 在仔细检查检查!攀登者IT技术交流贰群:168051867(500人);攀登者IT【Java】精英 216931633 ;欢迎你的加入进行技术探讨!
edu.niit.shixun.action.LoginAction.execute(LoginAction.java:25)
LoginAction.java:25,25行报空指针 ,仔细检查
@Override
public Object getModel() {
if(yuangong==null)yuangong=new Yuangong();
return yuangong;
}
@Override
public Object getModel() {
if(yuangong==null)yuangong=new Yuangong();
return yuangong;
}
才能得到值 。
很明显的空引用,说明 参数接收失败。check now~~~