Apache Struts

Struts2里的Result

狂风中的少年 提交于 2019-12-18 10:52:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Result 一、Result基础 Result是什么和能干什么? 简单的说,Result是当Action处理完数据后返回的一个字符串,它指定了下一个页面的位置。比如: <action name="action_1" class="struts2.com.test.ActionSupport_1"> <!--suppress Struts2ModelInspection --> <result name="success">hellowordactionsuccess.jsp</result> <!--suppress Struts2ModelInspection --> <result name="input">hellowordactionerror_1.jsp</result> </action> action返回的字符串对应的就是result标签里的name属性值。 Result有什么 对于Result 在struts2中,预定义了以下一些Result的字符常量: SUCCESS:表示Action执行成功,显示结果视图给用户,值为字符串“success”。 NONE:表示Action执行成功,不需要显示视图给用户,值为字符串“none”。 ERROR:表示Action执行失败,显示错误页面给用户

第1章 概述

隐身守侯 提交于 2019-12-17 22:15:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Spring为表现层提供的基于MVC设计理念的优秀的Web框架,是目前 最主流的MVC框架 之一。 Spring3.0后全面超越Struts2,成为最优秀的MVC框架。 Spring MVC通过一组注解,让POJO成为处理请求的控制器,而 无须实现任何接口 。 支持REST风格 的URL请求。 采用了松耦合、可插拔组件结构,比其他MVC框架更具扩展性和灵活性。 Struts1.X、Struts2.X 不要再学了。 来源: oschina 链接: https://my.oschina.net/mondayer/blog/3144183

Struts2里的Action

牧云@^-^@ 提交于 2019-12-17 11:27:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Action 一、Action基础 Action是什么 在Struts2中一个Action类就代表一次请求或者调用,每个请求的动作都对应于一个相应的Action,一个Action类是一个独立的工作单元。 Action就是用来处理请求对象的,相当于Servlet中的Servlet类。 在MVC模式中充当着模型的角色。 Action的基本配置 不管Action采用何种实现方式,要正确运行,都需要在Struts.xml中进行配置,这是使用Action的基础。 package struts2.com.test; import com.opensymphony.xwork2.Action; public class HellowordAction implements { public String execute() { return "success"; } } struts.xml的配置 <struts> <package name="verify" extends="struts-default"> <action name="registerAction" class="struts2.com.test.HellowordAction"> .... </action> </package> </struts>

Struts2 的@Result注解

坚强是说给别人听的谎言 提交于 2019-12-10 11:56:09
@Result 注解的作用就是告诉程序我的 Action 返回什么。 例如: name: 返回标识,例如: location: 本地文件 type:返回类型 redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。 redirect-action:action处理完后重定向到一个action,请求参数全部丢失,action处理结果也全部丢失。 chain:action处理完后转发到一个action,请求参数不会丢失,action处理结果不会丢失 dispatcher 为默认跳转类型,用于返回一个视图资源(如:jsp) json 返回json数据,使用json时,需要注解 @ParentPackage ( "json-default" ) 以上基于Convention插件 来源: oschina 链接: https://my.oschina.net/u/3358860/blog/3140413

Struts2中在Action里面向前端页面传值的方法总结

左心房为你撑大大i 提交于 2019-12-07 07:56:19
来自: http://www.cnblogs.com/hgfrzh/p/3401658.html 由于在Action中并不能直接诶访问Servlet API,但它提供了相关类ActionContext来访问HttpServletRequest、HttpSession和ServletContext,所以在向前端页面传值的方法就出现了多样化。一般我们经常使用的就是通过request、session来传值,至于Application范围这一级别的基本上用的少。 1. 首先如果变量是Action的全局变量,并且定义了Setter方法,那么此时无须做任何更多工作,只要它有值在前端页面就可以取到。此时取值的方法大概有这几种: 使用Java代码:<%= request.getParameter(“str”)%>, <%=request.getAttribute(“str”)%> 这两种方式通常不推荐,原则上html代码不用掺杂Java代码; 使用EL表达式:${str}; 使用Struts2标签:<s:property value=”str” /> ; 使用OGNL表达式:<s:property value=”#request.str”/>. 2. 对应方法体内的局部变量,我们可以放在request里面,也可以放在session里面。但是,只有在必要的时候才放在session里面。 (1

struts2前台传递List、Set、Map集合数据到后台

梦想的初衷 提交于 2019-12-06 16:30:16
对应数据在前台与后天中的交互,struts2框架替我们做了很大部分的数据封装工作,这里就关于一些常见类型数据传递的格式和配置注意事项做简单的记录。 主要有简单类,List集合,Set集合,Map集合数据的在前台与后天间的传递与展示 package com.supre.idisk.model; import java.io.Serializable; public class Student { private int stuId; private String stuNo; private String stuName; private String stuAge; public Student(int stuId, String stuNo, String stuName, String stuAge) { super(); this.stuId = stuId; this.stuNo = stuNo; this.stuName = stuName; this.stuAge = stuAge; } public Student() { super(); // TODO Auto-generated constructor stub } public int getStuId() { return stuId; } public void setStuId(int stuId) {

设计模式之-责任链模式(Chain of Responsibility)

杀马特。学长 韩版系。学妹 提交于 2019-12-05 08:38:25
 责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 在以下条件下可考虑使用Chain of Responsibility: 1.有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 2.你想在不明确指定接受者的情况下,想过个对象中的一个提交一个请求。 3. 可处理一个请求的对象集合应该被动态指定。 回想到,Struts2就是基于Filter(StrutsPrepareAndExecuteFilter)来继承的框架,Struts2中访问Action共需要经过很多拦截器,在struts-default.xml文件中可以进行查看,具体截图如下: 恰巧现在放在在装修,模仿Struts2拦截器的方式实现一下责任链设计模式,场景如下:现在很多的装修公司都是承包制,大的装修公司先在客户手中承包下项目,然后交由中型装修公司进行装修,但是中型装修公司可能还会将项目承包给小型装修公司。这之间在装修结束后当然会涉及到工程验收了,那么流程应该是小装修公司自己先进行验收,没问题之后交于中型装修公司验收,之后再交于大型装修公司验收,最后交到我的手中。哇奥

设计模式的学习(12)责任链模式

会有一股神秘感。 提交于 2019-12-04 08:49:35
责任链模式 责任链模式(Chain of Responsibility Pattern)为一个请求创建了一个接收者对象的链。在这种模式中,通常每个接收者都包含对另一个接收者的引用,如果一个接收者对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推,直到请求被处理为止。这种模式对请求的发送者和处理者进行解耦,属于行为型模式。 意图: 避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 主要解决: 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。 何时使用: 在处理消息的时候以过滤很多道。 如何解决: 拦截的类都实现统一接口。 关键代码: Handler 里面聚合它自己,在 HandlerRequest 里判断是否合适,如果没达到条件则向下传递,向谁传递之前 set 进去。 应用实例: 1、红楼梦中的"击鼓传花"。 2、JS 中的事件冒泡。 3、JAVA WEB 中 Apache Tomcat 对 Encoding 的处理,Struts2 的拦截器,jsp servlet 的 Filter。 优点: 1、降低耦合度。它将请求的发送者和接收者解耦。 2、简化了对象。使得对象不需要知道链的结构。

java.lang.NoSuchFieldException: resourceEntries struts2

99封情书 提交于 2019-12-02 21:05:37
1、关于项目中使用struts2 报java.lang.NoSuchFieldException: resourceEntries 的问题。 当我们使用tomcat 7.0.64 及以下的版本时是不会出问题的。当我们在使用tomcat 7.0.65时会报这个问题,网上看到很多解答都是说什么tomcat 8之类的。 实际出现问题在tomcat 7.0.65 就开始了 。出现这个问题的根源是因为。在64到65 的时候,org\apache\catalina\loader\WebappClassLoader.java 这个类进行了抽象,抽象出了org\apache\catalina\loader\WebappClassLoaderBase.java. 2、在我们用的struts2 的xwork 包内 \com\opensymphony\xwork2\util\LocalizedTextUtil.java内的清除tomcat 缓存的地方有问题。问题就初夏这个clearMap。java自带的getDeclaredField 是取不到父类的属性的。所以这里会一直报错。 最新版的这两个方法: private static void clearTomcatCache() { ClassLoader loader = getCurrentThreadContextClassLoader(); //

struts2架构网站漏洞修复详情与利用漏洞修复方案

牧云@^-^@ 提交于 2019-12-02 21:05:27
struts2从开发出来到现在,很多互联网企业,公司,平台都在使用apache struts2系统来开发网站,以及应用系统,这几年来因为使用较多,被攻击者挖掘出来的struts2漏洞也越来越,从最一开始S2-001到现在的最新的s2-057漏洞,本文着重的给大家介绍一下struts2漏洞的利用详情以及漏洞修复办法。 先从1开始吧,S2-001影响的版本是Struts 2.0.0 - Struts 2.0.8版本,最早开始的版本漏洞太低级,当时的apache官方并没有设置安全机制,导致在提交参数的时候紧接的执行了递归化查询数据,导致可以插入恶意参数进行SQL注入攻击。 s2-001漏洞的修复是将struts2的默认altsyntax功能进行关闭使用其他方式进行递归化的查询,为什么要关闭altsyntax功能是因为这个功能的标签会自动的进行表达式的安全解析,关闭该功能就不会进行解析恶意参数了。 s2-003漏洞是没有过滤恶意参数,导致可以进行参数注入,影响的版本是Struts 2.0.0 - Struts 2.0.11.2版本,这次的版本新添加了一个功能就是安全拦截器,在参数传输过程中进行了关键词安全检测,一些非法注入的参数可以被过滤掉,但是apache官方并没有过滤掉特殊编码的方式进行提交,导致伪造编码进行了sql注入攻击,该漏洞的修复方案是关于编码注入这里进行详细的过滤