好久不见的Struts2大家还记得么?一起再回顾一下吧
ccwgpt 2024-10-08 01:22 27 浏览 0 评论
1.Struts2介绍
Struts2和SpringMVC一样,都是基于MVC封装的框架
Struts1和Struts2没有关系。。。有的也只是名称上的相似
Struts2是在xwork的基础上升级来的,想占个名称的便宜
Struts2的核心是过滤器
2.框架搭建
1)导包
拷贝Struts2案例中的jar包
2)配置文件
1.web.xml中配置核心过滤器
参考案例中web.xml的配置
2.struts.xml
拷贝案例中的struts.xml到src目录下
3.部署,启动
解析struts.xml成功,说明Struts2是默认到classpath目录下找struts.xml配置文件解析
4.配置DTD约束
3.入门案例
需求: 浏览器访问/hello,页面跳转到hello.jsp
1)要一个Action(Springmvc中的Controller)来处理/hello请求
2)hello.jsp
3)Action类和请求地址之间的映射关系
struts.xml配置文件中配置一个action
4)浏览器请求/hello
action配置,name属性指向的请求地址,去掉/
重新启动访问,OK
4.请求地址后缀
两个请求地址都可以正常访问服务器,进行页面跳转,Struts会自动截取.action后缀
Struts2默认截取的后缀只有.action
请求地址,可以携带后缀,也可以不带。但是一般来说,请求地址中,肯定会携带后缀,因为框架的过滤器拦截不可能拦截所有的请求(.js,.jsp,.css….),一般拦截.action
如果要支持.do,需要修改默认配置
在struts.xml中修改默认配置
请求:
一般来说不改默认配置,Struts2中的请求地址,就以.action结尾
5.执行流程
1.tomcat启动的时候,加载web.xml,解析,然后实例化Struts2的核心过滤器
2)核心过滤器在初始化的过程,会加载解析配置文件struts.xml,解析所有的标签,将action标签解析放到容器中,key为当前action所属的package的namespace+action标签的name属性
3)浏览器请求/hello
4)tomcat接收到浏览器请求,解析应用名称,然后到对应的应用的web.xml中找,没有过滤器、servlet等需要拦截处理这个请求。这时,tomcat发现,核心过滤器需要拦截处理这个请求,tomcat就会把请求丢给核心过滤器
5)核心过滤器根据请求地址,找对应的action配置,然后找到class地址,实例化,反射调用指定方法。
6)方法执行完成会返回字符串,核心过滤器再根据返回字符串找对应的跳转地址,跳转的方式(默认转发),最后做页面跳转
6.struts.xml
1)constant标签
修改struts中的默认配置
2)package
package指的是包,struts.xml中可以添加多个package,但是,一般一个配置文件,就只有一个package,对所有的action进行分类管理
属性
name : 分类的包名,或者说package的模块名,一般命名需要见名知意、
namespace : 属于请求地址(url)的组成部分。一般如果有指定name,那么namespace会和name保持一致
那么action的请求地址,需要在action的name属性之前,加上namespace
在同一个namespace中,action的name,不能重复
extends: 继承,值为其他package的name属性,一般来说,自定义的package没有互相继承,只会继承自Struts的默认package,即struts-default,默认。
因为继承自默认的配置,所以struts在加载配置文件的时候,一定是先加载struts-dufault.xml配置文件
3)action
请求地址和处理请求的类,方法之间的映射,以及方法返回值和跳转页面之间的映射
属性
name: 请求地址
class:处理请求的类地址
method: 处理请求的类中的方法名
4)result
方法返回值和跳转页面之间的映射
name:匹配的是方法返回值
标签中的text文本: 跳转的页面
type: 跳转的方式
type默认取值:dispatcher: 转发
chain:转发到其他Action
redirect: 重定向
redirectAction:重定向到其他Action
stream: 一般用于ajax,或者文件下载
使用chain
5)global-results
全局的返回配置
当方法返回值,没有在对应的action中找到相应的result标签,那么会去全局配置中找,只能用于当前的package,或者是继承了当前package的请求。
平级关系的package,不可用
当浏览器请求/resultTest.action时,核心过滤器会拿resultPage 字符串到action标签中找对应的result,发现没有,那么会继续去global-results配置中去匹配
最终的结果,就是浏览器请求/resultTest.action ,页面会跳转到index.jsp
6)include
项目中,action很多,为了分类管理,会整理成N个配置文件,这个时候,一般主配置文件会引入其他的配置文件(当然,也可以在核心过滤器启动的时候,告诉它加载多个配置文件)
路径变化,include也需要指定
7)struts.xml配置文件目录
如果重命名或者是路径有改变,需要在核心过滤器中配置
路径变化,include也需要指定
7.Action定义
1)自定义对象
配置使用:
如果配置的时候,没有指定method,那么struts流程??
2)实现Action接口
配置:
在实现了Action接口的HelloAction2中,也还是支持第一种配置方式,自定义方法,配置action中指定method
3)继承ActionSupport类
--推荐
可以指定method,也可以不指定,不指定,默认调用execute方法
ActionSupport类,集成了Struts中的校验框架,如果要使用struts中的校验框架,那么Action就一定高继承ActionSupport
一般来说,使用Struts2,都会有一个BaseAction
BaseAction extends ActionSupport{
private HttpServletRequest request;
private HttpServletResponse response;
private HttpSession session;
}
自定义Action 继承BaseAction
8.访问ServletAPI
BaseAction
子类继承
9.Action动态调用
actionName!methodName.action
struts-company.xml
Action配置相似,减少重复的配置,struts提供了actio动态访问,访问的时候动态指定需要调用的method
1)定义公共的action
2)打开动态调用
3)访问
actionName!methodName.action
使用占位符动态调用
struts-company-all.xml 页面请求地址:index.jsp
查询流程:
更新流程,操作之后,需要转发到其他的action
10.前后台传参,数据传递
1)jspAction,传参
a.简单类型String,int
定义全局变量,以及框架调用赋值的set方法
b.自定义实体类
定义全局变量,提供set方法
自定义实体类,需要同时定义get/set方法,只有set不行,框架在赋值的时候,需要调用Action的getCompany方法获取对象
方法中直接使用company变量
jsp中传参,name=Action中的全局变量名.属性名
c.包装类
自定义对象中含有自定义对象。也是使用导航符 属性名.属性名.属性名
d.使用ModelDriven
1.实现ModelDriven接口,指定类型
2.提供getModel方法,方法中对company进行实例化
3.jsp页面,控件的name属性直接匹配实体类的属性名
2)Actionjsp 数据传递
request.setAttribute,session.setAttribute
Springmvc ,使用ModelAndView,ModelMap
Struts数据传递相对来说,更简单一点。只要Action中的全局变量有值,并且提供了get方法,跳转的页面就可以使用el取值-----》针对的是转发的跳转方式。
如果是重定向,需要使用session进行传值
方法中赋值
jsp中
或者赋值不是方法中,是前台提交的参数,后面跳转的页面,也可以el取值
11.校验
1)Action,需要继承ActionSupport
2)重写validate方法
此方法,在所有的方法被调用之前
在validate方法中,对参数做校验
struts只要发现你调用过addFieldError,也就是说,流程中添加过错误信息,那么,流程到validate就结束,不会继续调用方法,不继续调用方法,就拿不到方法的返回值,struts提供了默认返回值input,所以result标签需要另外配置
jsp页面拿错误信息,使用struts标签库
针对某个特定的方法做的校验, 方法名= validate+需要针对的方法的名称,第一个字母大写
s标签需要struts框架解析返回。
12.struts2+spring+mybatis
1)导包
1.struts所有的包。拷贝teacher_struts2下的所有包
2.spring+mybatis所有的包。拷贝teacher_spring_mybatis04版本下的包
3.struts和spring的集成包
2)配置
1.struts.xml
2.applicationContext.xml
3.sqlMapConfig.xml
4.log4j.properties
5.web.xml
struts2的核心过滤器
spring的监听配置
mapper + action配置版本
根据企业编码查询企业信息
1.Company.java,company.xml,CompanyMapper.java,
CompanyServiceImpl.java,CompanyService.java
CompanyAction.java
index.jsp,companyDetail.jsp
2. company.xml需要注册到sqlMapConfig.xml中,还需要配置别名
3. applicationContext.xml中需要配置bean
service使用注解
action使用bean配置
action需要配置成多例
4.struts.xml中的action配置
action中的class属性值为bean节点的ID值
5.index.jsp确认请求地址
mapper + action注解版本
将Action的bean配置,使用注解
相关推荐
- 谷歌正在为Play商店进行Material Design改造
-
谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...
- 企业网站免费搭建,定制化建站CMS系统
-
科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...
- 您需要的 11 个免费 Chrome 扩展程序
-
来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...
- 户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案
-
在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。 从其结构设计来看,矩形框架虽主要为适配紧凑空...
- 一个基于NetCore开发的前后端分离CMS系统
-
今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...
- 本地Docker部署ZFile网盘打造个人云存储
-
前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...
- pcfcms企业建站系统 免费+开源的企业内容管理系统
-
项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...
- 【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...
- java开源cms管理系统框架PublicCMS后台管理系统
-
一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...
- 一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!
-
一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...
- 《搜神札记》:不应磨灭的惊奇(小说《搜神记》)
-
□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...
- 《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)
-
“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...
- 《助人技术》第一章助人引论内容框架
-
第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...
- AI助手重构读后感写作流程:从提纲到完整性思考的转换
-
大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...
- 图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)
-
做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)