最近在用struts2遇到一个怪问题,struts2的默认方法老是执行两次,搞了大半天都没有找到,在最后即将放弃时终于找打了,原来是响应的页面有 一个图片标签,而图片标签请求的地址不存在,它就默认再次请求了当前请求的url,造成了两次执行struts2的方法。为此特做下次笔记,给自己和大家 分享,同时还在网络上搜索其它几个造成的方法。
(本文年代久远,请谨慎阅读)传值乱码问题在Web开发中涉及许多方面:登陆注册时,是否正确得到正确的中文用户名;修改信息时,是否可以显示提交的中文信息;
需要熟悉 ActionContext类 和 ValueStack接口 的 API 。框架为我们存数据。 1.1、利用 ActionContext 存数据 我们先看看 ActionContext.class 的源码:
1.在大多数应用中,都有文件上传功能。有两种文件上传的方式,一种是自己去解析http协议,获取文件上传的内容。另一种是通过第三方插件来实现文件上传。第三方插件一般有两种,smartfileupload(上传小文件效率比较好,没有更新),commons-fileupload。
一、OGNL配合通用标签的其他使用 1、iterator标签(很重要) 2、OGNL投影(了解) 2.1、使用过滤条件投影 2.2、投影指定属性 3、Struts2中#,$,%符号的使用(重要) 3.
文件下载http://struts.apache.org/download.cgi 第一步导入jar 包 在lib中有jar 包,不能把这些都导入到项目中 在apps 目录里面,找到实例程序,程序中直
image.png 0、初始化 struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</s
我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,几乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使用的非常多,所以我们课程中的案例也都是基于三层架构设计的。
Jquey就是一款跨主流浏览器的JavaScript库,简化JavaScript对HTML操作
一、Struts2的拦截器 1.1 拦截器概述 拦截器,在AOP( Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。 在 Webwork的中文文档的解释为—拦截器是动态拦截 Action调用的对象。它提供了一种机制可以使开发者可以定义在一个 action执行的前后执行的代码,也可以在一个 action执行前阻止其执行。同时也是提供了一种可以提取 action中可重用的部分的方式。 谈到拦
本文实例为大家分享了Struts2框架拦截器实例的示例代码,供大家参考,具体内容如下
一、前端页面引入ExtJS <script type="text/javascript" src="../../include/Ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="../../include/Ext/ext-all.js"></script> <script src="../../include/Ext/src/locale/ext-lang-zh
Struts2是一个流行的Java Web应用框架,它提供了丰富的功能来开发灵活的Web应用程序。动态表单处理是Struts2的一个重要特性,它允许我们在前端生成动态表单,并通过UI标签和值栈来处理表单数据。本文将深入介绍Struts2中的动态表单处理,以及如何使用UI标签和值栈来处理表单数据,结合实际项目中的应用场景进行说明。
result 标签中配置 action 方法的返回值到不同的路径中,如果 action 方法的返回值相同,并且到达的路径也相同,就可以使用全局结果页面配置,只需要在 package 标签中加上 global-results 标签,action 标签中就可以省略 result 标签了,这样达到代码的简化。
转载请注明:http://blog.csdn.net/uniquewonderq
Struts2_概述 Struts2 是一个用来开发 MVC 应用程序的框架. 它提供了 Web 应用程序开发过程中的一些常见问题的解决方案: 对来自用户的输入数据进行合法性验证 统一的布局 可扩展性 国际化和本地化 支持 Ajax 表单的重复提交 文件的上传下载 ….. Struts2 VS Struts1 在体系结构方面更优秀: 类更少, 更高效: 在 Struts2 中无需使用 “ActionForm” 来封装请求参数. 扩展更容易: Struts2 通过拦截器完成了框架的大部分工作. 在 St
我们再补上IUserDao和UserDaoImpl的示例代码: IUserDao.java
什么是Jquery? Jquey就是一款跨主流浏览器的JavaScript库,简化JavaScript对HTML操作 就是封装了JavaScript,能够简化我们写代码的一个JavaScript库 为什么要使用Jquery? 我觉得非常重要的理由就是:它能够兼容市面上主流的浏览器,我们学习AJAX就知道了,IE和FireFox获取异步对象的方式是不一样的,而Jquery能够屏蔽掉这些不兼容的东西… (1)写少代码,做多事情【write less do more】 (2)免费,开源且轻量级的js库,容量很小
S2-001漏洞是因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。
前言 对struts2的使用不外乎这几点,参数自动封装,拦截器的使用,数据校验,ognl表达(值栈和actionContext的讲解),struts2的标签,struts2的国际化, struts2的文件上传下载。 把这几个功能都学会了使用之后,struts2基本上就学完了。 一、数据自动封装概述 Struts2提供了一些基于拦截器的数据封装方式,一共有四种,分为 静态参数封装和动态属性封装 动态属性封装又可分为属性驱动和模型驱动 属性驱动又可分为基本属性驱动和对象图导
第一步:在表单中加入<s:token />(当然啦!要首先导入struts2的标签库 <%@taglib uri="/struts-tags" prefix="s" %>)
a) 概念 Asynchronous Javascript And XML (异步请求 javaScript And XML)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
在使用servlet开发中,表单中提交的数据到servlet后都是字符串类型,需要程序员手动进行类型转换。
参考来源:http://blog.csdn.net/inter_peng/article/details/41021727
参考来源:http://www.xuebuyuan.com/2153333.html
什么是拦截器 拦截器Interceptor…..拦截器是Struts的概念,它与过滤器是类似的…可以近似于看作是过滤器 为什么我们要使用拦截器 前面在介绍Struts的时候已经讲解过了,Struts为我们实现了很多的功能,比如数据自动封装阿..文件上传功能阿….Struts为我们提供的这些功能都是通过拦截器完成的…… 数据自动封装通过<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersIntercep
获取请求参数 本人独立博客https://chenjiabing666.github.io 在Servlet中可以调用HttpServletRequest的getParameter()的方法接收传递过来的请求参数,但是在struts2中对这种方式进行了三种封装 我们一般发出请求都是通过表单传递的,但是在服务端如果获取表单传递过来的值,其中有三种不同的方式 属性驱动 属性驱动就是将一个Action类作为一个POJO类,在类中定义表单的请求参数的name属性,但是还要为这些成员变量设置get,set方法。因为在
终于开始第三章啦,O(∩_∩)O哈哈~,今天这一章主要讲Struts 2的标签库,以理论居多,权当下饭啦。
SSH框架(三) 常用WEB框架Struts1、Struts2和Spring MVC三者的区别
版权声明:本文为博主原创文章,未经博主允许不得转载。
Struts2 基础知识学习总结 Struts2 概述:Struts2 是一个用来开发 MVC 应用程序的框架,他提供了 Web 应用程序开发过程中的一些常见问题的解决方案,比如对于用户输入信息合法性的验证,统一的布局,国际化等,既然有 Struts2 那么肯定有 Struts1,但是从本质上讲 Struts2 不是从 Struts1 扩展而来的,更应该说是一种换了品牌标签的 WebWork 更合适。 struts1 VS struts2 struts1 里使用 ActionServlet 作为控制
拦截器分类:1) struts框架自带拦截器: sturts-default.xml文件中里有多种拦截器如params.......等, 在struts.xml中只要包extends了struts-default,那么每个Action都拥有一些拦截器,拥有的这些叫默认拦截器栈defaultStack 2) 自定义拦截器(权限控制等) 如何自定义拦截器: 1) com.opensymphony.xwork2.interceptor.Interceptor接口 ----------> (只有init,destroy,intercept方法) 要实现接口里的三个方法: public void destroy(){} public void init(){} public String intercept(ActionInvocation invocation) throws Exception {
S2-007漏洞一般出现在表单处。当配置了验证规则 <ActionName>-validation.xml 时,若类型验证转换出错,后端默认会将用户提交的表单值通过字符串拼接,然后执行一次 OGNL 表达式解析并返回。要成功利用,只需要找到一个配置了类似验证规则的表单字段使之转换出错,借助类似 SQLi 注入单引号拼接的方式即可注入任意 OGNL 表达式。
struts2 ModelDriven & Prepareable 拦截器 前面对于 Struts2 的开发环境的搭建、配置文件以及 Struts2 的值栈都已经进行过叙述了!这次博文我们讲解利用 S
Struts2这个框架每年都会出现那么几个漏洞,不得不引起斗哥学习的兴趣。本期将从Struts2的一个罪魁祸首ONGL表达式开始介绍到S2-001漏洞的分析。Struts2系列的漏洞涉及Java Web等相关内容,后续会持续更新漏洞分析以及相关知识背景介绍等。
1.servlet 如何实现文件的上传和下载? 1.1上传文件 通过前台选择文件,然后将资源上传到(即新建一个文件)到发布的资源文件下面, 下载就是url 到发布的资源文件,触发即可自动下载。服务器已经封装了如何下载的底层实现。(此处用的是tomcat) JSP上传文件方法: 关于在HTTP request 中通过Post方法提交文件的规范,该项目性能稳定快速,易于部署和使用.本次教程以前端jsp + 后端 servlet的方式,利用JSP上传文件,你也可以完全在jsp中实现而不用servlet. 在开始
@InitBinder用于在@Controller中标注于方法,表示为当前控制器注册一个属性编辑器或者其他,只对当前的Controller有效。
if session("ok")=true then response.write "错误,正在提交" response.end end if
Struts2 概述:Struts2 是一个用来开发 MVC 应用程序的框架,他提供了 Web 应用程序开发过程中的一些常见问题的解决方案,比如对于用户输入信息合法性的验证,统一的布局,国际化等,既然有 Struts2 那么肯定有 Struts1,但是从本质上讲 Struts2 不是从 Struts1 扩展而来的,更应该说是一种换了品牌标签的 WebWork 更合适。
1.使用struts2时,有时候需要对数据进行相关的验证。如果对数据的要求比较严格,或对安全性要求比较高时,前端 js 验证还不够,
前言 前面Struts博文基本把Struts的配置信息讲解完了…..本博文主要讲解Struts对数据的处理 Action开发的三种方式 在第一次我们写开发步骤的时候,我们写的Action是继承着Act
本章主要内容是结合前面所学的Struts2框架知识,编写一个简单的借书系统的实例,其实这些主要是JavaWeb的知识,用Struts2开发而已,基础比较扎实的同学可以随意看看,但是这个项目会一直使用,后面学了Spring和Hibernate以及Mybatis后,会重构这个实例,推荐一看。
总结了一部分 Strtus2 漏洞,虽然现在这部分的漏洞很少了,但也是学习的一部分,收集的并不全面,后续会做补充。
领取专属 10元无门槛券
手把手带您无忧上云