回顾Struts2的使用过程,网上搜的教程多多少少都会有点问题,重新记录下创建过程,方便查阅。

1、下载Struts2的jar包

下载地址:http://archive.apache.org/dist/struts/binaries/

我用的是struts-2.3.14-all.zip这个版本

2、创建一个web project项目

下面给出所有文件均创建完成后的工程师图。

3、导入Struts2所需jar包

因为只是示例程序,只需要导入Struts 2支持最小的包就可以了,网上很多教程中添加的最小包都有出入,教大家一个保险的方法。

解压刚才下载的压缩包struts-2.3.14-all.zip,在apps文件夹下有个struts2-blank.war包,打开它,到WEB-INF/lib目录下,如下图所示,即为所需的最小包。包含的包应该和具体的Struts版本有关。

4、配置web.xml

下面进入到具体的配置编码阶段。

打开web.xml,修改配置参数,修改后的具体配置如下。

[html] view plaincopyprint?
  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. <display-name></display-name>
  8. <!-- Struts2配置 -->
  9. <filter>
  10. <filter-name>struts2</filter-name>
  11. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  12. </filter>
  13. <filter-mapping>
  14. <filter-name>struts2</filter-name>
  15. <url-pattern>/*</url-pattern>
  16. </filter-mapping>
  17. </web-app>

这里需要注意的是

这里面填入的类,

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

Since Struts 2.1.3, use StrutsPrepareAndExecuteFilter instead or StrutsPrepareFilterand StrutsExecuteFilter if needing using the ActionContextCleanUp filter in addition to this one..即,从Struts 2.1.3起已被标注为过时的,改用StrutsPrepareAndExecuteFilter。
我刚用这个版本的时候还是填的org.apache.struts2.dispatcher.FilterDispatcher
结果报错

[plain] view plaincopyprint?
  1. ***********************************************************************
  2. *                               WARNING!!!                            *
  3. *                                                                     *
  4. * >>> FilterDispatcher <<< is deprecated! Please use the new filters! *
  5. *                                                                     *
  6. *           This can be a source of unpredictable problems!           *
  7. *                                                                     *
  8. *              Please refer to the docs for more details!             *
  9. *            http://struts.apache.org/2.x/docs/webxml.html            *
  10. *                                                                     *
  11. ***********************************************************************

如果你也遇到如上的错误,要仔细再检查下了。

5、配置struts.xml

下面需要创建struts.xml文件,配置strust2要调用的action。直接新建在src目录下,那样部署的时候会自动发布到WEB-INF/classes目录下,或者直接创建在WEB-INF/classes目录下面。

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5. <struts>
  6. <package name="struts2" extends="struts-default">
  7. <action name="HelloWorld" class="tutorial.HelloWorld">
  8. <result>/HelloWorld.jsp</result>
  9. </action>
  10. </package>
  11. </struts>

其中,package元素,作用类似于Java包的机制,他是用于分门别类的一个工具,extends属性如他的名字一样,它继承了struts-default这个包的所有信息,一般我们自己创建一个包最好都继承它,因为他为我们提供了绝大部分的功能,你可以在struts2-core的jar包中的struts-default.xml文件中找到这个包。action元素对应与你的表单,例如你的表单的action="welcome",那么该表单提交后就会将参数交予action的name="welcome"的实现类处理。result元素为action的结果,它由动作类返回的控制字段选择。

6、写action类(HelloWorld.java)

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

[java] view plaincopyprint?
  1. package tutorial;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. public class HelloWorld extends ActionSupport
  4. {
  5. public final static String MESSAGE = "Struts2 is up and running ...";
  6. private String message;
  7. /**
  8. * @return the message
  9. */
  10. public String getMessage()
  11. {
  12. return message;
  13. }
  14. /**
  15. * @param message the message to set
  16. */
  17. public void setMessage(String message)
  18. {
  19. this.message = message;
  20. }
  21. public String execute() throws Exception
  22. {
  23. setMessage(MESSAGE);
  24. return SUCCESS;
  25. }
  26. }

7、写jsp页面

新建一个jsp页面来呈现信息。

[plain] view plaincopyprint?
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <%@ taglib prefix="s" uri="/struts-tags" %>
  4. <html>
  5. <head>
  6. <title>Hello World!</title>
  7. </head>
  8. <body>
  9. <h2><s:property value="message" /></h2>
  10. </body>
  11. </html>

8、部署运行

在Tomcat中运行该项目,然后打开浏览器,在地址栏中输入:http://localhost:8080/Struts2Demo/HelloWorld
IE效果如下。

至此,最简单的Struts2的使用方法介绍完毕。

转载于:https://www.cnblogs.com/tongtkk/p/4957539.html

Struts2 简介相关推荐

  1. 【struts2】struts2简介

    Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 一 ...

  2. struts2 简介

    一.struts2 是一个框架,属于属于表现层,需要我们基于这个框架下进行开发. 特点: 可读性 可维护性 可拓展性. javaEE 开发根据职责的纵向划分:表现层 业务层 持久层.也就所说的java ...

  3. Struts2框架概述、Struts简介、Struts环境搭建、Struts执行流程、Struts文档、Struts配置文件的加载顺序-day01

    目录 第一节 框架概述 1.1 什么是框架 1.2 三大框架 1.3 三层架构 1.4 MVC.Servlet.Filter MVC Servlet Filter 第二节 Struts简介 2.1 S ...

  4. Struts2笔记——初次框架配置

    1.Struts2简介   Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与S ...

  5. Java Struts2 (一)

    一.Struts2简介 1.Struts2概述 Struts2是Apache发行的MVC开源框架.注意:它只是表现层(MVC)框架. 2.Struts2的来历 Struts1:也是apache开发的一 ...

  6. struts2总体介绍

    这篇博客开始将总结一下有关框架的知识,在开发中合适的利用框架会使我们的开发效率大大提高.当今比较流行的开源框架: 关注数据流程的MVC框架 (Struts1/2, WebWork, Spring MV ...

  7. 整合Struts2、Spring、Hibernate构建J2EE应用

    [论文摘要] J2EE即是以Java 2平台为基础的体系结构,又是一组旨在简化企业解决方案的开发.部署.运行.维护等相关复杂问题的技术规范与指南.Struts2.Spring.Hibernate是当今 ...

  8. Struts2(一)之认识struts2

    大家可能都听说过框架,听起来是一个和牛逼的事情,笔者也是这样的.还没有学习的时候,很期待框架到底是什么东西.听说功能非常的强大. 其实框架的作用和定义就是: 把一些繁琐的重复性代码封装起来,使程序员在 ...

  9. Struts1、Struts2及SpringMVC对比

    Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物. 简 ...

最新文章

  1. 程序如何调堆内存_Java的内存泄漏
  2. 耦合式是什么意思_什么是微服务?一篇文章让你彻底搞明白
  3. c语言基本字符集ppt,C语言的字符集和保留字知识讲稿.ppt
  4. Java并发优化思路
  5. 宏基因组多少钱一个样_太阳能路灯价格是多少钱一盏(12米高杆灯报价)
  6. 再次挑戰UCOSII内核源码
  7. vba 服务器上删除文件夹,Excel vba 如何操作文件夹的创建以及删除
  8. 《Supervised Descent Method and its Applications to Face Alignment》阅读笔记
  9. python是什么专业学的-当我们学Python时,我们学什么?
  10. PAT A1002 A+B for Polynomials(25)
  11. 【知云】第十期:如何保障云上游戏安全?云盾+高防IP筑起云上安全高墙
  12. 御剑江湖一键端mysql_御剑江湖一键端漏洞,可导致数据库被任意修改
  13. JS UUID生成(唯一ID生成)
  14. 计算机屏幕坐标系转换,测量坐标系到计算机屏幕坐标系的换算
  15. 如何备份光猫html文件夹,华为光猫备份jffs2及HG8321R-RMS切换HG8321版本教程
  16. JavaScript在线教程网址
  17. 关于选项卡的切换——JS实现
  18. php 启动php-fpm,linux启动多个php-fpm
  19. oracle控制文件的复用,ORACLE 10g ASM 控制文件多路复用
  20. 电脑软件能截图无法发送(钉钉截图无法发送,微信能截图但是发送带虚线obj的文件,看不了照片)

热门文章

  1. 用户画像|产品经理应该如何定位用户
  2. Python正则表达式尽可能小的匹配(遇到第一个结束字符串就停止匹配)
  3. 几点基于Web日志的Webshell检测思路
  4. “薅羊毛”漏洞分析 | 我是如何到处“混吃混喝”的
  5. 《剑指offer》给定一颗二叉搜索树,请找出其中的第k大的结点。
  6. 使用github pages创建博客
  7. 【Lucene4.8教程之三】搜索
  8. 软件设计原则(四)依赖倒置原则 -Dependence Inversion Principle
  9. LeetCode 100.相同的树(C++)
  10. REM,你这磨人的小妖精!