美文网首页
Eclipse Struts2.5

Eclipse Struts2.5

作者: 崇本息末 | 来源:发表于2016-09-19 23:38 被阅读0次

    对于Struts2的配置的教程网上有一大堆,但初次接触Struts2环境的配置难免有点手足无措之感(本人就是如此(⊙﹏⊙)b),下面就初步介绍一下在Eclipse for JavaEE这个IDE下如何配置Struts2.5这个版本吧。

    Struts2和Tomcat下载链接

    Struts2下载:http://struts.apache.org/download.cgi
    Tomcat下载:http://tomcat.apache.org
    从官网上下载后,直接解压到本地即可。注意保存路径不能有中文。

    Struts必备组件

    • 动作
      创建一个包含完整的业务逻辑和控制用户,模型和视图之间的交互的动作类。
    • 拦截器
      如果需要,则创建拦截器,或者使用已存在的拦截器,这是控制器的部分。
    • 视图
      创建一个与用户交互的JSPs,它接受输入并显示最后的信息
    • 配置文件
      创建连接动作,视图和控制器的配置文件,配置文件有:struts.xml、web.xml、struts.properties。

    创建动态Web项目

    启动Eclipse for JavaEE,然后File->new->Dynamic Web Project,创建一个新的动态的Web项目。

    动态Web项目

    接着一路Next过去,只是注意默认的动态Web项目是不带Web.xml这个配置文件的,这里在图示箭头打勾。

    项目创建成功,在Project Explorer中可以看到创建成功的项目,同时WebContent下的WEB-INF目录下就自带了一个Web.xml配置文件。

    然后从下载的Struts2文件夹中的lib目录中选择相应包,拖拽到WEB-INF下的lib下。下面列出了Struts2的核心库:

    • struts2-core-2.5.2.jar
    • commons-io-2.4.jar
    • commons-lang3-3.4.jar
    • commons-logging-1.1.3.jar
    • commons-fileupload-1.3.2.jar–freemarker-2.3.23.jar
    • ognl-3.1.10.jar

    除了上面的库,我还加入了javassist-3.20.0-GA.jar、log4j-api-2.5.jar库,这两个库也是常用的。还有一个servlet-api.jar库是Tomcat中的lib,这主要是为了防止后面配置文件时出现Warning时导入的。


    创建Action

    当用户点击一个url时,Action类响应用户动作。执行一个或多个Action类中的方法并且返回一个字符串结果。基于结果的值,将呈现一个指定的JSP页面。
      基于此,我们在Java Resources ->src目录下的com.learnweb.struts2包下,创建一个java文件HelloWorldAction.java文件。内容如下:

    package com.learnweb.struts2;
    
    public class HelloWorldAction{
           private String name;
           public String execute() throws Exception {
              return "success";
           } 
           public String getName() {
              return name;
           }
           public void setName(String name) {
              this.name = name;
           }
    }
    

    创建视图

    对于视图,需要一个JSP提交信息,当一个预定义动作发生时,这个页面会被Struts2页面框架调用,这种映射关系定义在struts.xml文件中,所以现在应该在WebContent文件夹下新创建一个JSP文件,名字叫做HelloWorld.jsp,内容如下:

    <%@ taglib prefix="s" uri="/struts-tags"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <html>
        <head>
            <title>Hello World</title>
        </head>
        <body>
            Hello World, <s:property value="name"/>
        </body>
    </html>
    

    标签库指令告诉Servlet容器这个页面将使用struts2的标签,而且这些标签将在s之前。s:property标签显示动作类属性name>的值,它是由HelloWorldAction类的getName()方法返回的。

    创建主页

    还需要在WebContent文件夹中创建index.jsp。这个文件作为初始URL,用户可以点击它来告诉struts2框架调用HelloWorldAction类定义的方法,并且呈现HelloWorld.jsp视图。内容如下:

    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
       pageEncoding="ISO-8859-1"%>
    <%@ 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>
    <title>Hello World</title>
    </head>
    <body>
       <h1>Hello World From Struts2</h1>
       <form action="hello">
          <label for="name">Please enter your name</label><br/>
          <input type="text" name="name"/>
          <input type="submit" value="Say Hello"/>
       </form>
    </body>
    </html>
    

    在struts.xml中将上面的视图文件中定义的hello动作映射到HelloWorldAction类和它的执行方法中。当用户点击提交按钮时,将引起 Struts 2 框架运行在 HelloWorldAction 类中定义的执行方法,根据方法的返回值一个适当的视图将被作为响应进行选择和呈现。

    配置文件

    struts.xml配置

    这次让我们创建一个叫struts.xml的文件,在这个文件中我们可以配置一个将URL、HelloWorldAction类(模型)和HelloWorld.jsp(视图)连结起来的映射。该映射可以告诉我们Struts2框架哪个类将响应用户的动作(URL),这个类的哪个方法将被执行,根据方法返回的字符串结果将呈现什么视图。
      所以我们应当在WebContent/WEB-INF/classes文件夹下创建struts.xml文件。默认情况下,WEN-INF下不会有classes文件夹,所以得自己创建一个。struts.xml的内容如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
        
    <struts>
    <constant name="struts.devMode" value="true" />
       <package name="helloworld" extends="struts-default">     
          <action name="hello" 
                class="com.learnweb.struts2.HelloWorldAction" 
                method="execute">
                <result name="success">/HelloWorld.jsp</result>
          </action>
       </package>
    </struts>
    

    关于上述配置文件有几点需要注意。在这里我们设置常量 struts.devModetrue,是因为我们正工作在程序开发环境中,我们需要看到一些有用的日志信息。然后,我们定义了一个名为 helloworld 的包。当你想要把你的动作分成一组时,创建一个包是有用的。在我们的例子中,我们命名我们的动作为 “hello”,它对应着 URL /hello.action 和通过HelloWorldAction.class 进行备份。当 URL /hello.action 调用时,HelloWorldAction.class 的执行方法是运行的方法。如果执行方法的结果返回 “success”,然后我们把 HelloWorld.jsp 呈现给用户。

    web.xml配置

    web.xml是一个任何对struts2请求的入口点。Struts2应用程序的入口点是在web.xml中定义的过滤器。所以我们要在web.xml中定义一个org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter类。由于项目已经创建了一个默认的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 2</display-name>
       <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
       </welcome-file-list>
       <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
       </filter>
       <filter-mapping>
          <filter-name>struts2</filter-name>
          <url-pattern>/*</url-pattern>
       </filter-mapping>
    </web-app>
    

    这里我们指定了index.jsp为welcome文件。然后配置了Struts2的过滤器来运行所有的URL(即任何匹配模式/*的URL)。

    执行应用程序

    右键Project->Run As->Run on Server

    点击Finish之后,就可以看到下列画面:

    index.jsp HelloWorld.jsp

    还有一种方法就是在项目名称上右键,单击Export->WAR file导出一个WAR文件,然后在Tomcat的webapps目录下部署这个WAR。最后启动Tomcat服务器,并且尝试访问URL(http://localhost:8080/HelloWorld/) 也会得到上列画面。

    最后

    至此,struts2的配置就基本完成了。但目前自身对struts2框架了解还不够多,还需不断的学习。

    相关文章

      网友评论

          本文标题:Eclipse Struts2.5

          本文链接:https://www.haomeiwen.com/subject/oymnettx.html