struts2标签

struts2学习:基础学习-1

匿名 (未验证) 提交于 2019-12-03 00:26:01
一、为什么要学习Struts2 固定编码步骤,提高编码效率。 框架都是半成品 二、开发人员用Struts2天天写什么? 1、控制器:核心组件(框架提供的) 不同:过滤器要比 Servlet 强大,过滤器有权利决定是否放行。 总结: Servlet 能做的, Filter 都能做。 2 、配置文件:指挥控制器运作(日后经常写) 3 、动作类:处理逻辑(日后经常写) 4 、 JSP :展现结果(日后经常写) 三、Struts2的历史 四、搭建Struts2的开发环境 1、拷贝jar包 参考发行包中的struts2-blank.war中的jar 2、配置核心过滤器(控制器) 3、建立struts.xml的配置文件,放在应用的类路径的顶端(开发中:src目录下) 4.验证是否成功:部署到Tomcat中,启动,只要没有报错,就是OK。 5、写struts配置文件没有提示的问题 1、找到dtd,放到某一个目录中。WEB-INF/dtd 五、Struts2的执行流程全图(面试) Struts2的工作流程: 一:客户端提交一个HttpServletRequest请求,(.action或JSP页面) 二:请求被提交到一系列的Filter过滤器,如ActionContextCleanUp和FileterDispather等。 三:FilterDispatcher是Struts2的控制核心

Struts2学习-3 : OGNL表达式详解

匿名 (未验证) 提交于 2019-12-03 00:26:01
OGNL表达式详解 1,OGNL:Object Graph Navigation Language 2,OGNL不仅可以调用属性,还可以调用普通方法 < s:property value = '"abcdefg".toCharArray()[0]' />< br /> < s:property value = "#context['com.opensymphony.xwork2.ActionContext.locale']" /> < s:property value = "11111111111111111H" />< br /> 3:OGNL获取属性等 <% request.setAttribute( "str" new "a" , "b" , "c" }); %> < s:debug ></ s:debug > < s:property value = "#request.str.length" />< br /> < s:property value = "#request.str['length']" />< br /> < s:property value = "#request.str['len'+'gth']" />< br /> 4.1链式表达式(Chained Subexpressions): < s:property value = " 110H

(八)Struts2进阶之值栈详解

匿名 (未验证) 提交于 2019-12-03 00:18:01
在Servlet中,我们都是把数据放在域对象中,然后在jsp页面中进行读取。那么在Struts2中,提供了另外一种存储机制,就是 ֵջ ,在action中把值放入值栈,在页面中进行读取。 action:每次访问的时候都会创建一次。 servlet:默认在第一次访问的时候创建,在生命周期里只会创建一次。 我们创建一个LifeAction来看看 @SuppressWarnings ( "serial" ) public class LifeAction extends ActionSupport { public LifeAction () { System.out.println( "action创建了。。。。" ); } @Override public String execute () throws Exception { // 没有操作 return NONE; } } 在该类中有一个构造方法,每次创建action的时候都会打印信息。 在struts.xml中配置action < action name = "life" class = "com.codeliu.action.LifeAction" > </ action > 访问后,每次刷新页面,都会创建一个action对象。 每次创建一个action对象,都会跟随着一个值栈对象,也就是说 每个action里面都有一个值栈

SpringMVC 、Struts2之间的区别

匿名 (未验证) 提交于 2019-12-03 00:09:02
一、Spring与SpringMVC的区别: spring是一个开源框架,是为了解决企业应用程序开发,功能如下: 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 1、轻量――从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外, Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 2、控制反转――Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反――不是对象从容器 中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 3、面向切面――Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的――完成业务逻辑―― 仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 4、容器―

struts2的使用入门

匿名 (未验证) 提交于 2019-12-02 23:47:01
虽然说Struts2现在已经被SpringMVC框架淘汰了,据说是有很多安全漏洞。但是Struts2作为一个成熟的MVC框架,还是有必要了解一下的,好歹是曾经风光一时的前辈,老祖宗的东西不能丢下,里面有很多设计思想都是值得借鉴的。 哈哈哈,前面说的话逼格是不是很高,连我自己都不信。其实是因为最近在维护SSH(Struts2+Spring+Hibernate)框架写的老项目啦,其中有些代码甚至可以追溯到2004年,简直666。虽然是年代久远的祖传代码,很不愿意维护,但是工作要紧,还是要学习一下Struts2的使用。 Struts2编写Action的三种方式 1.创建普通类。 自己创建的普通类需要人为定义常量SUCCESS,而且没有表单校验等功能,需要自己编写代码实现。 package com.test.struts2; public class TestAction { public String execute() { return "success"; } public String add() { return "success"; } public String delete() { return "error"; } } 2.实现Action接口。 Action接口中定义了常量SUCCESS。 package com.test.struts2; import com

Struts2

匿名 (未验证) 提交于 2019-12-02 23:32:01
Struts2 个人总结: 跟servlet很相似,servlet是在web.xml里面配置,在XXXservlet类里写具体实现-----取调转 Struts2 是在 web.xml声明核心过滤器,具体的配置写在struts.xml里面,而具体实现写在action类里面,套路差不多,只是要注意写业务逻辑代码 使用框架步骤 一、新建web项目 二、添加Struts2框架支持文件 添加jar包 三、新建jsp页面 引入Struts标签库 <% @taglib prefix = "s" uri = "/struts-tags" %> 四、在web.xml中添加过滤器 <!-- struts2 核心过滤器 --> <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> *.action </url-pattern> </filter-mapping> 五、创建业务控制器XXXAction类 1

day26_Struts2学习笔记_03

匿名 (未验证) 提交于 2019-12-02 21:53:52
一、国际化概念(了解) 1、什么是国际化 软件 的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。 2、什么需要国际化 用户注册的表单,有用户名,密码这5个汉字,在zh_CN语言环境,显示的就是用户名和密码。但是在en_US语言环境,显示的就应该是username和password。这就是 程序 。 用户名输入的是【张三】,密码输入的是【test】,那无论在什么语言环境都应该是是【张三】和【test】。这就是 数据 。 3、固定文本的国际化 步骤: 3.1、创建一个消息资源包 主要文件名_语言代码_国家代码.properties 。 主要文件名.properties 时,表明它是 默认资源包 。浏览器会根据不同的语言环境找对应语言环境的资源包,当没有找到时,找默认的。 相同的key 和 对应语言环境的value 组成。 message_zh_CN.properties 、 message_zh_HK.properties 、 message_en_US.properties 3.2、读取资源包中的内容 国际化的小测试,如下图所示: jsp中使用国际化: 配置文件 message_zh_CN.properties 和 message_en_US.properties 的书写: login.jsp文件

Struts2 常用标签

匿名 (未验证) 提交于 2019-12-02 21:52:03
Struts中的标签可分为2类: 通用|普通标签 包括流程控制标签、数据访问标签 UI标签 包括表单标签、非表单标签 Struts2中的标签均带有前缀s。 常用的流程控制标签 1、if-elseif-else标签 条件判断 <s:set var="score" value="95" scope="request" /> <s:if test="#request.score>=80">优秀</s:if> <s:elseif test="#request.score>=60">及格</s:elseif> <s:else>不及格</s:else> test指定条件,满足条件时,显示标签体的内容。 2、iterator标签 迭代Array、List、Map <% List<User> list=new ArrayList<>(); list.add(new User("刘备", 28)); list.add(new User("关羽", 25)); list.add(new User("张飞", 18)); request.setAttribute("list",list);%> <table> <s:iterator var="user" value="#request.list"> <tr> <td><s:property value="#user.name" /></td> <td>

Struts2的Stack Context和ValueStack

淺唱寂寞╮ 提交于 2019-12-02 21:02:41
1、提到Struts2的传值功能时,经常会见到Stack Context和ValueStack等概念,那么它们到底是什么,有什么作用呢。 ValueStack(值栈):Struts2将OGNL上下文设置为Struts2中的ActionContext(内部使用的仍然是 OgnlContext),并将值栈设为OGNL的根对象。 ActionContext:一次Action调用都会创建一个ActionContext 如:ActionContext ctx = ActionContext.getContext(); Stack Object:放入stack中的对象,一般是action。 Stack Context(map):stack上下文,它包含一系列对象,包括request、session、attr、application map等。 2、访问Stack Context中的对象的属性时要使用"#对象名.属性名"的方式,使用push标签可以将原来位于Stack Context中的对象放到ValueStack的栈顶。用push标签将对象保存在ValueStack的栈顶后,只需要使用"属性名"就可以直接访问了。如下面的例子: <body> <s:bean name="cg.struts.at.User" id="user"> <s:param name="username" value="

Struts 2.0.0 – Struts Struts 2.3.24.1 漏洞解决办法

落花浮王杯 提交于 2019-12-02 21:02:04
背景介绍: Struts2 是全球使用最广泛的 Java web 服务端框架之一。Struts2 是 Struts 的下一代产品,是在 Struts1 和 WebWork 的技术基础上进行了合并的全新的 Struts2 框架。 在此之前 S2-005,S2-009,S2-013,S2-016,S2-20 都存在远程命令执行漏洞,使得大量的网站系统遭受入侵。因此,该漏洞一经曝光就在安全圈内引起轩然大波。 漏洞成因: Struts2的标签库使用OGNL[Object-Graph Navigation Language,一种功能强大的表达式语言]表达式来访问ActionContext中的对象数据。为了能够访问到ActionContext中的变量,Struts2将ActionContext设置为OGNL的上下文,并将OGNL的跟对象加入ActionContext中。 在Struts2中,如下的标签就调用了OGNL进行取值。 <p>parameters: <s:property value="#parameters.msg" /></p> Struts2会解析value中的值,并当作OGNL表达式进行执行,获取到parameters对象的msg属性。S2-029仍然是依靠OGNL进行远程代码执行。 如果使用Struts2的web应用将用户提交的数据未经过滤