Struts2第一个Demo求指点

疯狂的茶杯盖 2014-07-23 02:22:25
本人初学Struts2,按照书上的示例自己写了一个Demo。配置文件及路径如下:

login.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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>Login</title>
</head>
<body>
<form action= "<%=request.getContextPath() %>/login.action" method= "get">
User Name: <input type= "text" name= "username" />
Password: <input type= "password" name= "password" />
<input type= "submit" value= "Login" />
</form>
</body>
</html>

LoginAction.java:
package Struts2Test;

import com.opensymphony.xwork2.Action;

public class LoginAction implements Action{
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;
}

public String execute() throws Exception{
System.out.println( "here" );
if( username.equals( "Struts2" ) ){
return "LoginSuccess";
}else{
return "LoginFailure";
}
}
}

web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" 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">

<display-name>Struts Blank</display-name>

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

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

</web-app>

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>

<package name="default" namespace="/" extends="struts-default">

<action name="login" class= "Struts2Test.LoginAction">
<result name= "LoginSuccess">/success.jsp</result>
<result name= "LoginFailure" >/failure.jsp</result>
</action>
</package>

</struts>



求巨师指点。
话说Java开发跟C、C++开发在调试方面还是很不一样。用Struts2时我根本不知道如何动手调试啊。
...全文
223 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhen3416 2014-07-26
  • 打赏
  • 举报
回复
对于web。xml配置和struts.xml配置我也不太懂,不知道怎么映射的
疯狂的茶杯盖 2014-07-23
  • 打赏
  • 举报
回复
最终解决了问题。在1F的基础上修改两个地方: 1、从Struts2的Struts2-blank示例中复制出所有的lib下的包,并导入到自己的项目中。 2、将项目的web.xml从WebContent移到WebContent/WEB-INF下。
疯狂的茶杯盖 2014-07-23
  • 打赏
  • 举报
回复
我晕,包没导入齐全!



现在程序虽然还是有错,但是总算可以找到action了
疯狂的茶杯盖 2014-07-23
  • 打赏
  • 举报
回复
多谢大家帮忙,但是程序仍然跑不起来。 我试过网上许多Struts2入门的DEMO,在我这里都同一个现象,就是找不到action。 但是Struts2自带的struts-blank是可以跑起来的。 所以我打算仔细分析一下struts-blank的代码。 谢谢大家了!
点滴寸土 2014-07-23
  • 打赏
  • 举报
回复
web.xml 位置不对,应该放在web-inf 下
hooo 2014-07-23
  • 打赏
  • 举报
回复
有可能是struts.xml位置有问题吧,看一下发布后的目录。。struts.xml是不是在WEB-INF\classes下面
m207248 2014-07-23
  • 打赏
  • 举报
回复
鼠标在项目名上右击选择properties,进入properties页面里应该有个tomcat,在那里面配置一下 上面一个框填你发布的名称,可以是同项目名,也可以是任意的,比如:Test 底下框里填:/WebContent 确认后,启动tomcat服务器 浏览器输入:http://localhost:8080/Test/login.jsp 记忆不是太深了
小灯光环 2014-07-23
  • 打赏
  • 举报
回复
引用 8 楼 xuzhigang_China 的回复:
[quote=引用 4 楼 wlwlwlwl015 的回复:] [quote=引用 3 楼 xuzhigang_China 的回复:] [quote=引用 2 楼 wlwlwlwl015 的回复:] 好像看错了,路径对着呢,你改改以下几个地方,试试: 1. <form action= "<%=request.getContextPath() %>/login.action" method= "post"> 红色的去掉,改成post请求。 2. public String username;     public String password; 换成public,get/set方法都去掉。 试一试。
谢谢! 按照你说的改了,但是故障仍旧啊! 另外能请教一下如何来调试用Java Web框架开发的程序呢? 还有,我用的Eclipse虽然每次在改过代码后都clean一下,但是貌似还是有缓存未清空的现象,请问这个是什么原因? 非常感谢![/quote] 和VisualStudio差不多啊,你可以在代码里打断点,然后run debug server 就行了~ clean没有必要~ 服务器端代码每次运行都会重新编译~ 你留个邮箱我给你发个标准的struts2的demo。你照着看一下。 你有很多写的不规范的地方。[/quote] 已收到邮件,非常感谢! 导入Eclipse后,jsp文件提示有错误,我估计是编码不一致的原因。但是运行之后是可以找到Action的,只是result转向貌似没找到,这个应该也是编码不一致的原因。然后我clean了一次,又关闭并重新启动了Eclipse,这个项目居然不能正常运行了,连action都找不到了! 第一次写JavaWeb项目就遇到这么奇怪的问题啊!![/quote] 第一个java web项目吗?建议你先了解一下java web项目的服务器端的结构,部署方法等等,我看你的页面在WEB-INF下,你的路径确配置的 <result name= "LoginSuccess">/success.jsp</result>,所以是不对的,你要这样写: <result name= "LoginSuccess">/WEB-INF/success.jsp</result>
疯狂的茶杯盖 2014-07-23
  • 打赏
  • 举报
回复
引用 4 楼 wlwlwlwl015 的回复:
[quote=引用 3 楼 xuzhigang_China 的回复:] [quote=引用 2 楼 wlwlwlwl015 的回复:] 好像看错了,路径对着呢,你改改以下几个地方,试试: 1. <form action= "<%=request.getContextPath() %>/login.action" method= "post"> 红色的去掉,改成post请求。 2. public String username;     public String password; 换成public,get/set方法都去掉。 试一试。
谢谢! 按照你说的改了,但是故障仍旧啊! 另外能请教一下如何来调试用Java Web框架开发的程序呢? 还有,我用的Eclipse虽然每次在改过代码后都clean一下,但是貌似还是有缓存未清空的现象,请问这个是什么原因? 非常感谢![/quote] 和VisualStudio差不多啊,你可以在代码里打断点,然后run debug server 就行了~ clean没有必要~ 服务器端代码每次运行都会重新编译~ 你留个邮箱我给你发个标准的struts2的demo。你照着看一下。 你有很多写的不规范的地方。[/quote] 已收到邮件,非常感谢! 导入Eclipse后,jsp文件提示有错误,我估计是编码不一致的原因。但是运行之后是可以找到Action的,只是result转向貌似没找到,这个应该也是编码不一致的原因。然后我clean了一次,又关闭并重新启动了Eclipse,这个项目居然不能正常运行了,连action都找不到了! 第一次写JavaWeb项目就遇到这么奇怪的问题啊!!
疯狂的茶杯盖 2014-07-23
  • 打赏
  • 举报
回复
引用 6 楼 m207248 的回复:
Eclipse项目要手动发布的,愚见。。
本人新手,第一次用Java,以前做C、C++的。能再详细一点吗?谢谢!
m207248 2014-07-23
  • 打赏
  • 举报
回复
Eclipse项目要手动发布的,愚见。。
疯狂的茶杯盖 2014-07-23
  • 打赏
  • 举报
回复
引用 4 楼 wlwlwlwl015 的回复:
[quote=引用 3 楼 xuzhigang_China 的回复:] [quote=引用 2 楼 wlwlwlwl015 的回复:] 好像看错了,路径对着呢,你改改以下几个地方,试试: 1. <form action= "<%=request.getContextPath() %>/login.action" method= "post"> 红色的去掉,改成post请求。 2. public String username;     public String password; 换成public,get/set方法都去掉。 试一试。
谢谢! 按照你说的改了,但是故障仍旧啊! 另外能请教一下如何来调试用Java Web框架开发的程序呢? 还有,我用的Eclipse虽然每次在改过代码后都clean一下,但是貌似还是有缓存未清空的现象,请问这个是什么原因? 非常感谢![/quote] 和VisualStudio差不多啊,你可以在代码里打断点,然后run debug server 就行了~ clean没有必要~ 服务器端代码每次运行都会重新编译~ 你留个邮箱我给你发个标准的struts2的demo。你照着看一下。 你有很多写的不规范的地方。[/quote] 这样啊,谢谢哦! 952628593@qq.com
小灯光环 2014-07-23
  • 打赏
  • 举报
回复
引用 3 楼 xuzhigang_China 的回复:
[quote=引用 2 楼 wlwlwlwl015 的回复:] 好像看错了,路径对着呢,你改改以下几个地方,试试: 1. <form action= "<%=request.getContextPath() %>/login.action" method= "post"> 红色的去掉,改成post请求。 2. public String username;     public String password; 换成public,get/set方法都去掉。 试一试。
谢谢! 按照你说的改了,但是故障仍旧啊! 另外能请教一下如何来调试用Java Web框架开发的程序呢? 还有,我用的Eclipse虽然每次在改过代码后都clean一下,但是貌似还是有缓存未清空的现象,请问这个是什么原因? 非常感谢![/quote] 和VisualStudio差不多啊,你可以在代码里打断点,然后run debug server 就行了~ clean没有必要~ 服务器端代码每次运行都会重新编译~ 你留个邮箱我给你发个标准的struts2的demo。你照着看一下。 你有很多写的不规范的地方。
疯狂的茶杯盖 2014-07-23
  • 打赏
  • 举报
回复
引用 2 楼 wlwlwlwl015 的回复:
好像看错了,路径对着呢,你改改以下几个地方,试试: 1. <form action= "<%=request.getContextPath() %>/login.action" method= "post"> 红色的去掉,改成post请求。 2. public String username;     public String password; 换成public,get/set方法都去掉。 试一试。
谢谢! 按照你说的改了,但是故障仍旧啊! 另外能请教一下如何来调试用Java Web框架开发的程序呢? 还有,我用的Eclipse虽然每次在改过代码后都clean一下,但是貌似还是有缓存未清空的现象,请问这个是什么原因? 非常感谢!
小灯光环 2014-07-23
  • 打赏
  • 举报
回复
好像看错了,路径对着呢,你改改以下几个地方,试试: 1. <form action= "<%=request.getContextPath() %>/login.action" method= "post"> 红色的去掉,改成post请求。 2. public String username;     public String password; 换成public,get/set方法都去掉。 试一试。
小灯光环 2014-07-23
  • 打赏
  • 举报
回复
struts.xml要放在src下,你好像放在包下面了,改一下试试。

81,092

社区成员

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

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