struts2.0的Demo

来源:互联网 发布:二战网络射击游戏 编辑:程序博客网 时间:2024/05/17 03:19


微笑提前准备工作,需从网上下载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"><inputstyle="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"><inputstyle="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路径写的有问题、等等。

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

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

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