struts2 的简单登录项目--2

an8695001 2011-08-04 04:34:24
在浏览器中输入http://localhost:8080/ch03_1/login2.jsp能进入登录页面,但是在表单中输入用户名和密码后,就出现http500错误:

HTTP Status 500 -

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:515)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)


root cause

java.lang.NullPointerException
org.sunxin.struts2.ch03.action.way1.LoginAction2.execute(LoginAction2.java:40)
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:585)

................



User.java内容

package org.sunxin.struts2.ch03.model;

import java.io.Serializable;

public class User implements Serializable {

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;
}

}


LoginAction2.java内容:
package org.sunxin.struts2.ch03.action.way1;

import java.util.Map;
import org.sunxin.struts2.ch03.model.User;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.Action;

public class LoginAction2 implements Action, RequestAware, SessionAware,
ApplicationAware {



private Map request;
private Map session;
private Map application;

private User user;

public void setUser(User user)
{
this.user=user;
}

public User getUser()
{
return user;
}




public String execute() throws Exception {

if(user.getUsername().equals("anweipeng")&&user.getPassword().equals("123"))
{
request.put("greeting","疾风");
session.put("user", user);

Integer count=(Integer)application.get("counter");
if(count==null)
count=1;
else
count++;

application.put("counter",count);

return SUCCESS;
}

else
return ERROR;
}

public void setApplication(Map arg0) {

this.application=application;

}

public void setSession(Map arg0) {


this.session=session;
}

public void setRequest(Map arg0) {
this.request=request;


}

}


login2.jsp内容:

<%@ page language="java" contentType="text/html; charset=gbk" %>


<html>
<head>
<title>登录页面</title>


</head>

<body>
<form action="login2.action" method="post">
<table align="center">
<caption><h3> 用户登录</h3></caption>
<tr>
<td>用户名:<input type="text" name="user.username" /> </td>
</tr>


<tr>
<td> 密码:<input type="text" name="user.password" /> </td>
</tr>

<tr align="center">
<td clospan="2"><input type="submit" value="登录" />
<input type="reset" value="重填" />
</td>
</tr>

</table>
</form>

</body>

</html>


success.jsp内容
<%@ page language="java" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h3><s:property value="user.username" />,欢迎您登录程序员之家网站。 <br>
${sessionScope.user.username},${requestScope.greeting}。
<br>
本站的访问量是:${applicationScope.counter }



</h3>
</body>
</html>


struts.xml内容

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

<struts>
<package name="default" extends="struts-default">
<action name="login" class="org.sunxin.struts2.ch03.action.LoginAction">
<result>/success.jsp</result>
<result name="error">/error.jsp</result>
</action>

<action name="login1" class="org.sunxin.struts2.ch03.action.way1.LoginAction1">
<result>/success.jsp</result>
<result name="error">/error.jsp</result>
</action>

<action name="login2" class="org.sunxin.struts2.ch03.action.way1.LoginAction2">
<result>/success.jsp</result>
<result name="error">/error.jsp</result>
</action>

</package>
</struts>

web.xml内容

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


</web-app>


...全文
215 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
静昕菲武 2011-08-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 p_rince 的回复:]

Java code

public class LoginAction2 extends ActionSupport, RequestAware, SessionAware,
[/Quote]

+1
an8695001 2011-08-04
  • 打赏
  • 举报
回复
上面两个都不行,那应该怎么改呀?谢谢!!
softroad 2011-08-04
  • 打赏
  • 举报
回复
org.sunxin.struts2.ch03.action.way1.LoginAction2.execute(LoginAction2.java:40)

LoginAction2.java:40空指针了,看啥值么拿到
shawn.bug 2011-08-04
  • 打赏
  • 举报
回复

public class LoginAction2 extends ActionSupport, RequestAware, SessionAware,
皮皮 2011-08-04
  • 打赏
  • 举报
回复
让你的action extends ActionSupport这个。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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