最详细Struts2基础入门
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 三大框架
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基础入门相关推荐
- linux入门_Linux超详细0基础入门篇(一)
首先要感谢大康老师对我在Linux操作系统上的教导. 今天来讲一下用途广泛的Linux的基础入门教程 仅仅是做入门使用,如果想更加深入的学习那就需要自己做探索了. 本次例子使用的是kali linux ...
- 神仙级python入门教程(非常详细)零基础入门到精通看这篇开始
▌▌ Python的应用 自动化工具:自动处理数据.Excel文件.发邮件.下载.上传数据 网络爬虫:代替人工自动从下载数据,例如:商品信息.股票数据.技术文章 Web网站:开发一个网站.APP.小程 ...
- python cocos2d新手教程_初学者必备!超详细Python基础入门教程
相信初学Cocos2D者对Python还不熟悉,今天本篇教程带你快速入门,一小时学会Python. 1.为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范 ...
- 万字长文爆肝Python基础入门【巨详细,一学就会】
目录 数据的名字和种类--变量和类型 初探数据种类 数据类型 数值运算 比较运算 变量和赋值 变量的好处 用赋值更新变量 变量和数据类型的关系 总结 数据类型 数值运算 数值比较 变量和赋值 一串数据 ...
- PySide2 基础入门-创建实例窗口(详细解释)
PySide2 基础入门-创建实例窗口(详细解释) python 3.7 / Pyside2 (如果使用pyQt5,将Pyside2 直接替换PyQt5即可)首先我们在Qt Designer中画好界面 ...
- Python __name__ == ‘__main__’详细解释-Python零基础入门教程
目录 一.简介 1.__name__ 2.'__main__' 3.__name__ == '__main__' 二.作用 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习 ...
- python 判断列表所有元素是否为某个值_这应该是最详细的Python入门基础语法总结!...
这应该是最详细的Python入门基础语法总结! 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 input 用户自己输入值 print 打印值 可以输出多个变量 %d|%s 用于输 ...
- 渗透测试工具集(非常详细),从零基础入门到精通,看完这一篇就够了(附安装)
写在前面:这段时间由于发布了很多关于黑客工具教程的文章,后台经常会受到很多初学安全朋友的私信"初学者如何入门安全"."要去哪里找学习资料"等等.想起当初自己学安 ...
- C++基础入门(超详细)
话不多说,序言搞起来: 自从开始学老师布置的任务后,目前还是OpenCV,哈~哈.我就莫名问老师:"以后编程是用C++还是python?",果然还是太年轻,老师说:"两们 ...
最新文章
- 查找、下载基因序列的方法
- Linux文本编辑跳到指定行,Linux 命令每日一练:vi命令
- android 引用非 android 工程,Unity3D调用android方法(非插件方式)
- 自如CEO熊林接任董事长
- .NET 中文件嵌套,例如:cshtml文件下面嵌套css和js【机器翻译】
- 推荐!可视化垃圾回收算法(转)
- 设计模式------简单工厂模式
- 小象机器学习(邹博老师)学习笔记
- 批处理文件(.bat)的写法——DOS命令大全
- 粒子群算法基本原理与编程
- win10安装mysql8.0,一台电脑上安装多个mysql
- 计算机经常无法打印机,为什么我电脑连接打印机老是出现这种情况~重启也不行...
- WinRAR解压War包
- 写一段vba代码,把excel中所有工作簿中的图片删除
- 客户一个无厘头的BUG ,让我的青春痘炸了2颗
- 解决唯智项目发布weblogic中文显示和hql解析问题
- Unity 运行状态下动态保存 预制体/预制体上脚本参数
- Python调用大漠插件(一)
- labview myRIO驱动mpu6050
- 深度知识追踪(Deep Knowledge Tracing)·论文学习归纳
热门文章
- Ubuntu18.04 安装WineHQ 及安装 TIM (超级简单)
- 雷库兹韦尔量子计算机,熬到2045年,人类可能靠人工智能战胜死亡了
- kafka的ACK参数的详解
- 超级仓库管理系统---(1)概述
- android 编译bin文件,Android编译自己的程序到/system/bin
- IBM全内置服务器的发展历程
- Keil官网下载器件支持包Software Packs
- 移动APP数据分析能做什么
- JSP的内置对象概述 什么是JSP的内置对象
- java datarow_DataTable、DataRow、DataColumn用法