struts2入门-第一个例子==》第一个struts2实例——HelloWorld==》Struts2.0搭建和简单实例==>写一个Steuts2的经典入门案例,做了一个登陆程序作为入门例子

来源:互联网 发布:4月进出口数据 编辑:程序博客网 时间:2024/04/30 06:48

struts2入门

struts2入门-第一个例子==》第一个struts2实例——HelloWorld==》Struts2.0搭建和简单实例==>写一个Steuts2的经典入门案例,做了一个登陆程序作为入门例子

struts2入门-第一个例子

1.从apache官网下载struts2(v2.2.1)的压缩文件,解压缩

2.打开myeclipse(v8.6),将struts2解压缩后lib下的ongl,strtus2-core,xwork-core,commons-logging,freemaker,javassist(该包需要另外下载,老版本里不需要)这六个必须包导入

在struts2(v2.2.3.1)除了上面包外还需导入commons-io,commons-lang,commons-fileupload

3.配置web.xml(WEB-INF下)

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"     xmlns="http://java.sun.com/xml/ns/javaee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <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.jsp</welcome-file>  </welcome-file-list></web-app>

老版本中用的过滤器是Dispatch类

4.编写用户登录表单

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'index.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="This is my page">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->  </head>    <body>   <form action="Login" method="post">      <Table>        <Tr>            <td>用户名:</Td>            <td><input type="text" name="username" /></Td>        </Tr>        <Tr>            <td>密码:</Td>            <td><input type="password" name="password" /></Td>        </Tr>        <Tr>            <td><input type="submit" name="submit" value="提交"/></Td>            <td><input type="reset" name="reset" value="重置"/></Td>        </Tr>    </Table>       </form>  </body></html>

5.编写LoginAction.java

package com.struts2.action;public class LoginAction {    private String username;    private String password;        public String execute() throws Exception    {        if(this.getUsername().equals("tom")&&this.getPassword().equals("111111")){            return "success";        }else{            return "error" ;        }    }    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;    }            }

6.配置strtus.xml(src下)

<?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="strutsqs"  extends="struts-default">        <action name="Login" class="com.struts2.action.LoginAction">            <result name="success">/welcome.jsp</result>            <result name="error">/error.jsp</result>        </action>    </package></struts>

7.结果页面就一句话,就不写了

第一个struts2实例——HelloWorld

内容提要:本文以一个“Hello World”的简单例子,开始struts2之旅。  

开发环境:eclipse3.5+jdk6.0+tomcat7.0+struts2

项目目录结构:

详细步骤:

1、打开 Eclipse,新建 Dynamic Web Project,打上项目名struts2,配置Target runtime选择tomcat ,然后直接点 Finish。

2、下载struts2包,我的版本是struts-2.3.8-all,解压,打开lib文件夹,里面都是jar文件,全部选中,复制。

回到 Eclipse,项目下的WebContent-->WEB-INF-->lib目录,粘贴。

3、在 WEB-INF 目录下,新建一个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>
复制代码

3、在Java Resources -->src目录下新建一个Package,包名为hello,然后在包里新建一个class,文件名为tohello.java,代码如下:

复制代码
package hello;import com.opensymphony.xwork2.Action;public class tohello {     private String message;     public String getMessage()      {          return message;     }     public void setMessage(String message)      {          this.message = message;     }     public String execute()     {         message="go to hello.jsp ";          return Action.SUCCESS;     }}
复制代码

4、在Java Resources -->src目录下新建一个xml文件,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="hello" extends="struts-default">   <action name="GO" class="hello.tohello">    <result> /Helloworld.jsp </result>   </action></package></struts>
复制代码

5、在WebContent目录中新建jsp文件,Helloworld.jsp代码如下:

复制代码
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"    pageEncoding="ISO-8859-1"%><!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>${message}<br/>Hello world !</body></html>
复制代码

6、启动Tomcat Server,打开浏览器,输入http://localhost:8080/struts2/GO.action 或者http://localhost:8080/struts2/GO,回车,则跳转到 Helloworld.jsp。 

 Struts2.0搭建和简单实例Struts2.0搭建和简单实例

       这两天在简单翻了翻Struts2.0的东西,写个方面大家上手的配置心得,和简单的实例。其目的有二:一、为了大家学习起来比较方面;二、自己日后使用的时候这也是个最最简单的参考,希望大家喜欢,有兴趣的朋友可以一起来交流,大加共同学习。
       以前是过Struts1.0的版本,听说Struts2.0是基于WebWork的内核开发的,所以就玩了次试试,感觉使用起来十分方面。
       本编文章里面我主要说两个部分:一是Struts2.0的配置;二是简单的HelloWorld跳转实例。
       一、Struts2.0的配置,主要分三个步骤:
       1首先加载Struts2.0所需的jar包。这里说明一下,我在网上下载的是struts-2.1.8.1版本。
WEB-INF文件夹下创建一个lib文件夹,里面放Struts2.0所需的jar包,主要放的jar
 commons-logging-1.1.jar
 freemarker-2.3.8.jar
 ognl-2.6.11.jar
 struts2-core-2.0.8.jar
 xwork-2.0.3.jar
commons-fileupload-1.2.1.jar
这里需要说明一下,在我们看到的Struts2.0学习手册里面没有说要加载commons-fileupload-1.2.1.jar这个jar包,这里我补充一下,一定要加上,否则会报错,其报错内容为“ [Dispatcher] Dispatcher initialization failed Unable to load configuration. 
       2 配置web.xml文件。
在我们的项目里面,WEB-INF文件夹里面不是有个web.xml吗?打开他,新加“filter”和“filter-mapping”节点。我这里的web.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
       id="WebApp_ID" version="2.5">
     <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>
           <welcome-file-list>
                   <welcome-file>HelloWorld.jsp</welcome-file>
             </welcome-file-list>
</web-app>
在这里我们需要定义filter的名字,我定义的是叫struts2
       3配置struts.xml文件。
最后一步在我们的src源文件里,需要加一个struts.xml,记住这里要和com包在同级目录下,内容如下:
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="com" extends="struts-default">
        <action name="HelloWorld" class="com.HelloWorld">
            <result>/HelloWorld.jsp</result>
        </action>
        <!—这里是我添加的一个action -->
    </package>
</struts>
好,经过上面的三部曲,我们的struts2.0就算配置完成了,下我来说说我是怎么使用他的。
       二、简单的HelloWorld跳转实例
首先我们需要有一个jsp页面“HelloWorld.jsp”,代码如下:
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>Hello World!</title>
    </head>
    <body>
        <h2><s:property value="message" /></h2>
    </body>
</html>
我们可以看到这里我们看到如果是运行起来的话,页面里面应该显示message的值。
我们还需要一个HelloWorld.java类,代码如下:
package com;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport  {
    public static final String MESSAGE = "Struts is up and running  ";
    public String execute() throws Exception  {
        setMessage(MESSAGE);
        return SUCCESS;
    }
    private String message;
    public void setMessage(String message) {
        this.message = message;
    }
    public String getMessage()  {
        return message;
    }
}
代码很简单主要就是给message赋“Struts is up and running”值,千万别忘了需要继承ActionSupport类即可。
       现在我们编译一下,放到jboss中间件里面去,下面我们在输入http://localhost:8080/Struts2/HelloWorld.action时得到的截图:
       终于看到了我们想要的结果。呵呵,到这里就实例就完成了。现在我们总结一下上面说说的东西,在配置的时候我们主要做了三步,复制jar文件、配置web.xml、配置struts.xml文件。

写一个Steuts2的经典入门案例,做了一个登陆程序作为入门例子

登陆会去交互,并返回页面,比较适合以后扩展的项目,容易理解!

例子:登陆的Struts2案例

环境:

     IDE工具:Myeclipse  ,  Tomcat6.0

所需jar包:  

struts2-core-2.1.8.1.jar   

struts2-json-plugin-2.1.8.1.jar

xwork-core-2.1.6.jar

commons-fileupload-1.2.1.jar

freemarker-2.3.15.jar

junit4.4.jar

ognl-2.6.7.jar

步骤:

1. 创建一个web project项目

2.导入Struts2所需jar包

3.配置web.xml

4.配置struts2.xml

5.写action类(LoginUser.Java)

6.写jsp页面

7.启动tomcat.运行项目

项目最后截图:


开始:

1.创建一个项目

还是截图,项目名称为:Struts2SpExa


2.导入所需jar包

导入所需jar包到项目的lib文件夹下(或者通过Build Path导入也可)


3.在WEB-INF下面的web.xml中配置:

配置拦截器和起始页面

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.     <filter>  
  8.         <filter-name>struts2</filter-name>  
  9.         <filter-class>  
  10.             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
  11.         </filter-class>  
  12.     </filter>  
  13.    
  14.     <filter-mapping>  
  15.         <filter-name>struts2</filter-name>  
  16.         <url-pattern>/*</url-pattern>  
  17.     </filter-mapping>  
  18.   <welcome-file-list>  
  19.     <welcome-file>/WEB-INF/jsp/login.jsp</welcome-file>  
  20.   </welcome-file-list>  
  21.       
  22. </web-app>  
4.配置struts.xml

配置strust2要调用的action

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC  
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4. "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5. <!--配置struts action>  
  6. <struts>  
  7. <package name="todayMZ" extends="struts-default" namespace="/">   
  8. <action name="loginUser" class="todayMZ.user.action.UserAction">   
  9. <result name="success">/WEB-INF/jsp/success.jsp</result>   
  10. <result name="fail">/WEB-INF/jsp/fail.jsp</result>  
  11. </action>  
  12. </package>  
  13. </struts>  
5.写action类(LoginUser.java)

这个类主要用于struts2跳转到这个action后。默认执行execute()方法。并根据结果返回字符,然后struts2.xml根据返回的字符跳到相应的页面

[java] view plaincopy
  1. package todayMZ.user.action;  
  2.   
  3. public class UserAction {  
  4.      private String username;  
  5.      private String password;  
  6.     public String getUsername() {  
  7.         return username;  
  8.     }  
  9.     public void setUsername(String username) {  
  10.         this.username = username;  
  11.     }  
  12.     public String getPassword() {  
  13.         return password;  
  14.     }  
  15.     public void setPassword(String password) {  
  16.         this.password = password;  
  17.     }  
  18.     public String execute() throws Exception {  
  19.         // 只要用户名为todayMZ,密码为1234就可成功登陆  
  20.         if ("todayMZ".equals(this.getUsername().trim()) && "1234".equals(this.getPassword().trim())) {  
  21.             return "success";  
  22.         } else {  
  23.             return "fail";  
  24.         }  
  25.     }  
  26.       
  27. }  

6.写jsp页面 
这里有三个jsp页面:login.jsp,   success.jsp,      fail.jsp

login.jsp(用了简单的标签) 

[html] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <%  
  4. String path = request.getContextPath();  
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  6. %>  
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9. <html>  
  10.   <head>  
  11.     <title>登陆页面</title>  
  12.   </head>  
  13.      
  14.   <body>  
  15.     <center>  
  16.         <s:form action="loginUser"  method="post" namespace="/" >  
  17.                 <s:textfield name="username" label="用户名"></s:textfield>  
  18.                 <s:password name="password" label="密码"></s:password>  
  19.                 <s:submit value="确定"/>  
  20.                 <s:reset value="重置"/>  
  21.         </s:form>  
  22.     </center>  
  23.   </body>  
  24. </html>  
success.jsp
[html] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <%  
  4. String path = request.getContextPath();  
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  6. %>  
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9. <html>  
  10.   <head>  
  11.     <title>成功页面</title>  
  12.   </head>  
  13.      
  14.   <body>  
  15.     <p align="center">登陆成功!!!您的用户名是<s:property value="username"></s:property></p>  
  16.   </body>  
  17. </html>  
fail.jsp
[html] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>    
  10.     <title>失败页面</title>  
  11.   </head>  
  12.      
  13.   <body>  
  14.     <p align="center">登陆失败!!!</p>  
  15.   </body>  
  16. </html>  
7.启动tomcat.运行项目

run项目。在地址栏中输入:http://localhost:8080/Struts2SpExa/ 

弹出登录界面:(输入toadyMZ,密码123登录成功)


That's OK !

如果过程中报错: No configuration found for the specified action,

那是因为你在login页面使用标签的时候,form表单提交没有指明namespace=??。

-----------------我是分割线----------------------- 


本文适合初学者入门案例,步骤无先后规定。也用来方便我记起一些东西。







0 0