Java-SpringMVC
Spring-MVC1.SpringMVC快速入门采用MVC三层架构创建spring,因为web包下的servlet大都具有共有行为,即:接收数据,调用service对象,因此可以将共有行为提取出来,交由spring组件帮忙创建(前端控制器),而开发者只需要编写相关controller来实现一些特有行为。
执行流程:
需求:客户端发起请求,服务器接收请求,执行逻辑并进行视图跳转。
开发步骤:
导入SpringMVC相关坐标
配置SpringMVC核心控制器DispatherServlet
创建Controller类和视图页面
创建注解配置Controller类中业务方法的映射地址
配置SpringMVC核心文件spirng-mvc.xml
客户端发起请求测试
导入坐标:
123456首先,导入SpringMVC坐标:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <ve ...
Java-Spring集成Web环境
Spring集成Web环境1.Spring继承junit原始问题:在测试类中,每个测试方法都有以下两行代码:
12ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");UserDao userDao = (UserDao) app.getBean("UserDao"); //userDao为一个例子
这两行代码的作用是获取容器,如果不写的话直接会提示空指针异常,所以又不能轻易删掉。
但是,一个项目下会有多个测试类,每个测试类都需要执行这两行代码,这就存在大量重复工作,因此,可以用Spring继承junit,让SpringJunit来创建Spring容器
集成步骤:
导入Spring集成junit的坐标
使用@Runwith注解替换原来的运行期
使用@ContextConfiguration指定配置文件或配置类
使用@Autowired注入需要测试的对象
创建测试方法进行测试
首先导入Springjunit坐标
12 ...
Java-Spring注解开发
Spring注解开发:通过采用注解的方式进行开发,替代原先在xml中的配置文件标签。
1.Spring原始注解:Spring原始注解主要是替代< Bean >标签的配置
给出图总:
具体介绍:
1.@Component可以在web,service,dao层三层上实例化bean,后跟参数为bean中的id。
1@Component("UserDao")
但为了增加可读性,即能很好的观察当前注解的哪一层,采用@Repository注解用于dao层,@Service注解御用service层,采用@Controller注解用于web层。
123@Repository("UserDao") //dao层注解,放在userDao实现类上方@Service("UserService") //service层注解,放在service实现类上方@Controller("UserController") //web层注解,放在web实现类上方
2.@Autowired替代依赖注入的标签, ...
Java-Spring配置文件
Spring配置文件:1.Bean标签基本配置:用于配置对象交由Spring来创建、
默认情况下他调用的是类中的无参构造函数, 如果没有无参构造函数则不能创建成功。
基本属性:
id:Bean实例在Spring容器中的唯一标识
class:Bean的全限定名称。
2.Bean标签范围配置:scope:指对象的作用范围:取值如下:
注意:
1.Spring中scope默认值为”singleton“
2.当sope的取值为singleton时,
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例。
Bean的生命周期:
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
3.当sope的取值为prototype时,
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例化Bean
Bean的生命周期:
对象创建:当调用对象时,创建新的对象实例
对象运行:只要对象在使用中,就一直活着
对象 ...
Java-Spring入门
Spring入门:1.Spring是什么Spring时分层的Java SE/EE应用full-stack 轻量级开源框架,以 IOC(反转控制)和 AOP (面向切面编程) 为内核。
提供了展现层SpringMVC和持久层Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。
2.Spring的优势
方便解耦,简化开发
即:在service层中不需要new 一个dao层对象,而是交给spring去创建对象,然后再拿来用。
AOP编程的支持
声明式事物的支持
方便程序的测试
方便集成各种优势框架
降低J啊v啊EE API的使用难度
Java 源码时经典的学习范例
3.Spring的体系结构
4.Spring程序开发步骤1.导入Spring开发的基本包坐标
2.编写Dao接口和实现类
3.创建Spring核心配置文件
4.在Spring配置文件中配置UserDaoImpl (dao层mapper文件)
5.使用Spring的API获得 ...
Java-Filter/Listener
Filter
概念:Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。
过滤器可以把资源的请求拦截下来,从而实现一些特殊的功能。
过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等。。
Filter快速入门:1.定义类,实现Filter接口,并重写其所有方法
2.配置Filter拦截资源的路径:在类上定义@WebFilter注解
3.doFilter方法中使用chain.doFilter(request,response)方法放行。
4.Filter可以根据需求,配置不同的拦截资源路径。
拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截
目录拦截:/user/*:访问/user目录下的所有资源,都会被拦截。
后缀名拦截:*jsp:访问后缀名为jsp的资源,都会被拦截。
拦截所有:/*:访问所有资源,都会被拦截
Filter执行流程:
Filter链(多个过滤器)
接下来对登录注册页面进行过滤,即保证用户在不登陆的情 ...
Java-Cookie/Session
CookieCookie基本使用:
Cookie:客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问
Cookie基本使用
1.创建Cookie对象,设置数据
1Cookie cookie = new Cookie("key","value");
2.发送Cookie到客户端: 使用response对象
1response.addCookie(cookie):
3.获取客户端所携带的所有Cookie,使用request对象
1Cookie[] cookies = request.getCookies();
4.遍历数组,获取每一个Cookie对象: for
5.使用Cookie对象防火获取数据
Cookie存储时间设置
cookie.setMaxAge( time ) 其中time以秒为单位,例如一周表示为60 * 60 * 24 * 7
Session
服务器绘画跟踪技术:将数据保存到服务器
JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能
使用:
1。获取 ...
Java-MVC
MVC模式
MVC是一种分层开发的模式,其中:
M:Model,业务模型,处理业务
V:View,视图,界面展示
C:Controller,控制器,处理请求,调用模型和视图
MVC好处
职责单一,互不影响
有利于分工协作
有利于组件重用
三层架构
数据访问层:对数据库的CRUD基本操作(Dao包/Mapper包)
业务逻辑层:对业务逻辑进行封装,组合数据访问层中基本功能,形成复杂的业务逻辑功能(Service包)
表现层:接收请求,封装数据,调用业务逻辑层,相应数据(web包/controller包)
MVC模式和三层架构对照:
案例:实现需求:
环境准备:
创建新的模块brand,引入坐标
创建三层架构的包结构
数据库表tb_brand
实体类Brand
MyBatis基础环境
Mybatis-config.xml
BrandMapper.xml
BrandMapper接口
过程:1.首先new一个maven模块brand,配置pom.xml123456789101112131415161718192021222324252627 ...
Crypto-Steamgame系列
Crypto-streamgame系列题目:首先给出大佬博客链接:(32条消息) streamgame系列的总结_T1an5t的博客-CSDN博客_streamgame2
题目:streamgame1,来源:2018强网杯:12345678910111213141516171819202122232425262728from flag import flagassert flag.startswith("flag{")assert flag.endswith("}")assert len(flag)==25def lfsr(R,mask): output = (R << 1) & 0xffffff i=(R&mask)&0xffffff lastbit=0 while i!=0: lastbit^=(i&1) i=i>>1 output^=lastbit return (output,lastbit) R=i ...
Crypto-LCG(线性同余方程)
什么是 LCG线性同余算法,用来生成伪随机数
线性同余法最重要的是定义了三个整数,乘数 a、增量 b 和模数 m,其中 a,b,m 是产生器设定的常数。
公式
1X[n+1] = (aX[n]+b) mod m
其中 a,b,m 是三个用来生成伪随机数的常量
举个例子,就是上一个数是 114,设 a=10,b=12,c=514,那么下一个伪随机数就是
(114 * 10 + 12)% 514 = 124
解题需要用到的公式
目的
公式
X [n+1] 反推 X [n]
X[n] = (a** (-1) ( X[n+1] - b ) ) % m
求 a
a = ( ( X[n+2] - X[n+1] ) ( X[n+1] - X[n] ) ** ( -1 ) ) % m
求 b
b = ( X [n+1] - a X[n] ) % m
求 m
t[n] = X[n+1] - X[n],m = gcd ( ( t[n+1]t[n-1] - t[n]t[n] ) , ( t[n] ...