struts2

  • 1 框架概述
    • 1.1什么是框架
    • 1.2 三大框架
    • 1.3 三层架构
    • 1.4 MVC回顾
  • 2 Struts简介
    • 2.1 Struts2概述
    • 2.2 Struts2的来历
  • 3 Struts的环境搭建
    • 3.1 下载Struts2开发包
    • 3.2 解压后的目录结构
    • 3.3 struts jar包介绍
    • 3.4 快速构建项目
    • 3.5 Struts.xml 的Action配置讲解
  • 4 Struts配置文件的加载顺序
    • 4.1 加载时机
    • 4.2 加载顺序
    • 4.3 default.properties的一些默认配置
    • 4.4 修改struts的访问后缀
    • 4.5 配置struts的开发模式

1 框架概述

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

1.1什么是框架

  1. 所谓框架,就是把一些繁琐的重复性代码封装起来,使程序员在编码中把更多的精力放到业务需求的分析和理解上面。
  2. 特点:封装了很多细节,程序员在使用的时候会非常简单。

1.2 三大框架

Longlong ago,有三大框架struts、hibernate、spring(SSH)
springmvc、mybatis、spring(SSM)

1.3 三层架构

MVC & Web-Service-Dao

1.4 MVC回顾

mvc
M:Model 模型,封装数据。javabean
V:view 视图,展示界面。jsp
C:Controller 控制器,控制程序流程。

2 Struts简介

2.1 Struts2概述

  • Struts2是Apache发行的MVC开源框架。注意:它只是表现层web(MVC)框架。

2.2 Struts2的来历

  • Struts1:
     Struts1也是apache开发的一套mvc的开源框架。在2005年之前非常流行。
     弊端:Struts1的核心控制器就是一个Servlet。随着使用者的增多,弊端开始出现。
  • Struts2:
     在long long ago,有一个设计超前的框架XWork,后来推出了XWork1和WebWork2。
     Struts2就是apache和OpenSymphony组织合并开发出来。
     里面包含了WebWork2的核心及Struts的一些特性和功能。除此之外,和Struts1没有任何关系了。

3 Struts的环境搭建

3.1 下载Struts2开发包

去apache官网页面,选择struts2Jar包

3.2 解压后的目录结构

  • apps:官方提供的案例Demo
  • docs :官方提供的文档
  • lib :官方提供的jar包,需要用到哪个才导入哪个
  • src: 源码

3.3 struts jar包介绍

案例banks jar包介绍:

struts2-core-2.3.33.jar Struts核心jar包
xwork-core-2.3.33.jar Struts核心jar包
ognl-3.0.19.jar OGNL表达式
log4j-core-2.3.jar 开源日志 log for java
log4j-api-2.3.jar 开源日志 log for java
asm-3.3.jar 基于子类的动态代理
asm-tree-3.3.jar 提供其于对象的表现形式
asm-commons-3.3.jar 提供基于事件的表现形式
commons-fileupload-1.3.2.jar 文件上传所需要的包
asm-commons-3.3.jar 文件上传所需要的包
freemarker-2.3.22.jar 页面 模板框架
javassist-3.11.0.GA.jar 对于字节码的支持,jBoss的一个子项目
commons-lang3-3.2.jar 对java.lang的扩展

3.4 快速构建项目

1.创建Web工程
2.导jar包: 把struts2-blank.war中的lib下所有的包导入自己创建的工程
3.添加配置文件: 把struts2-blank里classes目录下的struts.xml配置文件拷贝到自己创建工程的src中
4.配置struts的过滤器 : 在web.xml中,配置Filter

<!--  配置的目的是用于拦截请求,由Struts的规则去处理请求,而不是用以前的servlet去处理-->
<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>

5.Tomcat运行Web工程

3.5 Struts.xml 的Action配置讲解

<struts><!-- package:表示包name:包名,在struts.xml文件不能有相同的包名,包名是唯一的extends:繼承,固定struts-defaultaction:动作,name:相当于servlet的映射路径  (@WebServlet)class:处理请求的类,相当于servlet类method:处理请求的方法result:结果,写返回的jsp的页面--><package name="p1" extends="struts-default"><action name="hello" class="com.itheima.web.action.HelloAction" method="sayHello"><result name="success">/success.jsp</result></action></package></struts>

4 Struts配置文件的加载顺序

4.1 加载时机

 struts有很多配置文件,如下面的表格
 当应用被tomcat加载的时候,struts2的配置文件就已经被加载过了。

4.2 加载顺序

顺序 配置文件名 所在位置 说明
1 default.properties struts2-core-2.3.15.3.jar\org\apache\struts2 不能修改
2 struts-default.xml struts2-core-2.3.15.3.jar\org\apache\struts2 不能修改
3 strtuts-plugin.xml struts2-core-2.3.15.3.jar\org\apache\struts2 不能修改
4 struts.xml 我们的应用中 可以修改的:推荐
5 struts.properties 我们的应用中 可以修改的
6 web.xml 我们的应用中 可以修改的,可以给过滤器配置参数

4.3 default.properties的一些默认配置

配置 含义
struts.i18n.encoding=UTF-8 国际化
struts.action.extension=action, 默认访问扩展后缀,可以是action,也可以没有后续
struts.devMode = false 是否是开发模式。开发模式:改了配置文件,不需要重启。输出更多的错误信息。开发阶段建议为true。

4.4 修改struts的访问后缀

1. 在struts.xml的配置文件中添加
2. 在src下创建struts.properties
 添加struts.action.extension=htm
 注:如果这样配置会覆盖struts.xml的配置
3. 在web.xml中配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>struts2_demo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class><init-param><param-name>struts.action.extension</param-name><param-value>do</param-value></init-param></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern>
</filter-mapping></web-app>

4.5 配置struts的开发模式

在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><constant name="struts.devMode" value="true"></constant><!-- package:表示包name:包名,在struts.xml文件不能有相同的包名,包名是唯一的extends:繼承,固定struts-defaultaction:动作,name:相当于servlet的映射路径  (@WebServlet)class:处理请求的类,相当于servlet类method:处理请求的方法result:结果,写返回的jsp的页面--><package name="p1" extends="struts-default"><action name="hello" class="com.itheima.action.HelloAction" method="sayHello"><result name="success">/success.jsp</result></action></package></struts>

最详细Struts2基础入门相关推荐

  1. linux入门_Linux超详细0基础入门篇(一)

    首先要感谢大康老师对我在Linux操作系统上的教导. 今天来讲一下用途广泛的Linux的基础入门教程 仅仅是做入门使用,如果想更加深入的学习那就需要自己做探索了. 本次例子使用的是kali linux ...

  2. 神仙级python入门教程(非常详细)零基础入门到精通看这篇开始

    ▌▌ Python的应用 自动化工具:自动处理数据.Excel文件.发邮件.下载.上传数据 网络爬虫:代替人工自动从下载数据,例如:商品信息.股票数据.技术文章 Web网站:开发一个网站.APP.小程 ...

  3. python cocos2d新手教程_初学者必备!超详细Python基础入门教程

    相信初学Cocos2D者对Python还不熟悉,今天本篇教程带你快速入门,一小时学会Python. 1.为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范 ...

  4. 万字长文爆肝Python基础入门【巨详细,一学就会】

    目录 数据的名字和种类--变量和类型 初探数据种类 数据类型 数值运算 比较运算 变量和赋值 变量的好处 用赋值更新变量 变量和数据类型的关系 总结 数据类型 数值运算 数值比较 变量和赋值 一串数据 ...

  5. PySide2 基础入门-创建实例窗口(详细解释)

    PySide2 基础入门-创建实例窗口(详细解释) python 3.7 / Pyside2 (如果使用pyQt5,将Pyside2 直接替换PyQt5即可)首先我们在Qt Designer中画好界面 ...

  6. Python __name__ == ‘__main__’详细解释-Python零基础入门教程

    目录 一.简介 1.__name__ 2.'__main__' 3.__name__ == '__main__' 二.作用 三.猜你喜欢 ​ 零基础 Python 学习路线推荐 : Python 学习 ...

  7. python 判断列表所有元素是否为某个值_这应该是最详细的Python入门基础语法总结!...

    这应该是最详细的Python入门基础语法总结! 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 input 用户自己输入值 print 打印值 可以输出多个变量 %d|%s 用于输 ...

  8. 渗透测试工具集(非常详细),从零基础入门到精通,看完这一篇就够了(附安装)

    写在前面:这段时间由于发布了很多关于黑客工具教程的文章,后台经常会受到很多初学安全朋友的私信"初学者如何入门安全"."要去哪里找学习资料"等等.想起当初自己学安 ...

  9. C++基础入门(超详细)

    话不多说,序言搞起来: 自从开始学老师布置的任务后,目前还是OpenCV,哈~哈.我就莫名问老师:"以后编程是用C++还是python?",果然还是太年轻,老师说:"两们 ...

最新文章

  1. 查找、下载基因序列的方法
  2. Linux文本编辑跳到指定行,Linux 命令每日一练:vi命令
  3. android 引用非 android 工程,Unity3D调用android方法(非插件方式)
  4. 自如CEO熊林接任董事长
  5. .NET 中文件嵌套,例如:cshtml文件下面嵌套css和js【机器翻译】
  6. 推荐!可视化垃圾回收算法(转)
  7. 设计模式------简单工厂模式
  8. 小象机器学习(邹博老师)学习笔记
  9. 批处理文件(.bat)的写法——DOS命令大全
  10. 粒子群算法基本原理与编程
  11. win10安装mysql8.0,一台电脑上安装多个mysql
  12. 计算机经常无法打印机,为什么我电脑连接打印机老是出现这种情况~重启也不行...
  13. WinRAR解压War包
  14. 写一段vba代码,把excel中所有工作簿中的图片删除
  15. 客户一个无厘头的BUG ,让我的青春痘炸了2颗
  16. 解决唯智项目发布weblogic中文显示和hql解析问题
  17. Unity 运行状态下动态保存 预制体/预制体上脚本参数
  18. Python调用大漠插件(一)
  19. labview myRIO驱动mpu6050
  20. 深度知识追踪(Deep Knowledge Tracing)·论文学习归纳

热门文章

  1. Ubuntu18.04 安装WineHQ 及安装 TIM (超级简单)
  2. 雷库兹韦尔量子计算机,熬到2045年,人类可能靠人工智能战胜死亡了
  3. kafka的ACK参数的详解
  4. 超级仓库管理系统---(1)概述
  5. android 编译bin文件,Android编译自己的程序到/system/bin
  6. IBM全内置服务器的发展历程
  7. Keil官网下载器件支持包Software Packs
  8. 移动APP数据分析能做什么
  9. JSP的内置对象概述 什么是JSP的内置对象
  10. java datarow_DataTable、DataRow、DataColumn用法