SSH开发模式——Struts2(第一小节)

在制定了学习计划的学习过程中,我感觉学习还是很有效率的。很短的时间内,我便学习完了JavaWeb的连接池、DbUtils框架及其一些工具类的使用。
学无止境,学习这些知识还远远不够,所以,在接下来的时间里,我将对JavaWeb中的SSH开发模式进行一个简单的学习,并用博客记录学习进度。

开发模式相信大家都有接触或听说,但又觉得这个东西很神秘,的确,这看不见摸不着的东西确实很让人好奇,所以,从今天开始,我将带着大家去揭开它神秘的面纱。

我会把整个开发模式分为三部分,第一部分:Struts2,第二部分:Hibernate,第三部分:Spring。但是即使分为了三部分,每个部分的框架仍然略显复杂。所以,我将在每部分的框架中继续细分。

那么,今天便开始第一部分的内容,Struts2。
首先了解一下Struts2的历史吧。
Struts1

  • 是全世界第一个发布的MVC框架
  • 在2001年发布

Struts2

  • 并不是Struts1的升级版
  • 是由WebWork基础上发展起来的
  • 吸收了Struts 1和WebWork两者的优势

那Struts2到底是什么呢?
Struts2是一个用来开发MVC应用程序的框架。它提供了Web应用程序开发过程中的一些常见问题的解决方案:

  • 页面导航活动的管理
  • 用户输入数据的合法性验证
  • 统一的布局
  • 可扩展性
  • 国际化和本地化
  • 支持Ajax
  • 表单的重复提交

我们假设一个场景,在一个jsp页面中有多个超链接,点击每个超链接都需要进行对应的处理,每个超链接对应一个Java类,类中有一个方法,我们的目的就是要点击超链接调用对应的Java类的方法,对于这样的场景,我们有两种解决方案,一是通过Servlet去调用Java类,二是通过过滤器去调用Java类。但是两种方法都很麻烦,重复的代码特别多,这时候,Struts2框架就起到了至关重要的作用,它可以很方便地帮助我们解决这个问题。

那么,如何搭建Struts2的开发环境呢?
搭建Struts2环境时,我们一般需要做以下几个步骤的工作:

  1. 创建javaweb工程
  2. 找到开发Struts2应用需要使用到的jar文件
  3. 创建jsp文件
  4. 创建action文件
  5. 编写Struts2的配置文件
  6. 在web.xml中加入Struts2 MVC框架启动配置

我们按照步骤一步步走。
创建web项目,名为test0425_structs2。
然后就是准备jar包了,struts2的jar包其实非常的多。

那这么多的jar包需要全部复制到项目中吗?其实不需要,我们选取几个比较重要的jar包进行导入。
因为百度网盘的上传数量有限,所以这么多的jar包我就没办法上传了,我上传几个我们接下来需要用到的,大家需要完整的jar包的话,可以去百度自行下载。

链接:https://pan.baidu.com/s/1vpzscP_uUnTrJyki-yCeUg
提取码:js2u
复制这段内容后打开百度网盘手机App,操作更方便哦

把这几个关键的jar包导入项目,第二步就完成了。
先来了解一下这几个jar包的作用。
struts2-core-2.3.1.1.jar:Struts 2框架的核心类库
xwork-core-2.3.1.1.jar:Command模式框架,WebWork和Struts2都基于xwork
ognl-3.0.3.jar:对象图导航语言(Object Graph Navigation Language),
struts2框架通过其读写对象的属性
freemarker-2.3.18.jar:Struts 2的UI标签的模板使用FreeMarker编写
commons-logging-1.1.x.jar:ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
commons-fileupload-1.2.2.jar: 文件上传组件,2.1.6版本后需要加入此文件
commons-io-2.0.1.jar:传文件依赖的jar包
commons-lang-2.5.jar:对java.lang包的增强
asm-3.3.jar:提供了字节码的读写的功能,包含了核心的功能,而其他的jar包都是基于这个核心的扩展.
asm-commons-3.3.jar:提供了基于事件的表现形式。
asm-tree-3.3.jar:提供了基于对象的表现形式。
javassist-3.11.0.GA.jar:代码生成工具, struts2用它在运行时扩展 Java类

接下来创建几个jsp文件,直接把代码贴上来。
新建primer文件夹,在该文件夹下创建text.jsp

<%@ page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%@ taglib uri="/struts-tags"   prefix="s"%>
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
    </head>
  <body>
    入门的路径:<br>
    <a href="${pageContext.request.contextPath }/primer.helloWorldAction.action">helloWorld</a> 

  </body>
</html>

继续在该文件夹下创建success.jsp

<%@ page language="java" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%@ taglib uri="/struts-tags"   prefix="s"%>
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
    </head>
  <body>
        primer文件夹下  helloworld成功!!!!<br>
  </body>
</html>

接下来是第四步,创建action文件了。
在src目录下创建HelloWorldAction类并实现Action接口。

public class HelloWorldAction implements Action {

    public String execute() throws Exception {
        System.out.println("HelloWorldAction ...");
        return "success";
    }
}

第五步,编写配置文件。
在src目录下创建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标签:表示包,action里的所有配置都放置在包下,规范化管理
            *name:表示包的名称,是唯一的,用于继承
            *namespace:命名空间,相当于房间号是唯一的
            *extends:"struts-default.xml"也是一个配置文件,是struts2框架底层提供的
     -->
    <package name="primer" namespace="/primer" extends="struts-default">
        <!--
            action标签:表示请求链接
                *name:action的名称,是唯一的
                *class:对应要执行的action类的完整路径
         -->
        <action name="helloWorldAction" class="cn.itcast.action.HelloWorldAction">
            <!--
                result标签:返回结果
                    *name:返回结果类型,要与execute()方法的返回值相对应
                    *result标签后面的文本部分:要转向的页面
             -->
            <result name="success">/success.jsp</result>
        </action>
    </package>
</struts>

最后一步,在web.xml文件中配置过滤器。

<filter>
        <filter-name>StrutsPrepareAndExecuteFilter</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>StrutsPrepareAndExecuteFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

这是struts2提供的过滤器,所以class标签的内容是固定的。
这样所有步骤就都完成了。

将项目部署运行。

点击helloWorld,出现如图所示。

程序运行成功,需要注意的是,在web.xml文件中的信息中是否配置了自己工程的启动页面。如果没有配置,地址栏中要输入完成的url,如:http://localhost:8080/test0425_struts/primer/test.jsp,后面的资源详细信息不输入的话就会报错。
现在,我们已经入门了struts2了,虽然有点复杂,但是逻辑清晰的话,其实它并不难。
篇幅有限,struts2的其它内容我将分为几个小节在接下来的博客中继续介绍。

原文地址:https://www.cnblogs.com/blizzawang/p/11411805.html

时间: 2024-07-30 02:20:11

SSH开发模式——Struts2(第一小节)的相关文章

SSH开发模式——Struts2(第二小节)

上一小节已经学会了如何去搭建Struts2的开发环境,该篇博客我们继续深入Struts2,了解Struts2框架的拦截器. 首先对我们在web.xml文件配置的过滤器进行一个源码的分析. 在StrutsPrepareAndExecuteFilter源码中,有一个init()方法,它调用方法获得了一个Dispatcher对象,这就是我们要分析的关键了.进入到它的源码,在其init()方法中调用了init_TraditionalXmlConfigurations()方法,该方法的源码如下: priv

SSH开发模式——Struts2(第三小节)

struts2框架的知识点,虽然分了几个小节,感觉内容还是挺多的,但是你仅仅是入门了而已,想要进一步地提升自己,你得有一颗持之以恒的学习的心,最后的内容我都将在这篇博客中讲到,所以篇幅可能会有点长,希望大家能够耐心阅读. 首先介绍一下struts2的配置. 还记得我们创建的test.jsp文件吗?直接看到这篇博客的同学们也不用去翻阅我之前的博客,因为我在之前的博客中只是简单地介绍了使用,而并没有深入,我并没有讲解每一步的作用,和为什么要这样写.所以,直接从该篇博客开始阅读学习也是可以的,我将从最

SSH开发模式——Struts2进阶

在之前我有写过关于struts2框架的博客,好像是写了三篇,但是之前写的内容仅仅是struts2的一些基础知识而已,struts2还有很多有趣的内容等待着我们去发掘.我准备再写几篇关于struts2的高级内容,之前的一些基础知识我就不会再提了,所以,在看进阶篇的struts2时,我希望你有一定的struts2框架的基础,没有的话也不要紧,因为入门struts2非常简单,随手看几篇博客就算入门了,但要想灵活运用它,我们就得付出大量的时间和精力,让我们为了共同的目标奋进吧. 那就先补充一些知识点,这

Android开发艺术探索——第一章:Activity的生命周期和启动模式

Android开发艺术探索--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activity搬上来了,也确实,和Activity打交道的次数基本上是最多的,而且他的内容和知识点也是很多的,非常值得我们优先把他掌握,Activity中文翻译过来就是"活动"的意思,但是主席觉得这样翻译有些生硬,直接翻译成"界面"可能更好,的确,Activity主要也是用于UI效

javaweb学习总结(二十一)——JavaWeb的两种开发模式

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(javabean)的调用. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下

Struts2——第一课

一直在说学习SSH,却也一直耽搁着,一来事情有点多,再则感觉有点难,一点时间可能学不会.正好现在比较闲,准备学习学习,入个门.初步打算每次的总结都会记录在这里,后面可以方便自己再次学习,有兴趣的朋友也可以支持下. 刚开始学习,难免有很多错误,希望大家理解. 0. 整体结构 同样从HelloWorld开始,哈哈.工程的结构图如下: 图1.工程结构图 主要关注LoginAction.java.struts.xml.web.xml和login.jsp. 1. web.xml web.xml文件的内容如

SSH开发实践part1:Spring与Hibernate整合

1 之前把SSH看完了,现在从头开始进行项目实践.现在讲整个过程中的点滴记录下来,希望对后来者有参考. 2 SSH是一个轻量级的java开发框架,struts负责MVC开发模式中的controller角色,hibernate则是负责对象的持久化,也就是对DB的访问,spring则是利用其IOC反转控制来完成对bean对象的管理,包括对hibernate的管理.好吧,这些东西相信大家都不陌生.现在我们正式开始,整个开发步骤主要包括以下几点: 新建web project项目 增加spring与hib

javaweb基础(21)_两种开发模式

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(javabean)的调用. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下

javaweb学习总结(二十一)——JavaWeb的两种开发模式【转】

原文 地址:http://www.cnblogs.com/xdp-gacl/p/3908610.html SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(j