struts2_core NOTE

Struts2框架核心库及安全更新详解 本文还有配套的精品资源,点击获取 简介:Struts2是一个基于MVC设计模式的Java Web开发框架,其中Action类是核心,负责请求处理和业务逻辑交互。XWork是Struts2的基础,提供类型转换、拦截器等基础功能。最新版本的"struts2-core-2.3.32"和"xwork-core-2.3.32"修复了安全漏洞,提升了企业级应用的安全性。这两个库提供了强... 阅读详情

1.过去的开发模式是:一,创建表,二,创建实体类(pojo),三,建立DAO,四,JSP/Servlet,但是有了struts2框架后就使用MVC模式,model层包括entity实体bean,dao和service,view层只是简单地不含逻辑代码的jsp页面,controler层即控制层有actionservlet、action以及struts2的核心控制器filterdispatcher,控制层是连接model层和view层之间的桥梁。

2.Struts2的MVC框架工作流程是:当请求到达时,请求会交给前端的控制器actionservlet,actionservlet维护了一个配置文件,即struts.xml,该文件指明了不同的请求对应的不同的action,然后根据不同的请求分发给不同的action,action再调用业务层的dao,dao到数据库去查找相应的数据后将数据与request绑定,再将绑定后的数据发送到客户端页面(显示层jsp),即response回去。

3.为什么要用struts2?

  因为struts2已经将MVC思想封装好了。

4.ognl表达式访问对象的格式是:Ognl.getValue(“ognl表达式”,“root对象”),“root对象”为要操作的目标对象,标准的ognl涉及三个概念:ognl引擎、root对象、context对象,当给一个ognl引擎字符串时,实际上这个字符串就是ognl表达式,ognl引擎就会用这个字符串(ognl表达式)对root对象(即要操作的目标对象)去取值或者设值,context对象其实就是一个map,上下文对象context这个map中存储的是和整个系统相关的公共数据信息,在访问root对象时(即目标对象)有些数据每次都要用到,这些数据就会被存放到context对象中。

5.Valuestack值栈的核心概念:当请求到达时,会先创建一个valuestack,并将当前的action对象放置栈顶,struts2会把valuestack放到request中(struts.valuestack),所以标签库可以访问到valuestack中的内容,栈顶的内容即为要显示的内容。

6.Struts2中的action与struts1中的action不同的是struts2中的action不是单例模式,当请求到达时会为请求创建一个action,并且会为每一个请求创建一个action,所以不用考虑线程安全问题,并且此时的action对象会被置于栈顶,action的业务方法(默认是execute())会根据输入给出相应的输出。

7.Action访问session和application的方法一:

 Actioncontext ctx=ActionContext.getContext();

 Map session=ctx.getSession();

 Map application=ctx.getApplication();

 Session和application将存在valuestack值栈中的context中,若是将其从值栈中取出可以是:<s: property  value="#session" />  <s:property value="#application" />

方法二:通过实现SessionAware接口访问session(更好):

首先是创建BaseAction implements SessionAware,然后是session的XXXAction extends BaseAction,类似的还有ServletRequestAware、ServletResponseAware、ServletContextAware。

8.配置文件中(struts.xml)多个action的class属性可以指向同一个action,只要这个action有多个方法就可以,多个方法可以决定具体可以返回哪些界面,这样做同时也节约了action的数量。

9.在配置文件中可以使用parameter标签指定pojo中的属性的值,这样的话struts2一启动pojo类中的成员变量(属性)就有值了。

10.配置文件(struts.xml)中的result标签主要是负责生成视图(jsp、json、freemaker、报表等),其实result本身也是一个类,从struts-default.xml文件中可以查到result结果类型有10种,但result的type属性如果不进行设定的话默认就是dispatcher(对应ServletDispatcherResult),result的常用类型是:dispatcher、redirect、redirectAction、stream、json,这五个。

11.Struts2封装MVC的具体体现是:model层包括entity(实体bean,如action,pojo),dao(数据访问对象,主要提供对数据库中数据的增删改查方法),service(业务层,主要由spring负责);view层主要由jsp页面负责收集、展现数据;control控制层主要由actionservlet(以及控制器)和action(二级控制器)来负责。

12.用struts2来开发项目的步骤习惯是:先写struts.xml配置文件,再写action类,最后写jsp显示页面,在编程过程中也是要一层一层的写,先构建和定义好方法,最后再实现这些方法,比如Dao可以放到最后来实现,在写项目前最好将定义的属性的名字和含义都记住,这样在项目中可以快速、避免一些问题。如果有些方法定义好了,若担心以后忘记了就可以增加 // TODO xxx的注释,并且可以通过windows--show view--tasks来跟踪这些只定义没有实现的方法,双击这些“TODO”就可以定位到没有定义的方法处。

13.Struts2的标签有通用标签、控制标签、UI标签、AJAX标签,UI标签有8个:form(封装元素)、textfield(普通文本标签)、password(密码框)、submit(提交)、textarea(文本域)、checkbox(多选)、radio(单选)、select(下拉菜单);

 <s:from></s:form>属性有theme(主题),namespace(命名空间),action,method;<s:textfield>和<s:password>属性有maxlength,size,readonly;<s:textarea>有rows,cols;<s:checkbox>属性有name(name相同即为一组)和fieldValue;<s:radio>属性有name,label,list(OGNL需要迭代的集合);listValue(作用于每个选项的提示);listKey(作用于每个要提交的值);<s:select>属性有listValue对应每一个option的文本,listKey对应每一个option提交的值,headerValue提示头的文字,headKey提示头对应的提交值。

14.在default.xml配置文件中可以看到,basicStack中包含了8个拦截器,是struts2的核心拦截器。

15.Struts2的控制流程:

   ①请求到来

   ②创建valueStack,并将当前action放置栈顶,进行初始化

   ③调用拦截器,在拦截器中是可以访问valueStack的

   ④调用action,执行业务方法,默认是execute()

   ⑤调用result,result分组生成界面展示数据给用户

   ⑥最后到页面,通过标签库取出数据

16.struts2共有五大组件:值栈valueStack,OGNL,拦截器,action,result,另外还有资源国际化。

 

Struts2框架核心文件详解与应用 Struts2是Apache软件基金会所支持的开源框架,它是用于开发基于MVC(Model-View-Controller)设计模式的Web应用程序的框架。与早期的Struts框架不同,Struts2采用了更为灵活的拦截器技术,结合了WebWork框架的优点,并基于XWork核心框架。Struts2允许开发者通过XML配置或注解来定义应用的配置信息,大大简化了Web应用的开发流程。Struts2的核心是围绕着一个中心的Action,所有的业务逻辑处理都需要通过实现Action接口来完成。 阅读详情

相关推荐

Struts2框架整合:核心jar包指南

本文还有配套的精品资源,点击获取 简介:Struts2是一个流行的Java Web应用程序MVC框架。整合Struts2时,了解并正确配置框架所需的关键jar包对于应用程序的成功运行至关重要。本文介绍Struts2的核心依赖jar包,如struts2-core.jar、xwork-core.jar、ognl.jar等,以及如何整合Spring和Hibernate框架。同时提...

weixin_35006125的博客 1176

Struts2-核心组件3

 Result Types从action生成结果,并返回组用户不同的结果值,不都需要相同的类型.结果"success"可以渲染为一JSP页面,但结果"error"可能需要发送一个HTTP头返回给浏览器.结果的类型使用"type"属性在结果节点配置.与"name"属性相似,这个属性也有一个默认值-"dispatcher"-将渲染JSPs.大多数的时间,你将使用所提供的结果类型,但有时也可

面对现实,忠于梦想 1029

掌握Struts2框架:必备六个核心包详解

本文还有配套的精品资源,点击获取 简介:Struts2是一个基于MVC设计模式的Java Web应用框架。本文深入分析了构建Struts2应用程序所必需的六个核心包的详细作用和相关知识点。了解这些包及其内部组件是高效利用Struts2框架并掌握其高级特性的关键。 1. Struts2框架概述 Struts2框架的发展历史与特点 Struts2框架作为J...

weixin_35677363的博客 1415

常用框架学习(一)——Struts2

1.1  Struts2概述1.1.1  什么是Struts2Struts2是由Apache社区的Struts1和Opensysmphony的Webwork整合而来,Struts负责对http请求的处理,Webwork负责业务逻辑处理。1.1.2 运行环境搭建1.导入13个jar包(在Struts2自带的demo中可以找到最少所需包)2.需要在web.xml文件中配置StrutsPrepareAn...

不忘初心的博客 3万+

Struts2 简介

1.    Struts2的由来:Struts 1是全世界第一个发布的MVC框架,它由CraigMcClanahan在2001年6月发布,该框架一经推出,就得到了世界上Java Web开发者的拥护,经过长达6年时间的锤炼,Struts1框架更加成熟、稳定,性能也有了很好的保证。因此,到目前为止,Struts 1依然是世界上使用最广泛的MVC框架。目前,基于Web的MVC框架非常多,

走向架构师之路 1377

Struts2核心技术 (一)

struts2struts2发展历史      经过很多年发展,Struts1已经成为了高度成熟的框架,但随着时间的发展,Struts1的局限性和缺点不断的暴露出来。      现在Struts已经分化成了两个框架      -第一个是在Struts1的基础上,融合了另一个web框架Webwork的Struts2.Struts2实质上是以Web

春水上行的博客 2万+

struts2.3.3配置以及所需的jar包

转载自http://blog.csdn.net/pg_guo/article/details/8967384 strtuts2 下开发前的部署步骤 1 导入jar包 strtuts2.3 除了基本jar包 commons-fileupload-1.2.2.jar commons-logging-1.1.1.jar freemarker-2.3.19.jar ogn

liu93的专栏 619

Struts2的一些常量和含义的应用

首先,当我们学习一个框架的时,一般可以参考框架自带的示例项目。例如struts2,刚入门的时候,可以参考其自带的blank项目。当部署完这个项目后,开启tomcat服务,在地址栏里输入请求的action路径时,可以发现,虽然没有给该action定义扩展名,但是地址里输入的action路径没有扩展名或者扩展名为action时都可以通过。为什么呢?这是由struts2的默认配置属性决定的。 ...

web开发 285

Struts2 template加载 默认是ftl的道理

Struts2 template加载 默认是ftl的道理一般情况下,如果我们需要修改struts标签的表现,方法就是: 指定使用的theme 将struts-core.jar中的theme拷贝出来,解压到classpath下目录名应该为template/${theme} 修改theme中对应的ftl文件 为什么默认使用的是ftl,在何处定义的或者配置的呢? Alternative Templ

sutonline的博客 765

struts2的配置和一个简单的例子

简介 这篇文章主要讲如何在eclipse中使用struts2,文章使用的struts2的版本是2.5.14.1,  会与其他的版本有一小点的差别,文章里已经说明。例子的完整源码在文末,亲测没有任何错误。 struts2下载 官网下载地址 USTC镜像站下载地址  最新版是2.5.14.1,这个版本的一些jar包与旧版本不太一样,不过变化不大。  具体的变化建议阅读2

萧曳丶 222

struts2升级报错struts2-core-2.5,30.jarl/struts-default.xml:152:154

struts2升级报错struts2-core-2.5,30.jarl/struts-default.xml:152:154升级报错如下进入对应位置查看源码:再查看这个类所在位置,发现它位于中的包下,而低版本升级为高版本的struts2,是独立引入xwork-core这个包的,加载时将xwork-core这个包的加载了,导致项目启动失败。

凌康的博客 923

Struts2框架

struts2是web层的框架,需要创建web工程。

s980629的博客 2097

Struts2学习笔记之Struts2核心配置

Struts2的核心配置 Struts2常量配置 常量配置 1.在default.properties 中配置 默认值,不会在该配置文件中配置 2.在struts.properties中配置 基本不会在该配置文件中配置 3.在struts.xml中配置 开发中基本上都在该配置文件中配置常量 用constant来声明常量,该标签写<struts>下面,和<package>标签同级 <!-- 声明常量 --> <constant name="" value=""&g

Atkx's Blog 631

struts2-core-2.3.15.1遇到两个漏洞升级最新版【Struts 2.5.26】

一、背景 一个老网站Struts2版本struts2-core-2.3.15.1,遇到两个漏洞。 ①被查到存在编号【Struts2 S2-045 远程命令执行漏洞,CVE编号CVE-2017-5638】;受影响版本:【Struts 2.3.5 – Struts 2.3.31 Struts 2.5 – Struts 2.5.1】。 ②升级版本过程中查询到存在另一个漏洞。计划升级到相近版本2.3.37。但在查询网上帮助时,发现有另一个漏洞;【Struts2 S2-061 远程代码执行漏洞(CVE-202.

JEFFYU328的专栏 1702

Struts2中重要的jar包

struts2 jar包说明 commons-logging-1.0.4.jar日志包 freemarker-2.3.8.jar ognl-2.6.11.jar struts2-core-2.0.11.jar 核心包 xwork-2.0.4.jar xwork所依赖的核心包,struts2也依赖于它   struts2.1.6,至少需要如下6 个jar包: struts2-core-2.1.6...

ThomasKwan的博客 510

struts2请求过程源码分析

  Struts2Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定、性能优异、设计成熟的WEB框架。   我这里的struts2源码是从官网下载的一个最新的struts-2.3.15.1-...

daxiang3255的博客 220

Struts2总结 二

struts2知识总结   1.全局的逻辑控制器为一个过滤器,负责过滤所有的请求。该过滤器引用的API类为     org.apache.struts2.disapatcher.FilterDispatcher      2.MVC:页面请求(jsp)——>逻辑控制器(Filter)——>业务控制器(Action)——>业务逻辑组件——>业务处理/DAO    3.struts2的配置文件放在cl

thunder_1985的专栏 671

Struts2教程

Struts2教程 一、初识Struts2   Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。许多框架在大家一开始学习的时候都觉得比较繁琐和多此一举,但大体都有相同的目的,那就是增强可扩展性。Str...

weixin_30415801的博客 281
上一篇: spring归纳总结(理论)
下一篇: 使用SSH集成框架开发项目步骤
communicate_
博客等级 码龄14年 65粉丝 76原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值