05 2020 档案
摘要:Springmvc执行流程步骤说明: 1)用户发起请求,web服务器会接收到请求,并将请求根据web.xml中的配置,转到springmvc 前端控制器(DispatcherServlet) 2)前端控制器调用处理器映射器(HandlerMapping)去查找处理该请求的处理器(Handler)和拦
阅读全文
摘要:众所周知,一个项目下面的WEB-INF目录是不直接访问的,在我们开发项目的时候也通常把一些jsp页面和一些重要的文件放在这个目录下面,为了不让它被随意的改变,以提高它的安全性;那么,有时候我们有需要访问它的时候,该如何访问它呢?我这里是使用了添加配置文件的方法来做的; 1)在springmvc的配置
阅读全文
摘要:一、文件上传; 1) 前台表达提交文件; upload.jsp页面:<body> <%--文件上传必须指定为post方式提交表单 enctype:指定为ultipart/form-data --%> <form action="${pageContext.request.contextPath}/f
阅读全文
摘要:此答案为转载过来的,我是作为笔记,如有侵权,请原谅; 优点: 它的作用是取出部署应用程序的名字,这样不管如何部署,所用的路径都是正确的。(得到的是一个绝对路径) 缺点:其他工具无法正确解析它 什么是当前的项目名称呢? 假定你的web application 名称为test,这个test就是当前的项目
阅读全文
摘要:题目: 编写一个拦截器,在拦截器中获取登录用户的角色名, 如果角色名为admin,则允许操作StudentController的方法; 如果角色名为test,则允许操作UserController的方法; 如果没有权限,则跳转到一个特定的jsp页面,提示权限不足; 一、先写一个显示在浏览器端的登录页
阅读全文
摘要:拦截器可以在控制层Controller方法前后执行对应的操作,以实现登录拦截,权限控制等功能。 1)编写拦截器,实现HandlerInterceptor接口; //控制层拦截器实现 public class LoginInterceptor implements HandlerInterceptor
阅读全文
摘要:(1)@JsonFormat注解; 可以在get方法上,或属性上使用@JsonFormat(pattern="yyyy-MM-dd");而且指定对象以json传递时,显示的日期格式,优先级高于全局变量;即第一种和第二种方法如果同时存在,会以第一种的格式为准; //指定对象以json格式传递时,显示的
阅读全文
摘要:js中报404是经常出现的问题,下列是一些高频原因; <script src="${pageContext.request.contextPath}/static/js/jquery-3.2.1.min.js"></script> 经常会出现配置了,但却没有识别到的问题; 1)路径写错; 路径写错也
阅读全文
摘要:一、写一个名字为student.java的类; public class Student { private Integer id; private String name; private Integer age; //指定对象以json格式传递时,显示的日期格式 ,优先级高于全局配置 @Json
阅读全文
摘要:①在springmvc方法上添加@ResponseBody注解,springmvc会将数据转换成json并返回; @ResponseBody //指定返回json数据,不跳转页面 @RequestMapping("/list") public List<User> list(User user){
阅读全文
摘要:springmvc中的页面跳转方式有转发和重定向两种; 1)转发:直接return对应的页面地址即可; @RequestMapping("/hello") public String hello(String name,Integer age){ System.out.println("name:"
阅读全文
摘要:1) 在springmvc方法的形参中定义Map,Model,ModelMap,并在方法中通过这三个对象进行值的传递; ①其中Map和ModelMap使用方式是一致的; @RequestMapping("/detail") public String detail(Integer id, //Mod
阅读全文
摘要:我们在使用idea中做一个比较大的项目时,我们通常会将不同类的jsp页面分成不同的包下,但随之,我们查询的路径也将随之改变; ①建包的情况; 控制层的路径为: 浏览器的地址栏的路径为: ②不建包的情况下; 控制层的路径为: 浏览器地址栏的路径为: 这里你主要还是要区分什么是相对路径,什么是绝对路径;
阅读全文
摘要:例:http://localhost:8086/springmvc/userRegister.jsp以/开头的是绝对路径,地址跟在端口号后面,通常项目中都使用绝对路径来定位${pageContext.request.contextPath}:获取项目访问名==>http://localhost:80
阅读全文
摘要:打开浏览器,按F12,即出现调试页面,或者点击右上角->更多工具->开发者工具; 在Source里选择你要调试的代码,然后在代码的左边打上断点、刷新页面就可以进入调试模式了。 调试按钮在右上角。 其中 F8 是运行到下个断点,如果下面没有断点了,就直接调试完成 F10 是逐行代码调试,遇到方法调用,
阅读全文
摘要:一、我们使用一个东西,应该先明白它是什么,先明白它的概念,才能更好的掌握它; 热部署就是正在运行状态的应用,修改了他的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效。 热部署为了解决的问题有两个; ①在开发的时候,修改代码后不需要重启应用就能看到效果,大大提升
阅读全文
摘要:众所周知,我们在使用idea重启tomcat时,有四个有些许不同的重启方式,我们如果用对了重启方式的话,还是能节省一些启动时间的,那么接下来让我们分别介绍一下这四种重启方式吧; ①Update resources:更新静态的资源,比如html,js,css等 运行模式和调试模式都是立即生效;②Upd
阅读全文
摘要:下列哪个表达式不可以作为循环条件 ? i=5 i<3 bEqual=str.equals("q") count==i 答案是:A 首先我们要清楚,循环条件要满足什么; 循环条件一般是布尔类型的表达式,不管while,do……while还是switch亦或是for,都是判断条件满足的情况下结束循环,在
阅读全文
摘要:springmvc 获取前台请求数据方式 1)基本数据类型或String,在方法参数中定义参数,参数名与请求传递数据名一致即可自动封装; // RequestMapping:指定方法对应的请求地址 //return:页面地址,表示方法执行完成之后跳转到对应的页面(转发) //springmvc:接收
阅读全文
摘要:在创建web项目时,如果我们不配置编码过滤器的话,经常会遇见一些中文乱码问题,而我们在web.xml文件上加上编码过滤器即可; <!-- 编码过滤器--> <filter> <filter-name>encodingFilter</filter-name> <!-- 指定spring编码过滤器-->
阅读全文
摘要:1)创建项目(web项目),导入依赖; 下面是pom.xml文件的相关配置: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www
阅读全文
摘要:Springmvc属于spring框架的一个子项目。用来实现web开发的mvc功能。功能与Struts2类似。在mvc中充当控制层。Springmvc相较于struts2性能和开发效率更高,且可以和spring无缝整合。
阅读全文
摘要:AOP的通知类型 Aop的通知类型,主要是定义通知方法的触发时机。主要包括: 1) 前置通知:before 在连接点方法执行之前执行。 <aop:before method="before" pointcut-ref="timePointcut"></aop:before> 2) 后置通知:afte
阅读全文
摘要:有时网上看到有的Word电子书的目录设置在左侧,既方便,又漂亮,于是自己也想这样做,但是又有时候不知道该怎么做, 没改之前是这样的: 我们要想查看每一个目录的话,则需要ctrl+左键,进入此链接的内容,但是如果我们把目录放在内容的左侧的话,是不是查看起来更加方便了呀, 接下来我就来说一下具体的步骤:
阅读全文
摘要:这是一个很简单的案例,方便初学者更好理解切面的概念和实现; 我的目录是这样的,仅供参考: 1、先创建一个接口,接口中有两个方法; public interface StudentService { int insert(); int delete(); } 2、写一个实现类去实现接口中的方法; @S
阅读全文
摘要:AOP 面向切面编程 AOP 即面向切面编程,是一种编程思想。可以将一个通用代码或业务组件,通过配置的方式,动态的添加到一个或多个对象上。已实现代码的复用,和业务组件模块之间的解耦合。通常可用动态的程序扩展及一些系统层面的问题处理(日志记录,事务,权限等) AOP中相关概念: 1) Aspect 切
阅读全文
摘要:Spring对象什么时候创建? 多实例情况下,调用时才去创建。 单例情况下,spring容器初始化之后便会去创建对象。 Spring对象什么时候销毁? 如果是多实例,对象使用完便可销毁, 如果是单例的,则spring容器销毁时销毁。
阅读全文
摘要:Spring 通过IOC实现对象的管理,而IOC的具体实现,依赖于DI依赖注入对对象的属性进行赋值。 DI 通过配置文件或注解的方式指定对象与对象之间的依赖关系,并依据该依赖关系对对象属性进行赋值。 DI依赖注入的方式: 1) set方法注入:类中的属性必须实现set方法。在bean标签中配置<pr
阅读全文
摘要:IOC 即控制反转。将对象的控制权反过来交给spring进行管理。实现了对象与对象之间的解耦合。 什么是控制?控制权指的是类的对象的创建和使用的权利。 比如A类和B类,在A类中创建B类对象,并调用B类的方法,那么我们称A类有B类的控制权。 而控制反转即A类将创建的B的操作交给spring来做。A只需
阅读全文
摘要:Spring框架是一个轻量级的控制反转和面向切面编程的容器框架。其集合了java/javaee全功能一站式的应用解决方案。Spring 框架是一个分层架构,主要包括五大块的内容: 1)核心容器:用来提供spring框架的基本功能,通过IOC实现对象的生命周期的管理,以及对象与对象之间的解耦。 2)A
阅读全文
摘要:mybatis中的缓存和hibernate的缓存类似,也分为一级缓存和二级缓存; ①一级缓存:为sqlSession级别的缓存。默认开启。使用同一个sqlSession执行查询时,会先从sqlSession的缓存中去获取数据,如果缓存中不存在,再去数据库中查询,并将查询结果缓存到sqlSession
阅读全文
摘要:1) 在mybatis的主配置文件中配置开启延迟加载; 2) 关闭aggressiveLazyLoading 激进延迟加载项; <!--设置延迟加载--> <setting name="lazyLoadingEnabled" value="true"/> <!--关闭激进延迟加载--> <setti
阅读全文
摘要:ResultMap 关联映射 使用ResultMap来进行关联查询,是利用主键表和外键表的关系来处理的,它相比前面的少写了一条sql语句,效率相对较高; 通过表连接查询将所需要的数据一并查询出来,然后再通过ResultMap将结果集映射到对应的对象中;单个对象==>association,集合==>
阅读全文
摘要:public class HClass implements Serializable { public HClass(){ } public HClass(String name, String city) { this.name = name; this.city = city; } } 主要的
阅读全文
摘要:题目: public class Out{ public void somOutMethod(){ //Line 3 } public class Inner{} public static void main(String[] args){ Out o = new Out(); //Line 8
阅读全文
摘要:Mybatis中通过<association>来配置返回单个对象的关联查询,<collection>配置返回多个对象的关联查询。 关联查询的触发,必须是返回类型指定为resultMap 关联查询的要点,步骤,按着这四个步骤一步一步写,基本上没错; 1)实体类中建立引用关联 (Student类中添加H
阅读全文
摘要:Mybatis中可以是用注解来替代xml文件编写sql,即省略了.xml文件,全部代码在接口中就可以完成。 将注解写在接口上面,代替xml文件中的标签: 常用的注解有: 1)@Select:替代<select>标签 用来编写select查询语句 查询单条数据: @Select("select id,
阅读全文
摘要:1、namespace:指定关联的接口;2、用来定义sql片段 ,以供别的地方引用 id 唯一标识该片段,别的地方通过id进行引用 <sql id="allColumn"> (id,name) </sql>3、<set></set>set标签,会去除末尾的逗号4、id:指定关联的方法名 result
阅读全文
摘要:①查询出所有的记录 List<Player> selectAll(); <select id="selectAll" resultType="Player"> select * from Player </select> ②根据主键查询Player selectById(Integer id); <
阅读全文
摘要:resultType:基本映射;通过resultType指定返回的数据类型,如果返回的是集合,则指定的是集合中存储对象的数据类型,要求返回的列名必须与类的属性名一一对应,如果不一致通常可以对列取别名的方式,使列名与属性名一致;只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功;resul
阅读全文
摘要:动态SQL是mybatis的强大特性之一,mybatis中的动态sql是通过if set where choose foreache等动态标签来实现的。 ①if:根据参数条件判断是否显示某些sql; 例如:List<Teacher> selectMap(Map<String,Object> map)
阅读全文
摘要:在java中,在我们写一个java文件定义用户的属性时,有可能会出现用户定义的属性名和实际的列名不一致的问题,这时候,当我们操作一些数据的时候,就会出现一些错误,例如:当我们测试查询数据时,并不会报错,但是就是数据为空,而且数据库中也是有数据的,但就是查询出来为null;项目很大,数据很多时,我们显
阅读全文
摘要:Mybatis mxl配置文件取值方式有两种 分别是#{}和${}。 #{}是预编译的,采用占位符的方式。效率较高,可以防止sql注入。通常都是采用#{}这种方式。 select * from h_student where id=#{id}/? ${} 是直接字符拼接的方法,存在sql注入风险。通
阅读全文
摘要:1)传单个基本数据类型或String对象,#{参数名}; 2)传递的是单个引用数据类型对象,#{对象的属性名} 直接获取对象的属性值; 3)传递多个对象时,需要在参数前添加@Param注解指定参数的别名。取值#{参数别名}; 4)传递Map时,可以直接通过#{key}的形式获取value; 5)传递
阅读全文
摘要:Mybatis是一个基于sql开发的半ORM持久层框架。其内部封装了jdbc,使开发者只需要关注sql语句本身。其前身是apache的开源项目ibatis。2010年更名为mybatis。
阅读全文
摘要:1、新建一个项目; 2、导入相关的依赖包; 3、配置mybatis主配置文件,连接信息和mapper位置等; ①mybatis主配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybati
阅读全文
摘要:1、如果不清楚自己maven的路径,那么首先在idea中查看自己maven仓库的路径,File -> Settings -> Build,Execution,Deployment -> Build Tools -> Maven,然后进入此电脑中复制maven仓库位置这个路径再去查找失败的依赖包,将其
阅读全文
摘要:1)加载配置文件; 2)根据配置文件生成SessionFactory。SessionFactory通常只有一个; 3)根据SessionFactory创建Session。通常Session为请求级别。一个线程一个Session; 4)如果是DML操作需要开启事务; 5)通过session执行数据库操
阅读全文
摘要:ORM为对象关系映射。是一种解决java对象与数据库记录对应关系的一种思想。 其对应关系为: Java类 ==> 数据库中的表 类中的属性==>数据库中的列 Java类的一个对象==> 数据库中表的一条记录 Orm实现原理: 1) ORM映射文件,约定数据库表与java实体类的对应关系 2) Jdb
阅读全文
摘要:1、Hibernate框架是应用在javaEE三层结构中的dao层框架。 2、在dao层里面做对数据库的增删改查操作,使用Hibernate框架实现增删改查操作。Hibernate底层就是jdbc,对jdbc的轻量级的封装,使用Hibernate不需要写复杂的jdbc代码。 3、Hibernate是
阅读全文
摘要:所谓悲观锁和乐观锁都是为了解决并发问题而提供的一种锁机制。 1、悲观锁 悲观锁对事务并发问题持悲观态度,认为一定会出问题,所以从加载数据就开始锁定,直到事务提交。期间其他事务不能对数据进行操作。 通过数据库本身的机制来实现。即设置事务隔离级别为串行化。 2、乐观锁 由于悲观锁并发处理能力太差,hib
阅读全文
摘要:(1) 什么是事务? 事务就是被绑定在一起,作为一个逻辑工作单元的sql语句组。 (2) 事务的特性(ACID) ① 原子性:是一个逻辑工作单元,要么都成功,要么都失败。如果事务执行过程当中,有任意一个sql语句出现异常,则整个事务回滚。 ② 一致性:数据库数据必须从一个一致状态到另外一个一致状态,
阅读全文
摘要:1)瞬时态:对象刚刚创建,还没有使用session对该对象做任何操作。(数据库中不存在,session缓存中也不存在) 2)持久态:当调用session的save,saveOrUpdate等方法,将对象保存到数据库中之后,我们称之为持久态。(数据库中存在,缓存中也存在) 3)游离态:当session
阅读全文
摘要:根本区别:hibernate中对于load()方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而get()方法,hibernate一定要获取到真实的数据,否则返回null;①get()方法:会先确认id对应的数据是否存在,如果不存在,就返回nu
阅读全文
摘要:所谓关联查询即查询某个表的时候会连带查询出相关联的表的数据。 1) 一对一:例如一个员工表与员工详细表的对应关系 2) 一对多:一张表的一条记录可以对应另外一张表的多条记录。比如部门与员工的关系。 3) 多对一:与一对多相反,例如员工表与部门表之间的关系。通过外键来维护。 4) 多对多:例如一个员工
阅读全文
摘要:所谓缓存,是将数据库中的数据查询出来,放到一个内存空间中。以提高数据的查询效率。 Hibernate中支持两种缓存: 1)一级缓存:session级别的缓存。使用同一个session做相同的查询时,后面的查询会直接从缓存中获取,而不用去执行数据库查询。一级缓存默认开启,session关闭之后缓存销毁
阅读全文
摘要:Hibernate 查询方式 1)通过session进行主键查询,session.get/load update/delete/save 2)通过hql(hibernate 自己的查询语言)进行查询。Hql主要是面向对象。(面向java类和java属性) ①当hql查询所有字段时,直接写from后面
阅读全文
摘要:1) sequence 序列 oracle数据库使用 2) identity 由数据库维护。通常mysql等拥有自增主键的数据库使用 3)native 由hibernate决定。 4) uuid hibernate生成一个32位的uuid字符串作为主键 5) increment:自动增长主键,由hi
阅读全文
摘要:hibernate操作步骤:1、新建一个maven项目; 2、导入相应的包,和修改资源文件<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0.3.0</version>
阅读全文