struts2.0的Demo


微笑提前准备工作,需从网上下载struts-2.2.3.1-all.zip压缩包。

 

第一步:

     首先创建一个web项目(File-New-Web-Dynamic Web Project),名字为:struts2-examples

第二步:

     把从网上下载struts-2.2.3.1-all.zip压缩包里的lib下的asm-3.1.jar、asm-commons-3.1.jar、asm-tree-3.1.jar、commons-fileupload-1.2.2.jar、commons-io-2.0.1.jar

commons-lang-2.5.jar、freemarker-2.3.16.jar、javassist-3.11.0.GA.jar、ognl-3.0.1.jar、struts2-core-2.2.3.1.jar、xwork-core-2.2.3.1.jar拷贝到WEB-INF/lib下。

      右击项目名-properties-Java Build Path-Libraries-Add JARs-全选择刚刚lib下的jar包。我之前在网上查的几个包导入后,运行后,发现报错。所以,我又把struts-2.2.3.1-all.zip压缩包里struts2-blank项目里的包全拷贝过来的,就是上面的那几个包。顺便把web.xml也给拷贝过来。

第三步:

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>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>

</web-app>


web.xml里面有这样一段:<welcome-file>index.html</welcome-file>,这一步也很重要,一定要在WebContent目录下(与WEB-INF文件夹在同一级目录下)建一个index.html与之匹配,要不然,会出一些莫名其妙的错误。

第四步:

index.html内容如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
   
</head>

<body>
<p>Loading ...</p>
</body>
</html>


第五步:

  在src目录下,新建一个struts.xml(名字的拼写很重要,这个名字不能随便命名)文件,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "D:\struts-2.2.3.1\src\core\src\main\resources\struts-2.0.dtd">

<struts>

      <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="true" />
    <package name="default" namespace="/" extends="struts-default">
   
        <action name="Login" class="com.struts.action.LoginAction">
            <result name="error">/pages/error.jsp</result>
            <result name="success">/pages/success.jsp</result>
  
        </action>
    </package>

</struts>

"D:\struts-2.2.3.1\src\core\src\main\resources\struts-2.0.dtd"在头部有这样一句话,这是我把struts-2.0.dtd原来的路径换成我本地的了,原来的一直有警告,不过,我换成本地的还是有警告,不知道是为什么。。。这个struts-2.0.dtd 就是struts-2.2.3.1这个包里的,目录就是struts-2.2.3.1\src\core\src\main\resources\struts-2.0.dtd,你把struts-2.0.dtd这个文件放到自己本地后,把本地目录替换成我上面的那句话就行了。

   <package name="default" namespace="/" extends="struts-default">
   
        <action name="Login" class="com.struts.action.LoginAction">
            <result name="error">/pages/error.jsp</result>
            <result name="success">/pages/success.jsp</result>
  
        </action>
    </package>


这里的package里的name=“default"这个名字是随便给的,namespace="/"这个是固定的,extends="struts-default"好像也是固定的。

action里的name与下面的login.jsp里form里的action属性名要保持一致,class即为Action里的全路径,result 里的name="error",这里的error值与等会下面的LoginAction.java里的return后的值保持一致即可,即要跳转的页面啦。

第六步:

      现在,再在WebContent目录下新建一个文件夹pages,在此文件夹中存放jsp页面。我这里新建了三个jsp页面,即login.jsp、success.jsp、error.jsp.

分别如下所示:

login.jsp,这里可以用S标签来做,就几行就可以了,我写的比较繁杂了。

 

<%@ 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=utf-8">
<title>User Login</title>
</head>
<body>
	<form action="/struts2-examples/Login.action" method="post">

		<table align="left" width="50%" border="0" cellpadding="0"
			cellspacing="0">

			<tr>
				<td></td>
			</tr>
			<tr>

				<td height="30" bgcolor="" align="center" valign="middle">用户名:</td>
				<td align="left" height="30" valign="middle"><input
					style="width: 150px" type="text" name="username" value=""></input></td>

			</tr>


			<tr>
				<td height="30" bgcolor="" align="center" valign="middle">密 码:</td>
				<td align="left" height="30" valign="middle"><input
					style="width: 150px" type="password" name="password" value=""></input></td>
			</tr>

			<tr>
				<td align="right"><input type="submit" name="button" value="提交"></input></td>
			</tr>
		</table>
	</form>
</body>
</html>

<form action="/struts2-examples/Login.action" method="post">上面里的这段话很重要、很重要。我之前因为这路径,浪费了不少时间。“struts2-examples”即为项目名字,“/Login.action”与struts.xml里的action里的name属性要保持一致。刚刚在上面已提到。这里加上这句话,运行时即“http://localhost:8080/struts2-examples/Login.action”会以此地址来运行。

点击提交按钮后,若成功,则跳转到success.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=utf-8">
<title>login success</title>
</head>
<body>
<center>Login Success!!!</center>
</body>
</html>

点击提交按钮后,若失败,则跳转到error.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=utf-8">
<title>login error</title>
</head>
<body>
<center>login error!!!</center>
</body>
</html>


第七步:

   再在src目录下新建一个包,包名为com.struts.action,里面再新建一个类,类名为LoginAction.java,一定要继承“ActionSupport”

LoginAction.java代码如下:

package com.struts.action;

import com.opensymphony.xwork2.ActionSupport;

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

	public String execute() throws Exception {
		if (username.equalsIgnoreCase("zhangqin")
				&& password.equalsIgnoreCase("1314520")) {
			return "success";
		}
		return "error";

	}

}


这里return后的“success"与“error"即与struts.xml里的一定要保持一致。

提醒一下:在eclipse内部运行时,我明明修改了,可重启Tomcat后,还是没有变成我最新修改的,一直有缓存,而且清不掉。所以,最好到外面的浏览器去运行。

其实很简单哦,这是我自己手动搭建的。一开始老是出现一些莫名其妙的问题。

问题如下:

 包没有导全、index.html给丢了、login.jsp里的action路径写的有问题、等等。

这些错误都是因为自己对这个框架的不了解导致的,经过,这一折腾,我已经有点小明白了。

标记一下,以免以后过段时间自己又忘记。

吐舌头错误肯定没有的,因为这是我自己运行好的。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值