页面代码如下:
<%@ 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;
}
}

解决方案 »

  1.   

    bean代码如下:
    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;
    }}
      

  2.   

    出现错误如下:
    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. 我是刚学的新手,求各位帮帮忙啊!!!
      

  3.   

    在action和dao里面设置断点,重点查看,name和password这两个参数有没有穿到后台以及相应的方法里面,debug一下
      

  4.   

    java.lang.NullPointerException 
      edu.niit.shixun.action.LoginAction.execute(LoginAction.java:25)  
    明显说你有地方为空了!  在仔细检查检查!攀登者IT技术交流贰群:168051867(500人);攀登者IT【Java】精英 216931633 ;欢迎你的加入进行技术探讨!
      

  5.   

    java.lang.NullPointerException  
      edu.niit.shixun.action.LoginAction.execute(LoginAction.java:25)   
    LoginAction.java:25,25行报空指针 ,仔细检查
      

  6.   

    在以下代码加上红色部分
    @Override
    public Object getModel() {
    if(yuangong==null)yuangong=new Yuangong();
    return yuangong;
    }
      

  7.   


    @Override
    public Object getModel() {
    if(yuangong==null)yuangong=new Yuangong();
    return yuangong;
    }
      

  8.   

    form 那边用的 name="yuangong.name" 和 "yuangong.password" 了么?
      

  9.   

    代码贴的太乱,你还能先从ACTION贴起啊 。  JSP页面里的输入框的name  用action里类的别名.属性名
    才能得到值 。 
      

  10.   

    11楼正解,姓名和密码输入框那里的name要用yonggong.username和yonggong.password
      

  11.   

    11楼正解,姓名和密码输入框那里的name要用yonggong.username和yonggong.password
      

  12.   

     我已经implements ModelDriven ,所以就应该不需要用yuangong.name和yuangong.password了吧
      

  13.   

    楼主 你的  YuangongDAO 这个方法没写接口 然后在struts里面和applicationContext.xml配置 就可以了
      

  14.   

    execute(LoginAction.java:25)   
    很明显的空引用,说明 参数接收失败。check now~~~