Eclipse Struts2.5

对于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框架了解还不够多,还需不断的学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,493评论 18 399
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代产品,是在 struts1和WebWork的...
    inke阅读 2,219评论 0 50
  • 一. Java基础部分.................................................
    wy_sure阅读 3,774评论 0 11
  • 概述 Struts就是基于mvc模式的框架!(struts其实也是servlet封装,提高开发效率!) Strut...
    奋斗的老王阅读 2,897评论 0 51
  • 详谈 Struts2 的核心概念 本文将深入探讨Struts2 的核心概念,首先介绍的是Struts2 的体系结构...
    可爱傻妞是我的爱阅读 1,101评论 0 2