我做的是一个Struts框架的简单的测试。
首先贴一下错误信息
java.lang.NullPointerException
lee.LoginAction.execute(LoginAction.java:36)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:450)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:289)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:252)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
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:246)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:239)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
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:246)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:161)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:189)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:246)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:563)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
我觉的就是Action的问题。package lee;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;/**
 * Created with IntelliJ IDEA.
 * User: ssj
 * Date: 13-9-17
 * Time: 下午2:21
 * To change this template use File | Settings | File Templates.
 */
public class LoginAction extends ActionSupport {    private String username;
    private String password;    public String getUsername() {
        return username;
    }    public void setUsername(String username) {
        this.username = username;
    }    public String getPassword() {
        return password;
    }    public void setPassword(String password) {
        this.password = password;
    }    @Override
    public String execute() throws Exception {
        if (getUsername().equals("ssj")&&getPassword().equals("ssj"))
        {
            ActionContext.getContext().getSession()
                    .put("user",getUsername());
            return SUCCESS;
        }
        else
            return ERROR;
    }
}
然后是struts.xml<?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.custom.i18n.resources" value="mess"></constant>
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>    <package name="lee" extends="struts-default">
        <action name="login" class="lee.LoginAction">
            <result name="input">/login.jsp</result>
            <result name="error">/error.jsp</result>
            <result name="success">/welcome.jsp</result>
        </action>
    </package>
</struts>新手,大家帮着看看,strutsjsp

解决方案 »

  1.   

    getUsername 这个没有取到数据吧。你前台的jsp里面的数据没有传到后台,你debug 看下吧。
      

  2.   

    userName 或者 password 为空,数据没有传过来?,还有记得这样放
    "ssj".equals(userName))&&"ssj".equals(passWord)
      

  3.   

    <%@ page pageEncoding="UTF-8" contentType="text/html; charset=utf-8" %>
    <%@taglib prefix="s" uri="/struts-tags" %>
    <html>
      <head>
        <title><s:text name="loginPage"></s:text></title>
      </head>
      <body>
      <s:form action="login">
          <s:textfield name="username" key="user"></s:textfield>
          <s:textfield name="password" key="pass"></s:textfield>
          <s:submit key="login"></s:submit>
      </s:form>  </body>
    </html>
    这个是我的登录页面,你看看有什么问题
      

  4.   

    <%@ page pageEncoding="UTF-8" contentType="text/html; charset=utf-8" %>
    <%@taglib prefix="s" uri="/struts-tags" %>
    <html>
      <head>
        <title><s:text name="loginPage"></s:text></title>
      </head>
      <body>
      <s:form action="login">
          <s:textfield name="username" key="user"></s:textfield>
          <s:textfield name="password" key="pass"></s:textfield>
          <s:submit key="login"></s:submit>
      </s:form>  </body>
    </html>
    这个是我的登录页面,你看看有什么问题
    user和pass定义在mess.properties里面
    loginPage = \u767b\u5f55\u9875\u9762
    errorPage = \u9519\u8bef\u9875\u9762
    succPage = \u6210\u529f\u9875\u9762
    failTips = \u5bf9\u4e0d\u8d77\uff0c\u4f60\u4e0d\u80fd\u767b\u5f55\uff01
    succTips = \u6b22\u8fce\uff0c{0},\u4f60\u5df2\u7ecf\u767b\u5f55
    user = \u7528\u6237\u540d
    pass = \u5bc6\u7801
    login = \u767b\u5f55
      

  5.   

    你看下你jsp 生成最后的html 是不是  username、password  。/。你debug下
      

  6.   

    这个有什么用吗?用你的写法,getUserName.equals(userName)。如果getUserName为空怎么办,直接报空指针异常,而用楼上的则不会报空指针异常
      

  7.   

    找到问题了,我在Struts.xml里面写的URL是login.jsp,结果访问的时候用的地址是http://localhost:8080/login.action或者http://localhost:8080/login。被书上的图片误导了。在访问后的地址才是http://localhost:8080/login.action