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

时间:2022-09-13 18:57:02

在制定了学习计划的学习过程中,我感觉学习还是很有效率的。很短的时间内,我便学习完了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包其实非常的多。

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

那这么多的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标签的内容是固定的。

这样所有步骤就都完成了。

将项目部署运行。

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

点击helloWorld,出现如图所示。

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

程序运行成功,需要注意的是,在web.xml文件中的信息中是否配置了自己工程的启动页面。如果没有配置,地址栏中要输入完成的url,如:http://localhost:8080/test0425_struts/primer/test.jsp,后面的资源详细信息不输入的话就会报错。

现在,我们已经入门了struts2了,虽然有点复杂,但是逻辑清晰的话,其实它并不难。

篇幅有限,struts2的其它内容我将分为几个小节在接下来的博客中继续介绍。

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

  1. SSH开发模式——Struts2&lpar;第二小节&rpar;

    上一小节已经学会了如何去搭建Struts2的开发环境,该篇博客我们继续深入Struts2,了解Struts2框架的拦截器. 首先对我们在web.xml文件配置的过滤器进行一个源码的分析. 在Strut ...

  2. SSH开发模式——Struts2&lpar;第三小节&rpar;

    struts2框架的知识点,虽然分了几个小节,感觉内容还是挺多的,但是你仅仅是入门了而已,想要进一步地提升自己,你得有一颗持之以恒的学习的心,最后的内容我都将在这篇博客中讲到,所以篇幅可能会有点长,希 ...

  3. SSH开发模式——Struts2进阶

    在之前我有写过关于struts2框架的博客,好像是写了三篇,但是之前写的内容仅仅是struts2的一些基础知识而已,struts2还有很多有趣的内容等待着我们去发掘.我准备再写几篇关于struts2的 ...

  4. SSH框架之Struts2第一篇

    1.2 Struts2的概述 : Struts2是一个基于MVC设计模式的WEB层的框架. 1.2.1 常见web层框架 Struts1,Struts2,WebWork,SpringMVC Strut ...

  5. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:SSH框架(Struts2&plus;Spring&plus;Hibernate)搭建整合详细步骤

    在实际项目的开发中,为了充分利用各个框架的优点,通常都会把 Spring 与其他框架整合在一起使用. 整合就是将不同的框架放在一个项目中,共同使用它们的技术,发挥它们的优点,并形成互补.一般而言,在进 ...

  6. &period;net开发笔记(十三) Winform常用开发模式第一篇

    上一篇博客最后我提到“异步编程模型”(APM),之后本来打算整理一下这方面的材料然后总结一下写篇文章与诸位分享,后来在整理的过程中不断的延伸不断地扩展,发现完全偏离了“异步编程”这个概念,前前后后所有 ...

  7. Winform常用开发模式第一篇

    Winform常用开发模式第一篇 上一篇博客最后我提到“异步编程模型”(APM),之后本来打算整理一下这方面的材料然后总结一下写篇文章与诸位分享,后来在整理的过程中不断的延伸不断地扩展,发现完全偏离了 ...

  8. Struts2开发模式漏洞

    当Struts2中的devMode模式设置为true时,存在严重远程代码执行漏洞.如果WEB服务以最高权限运行时,可远程执行任意命令,包括远程控制服务器. 如果为受影响的版本,建议修改配置文件stru ...

  9. struts2的DevMode&lpar;开发模式&rpar;模式

    本文转自:http://blog.csdn.net/q1054261752/article/details/48687119 在实际应用开发或者是产品部署的时候,对应着两种模式: ① 开发模式(dev ...

随机推荐

  1. FreeMarker中文API手册&lpar;完整&rpar;

    FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用 ...

  2. img加载在IE11,chrome&comma;FF下的不同

    IE11 img.complete 得不到img的大小,会使用img.onload chrome,ff:img.complete 得不到img的大小,会使用自己创建的img加载方法

  3. 《Thinking in Java》十七章&lowbar;容器深入研究&lowbar;练习12&lpar;Page484&rpar;

    练习12: 练习使用HashMap / LinkedHashMap / TreeMap import java.util.HashMap; import java.util.LinkedHashMap ...

  4. 关于启明星系统移除apppath配置,让系统自动获取路径来设置cookie的解决方法

    启明星系统底层使用统一接口,特别是用户,用户登录后,都会建立一个 userinfo 的cookie.请看下面2个网址: http://120.24.86.232/book http://120.24. ...

  5. 【源码】初探C&num;爬虫,持续更新中。。。

       最近看到园子里有人用python做的爬虫软件并且上传的源码,苦于不懂python,便想着用C#也实现一个简易的爬虫软件.于是昨晚花了一个多小时的时间实现了一个简单的爬虫软件,功能十分简单,但是觉 ...

  6. &period;NET异步操作学习之一:Async&sol;Await中异常的处理

    以前的异常处理,习惯了过程式的把出现的异常全部捕捉一遍,然后再进行处理.Async/Await关键字出来之后的确简化了异步编程,但也带来了一些问题.接下来自己将对这对关键字进行学习.然后把研究结果放在 ...

  7. 用DIV&plus;Css&plus;Jquery 实现的旧版微信飞机大战。

    用jquery 实现的旧版微信飞机大战. 以前一直都是做后台和业务逻辑,前端很少去做, 现在个小游戏. 方向键控制方向,Ctrl 键 放炸弹(当然你的有炸弹,哈哈)! 主要都是用div+Css实现的, ...

  8. Objective-C&lpar;十八、谓语使用及实例说明&rpar;——iOS开发基础

    结合之前的学习笔记以及參考<Objective-C编程全解(第三版)>,对Objective-C知识点进行梳理总结.知识点一直在变,仅仅是作为參考,以苹果官方文档为准~ 十八.谓语的使用及 ...

  9. iOS 之 后台下载,前台显示模式,双 block

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ //耗时的操作 NSURL *url ...

  10. B树和B&plus;树详解

    一 B树 1.B树的定义:B树(B-tree)是一种树状数据结构,它能够存储数据.对其进行排序并允许以O(log n)的时间复杂度运行进行查找.顺序读取.插入和删除的数据结构.B树,概括来说是一个节点 ...