spring
FixedStarHaHa
这个作者很懒,什么都没留下…
展开
-
(一)理解IOC、DI
一、业务场景业务场景: 在使用Java进行开发业务的过程中,很多时候一个业务是由各种组件组成,在每个使用到这些组件时都会毫不犹豫的new一个组件对象来使用,在小项目中这样的做法无可厚非,也不存在什么问题。但是在业务逻辑复杂并且多人协作开发的项目中,这会导致业务和组件之间的关系错综复杂而且不便于管理,对象之间的耦合度变得很高,这就是所谓的牵一发而动全身吧。 而这个问题在spring中得到了解决,...转载 2019-03-26 10:49:02 · 214 阅读 · 0 评论 -
(二十)处理器方法的参数---请求中所携带的请求参数、乱码问题characterEncodingFilter
index.jsp一、使用HttpServletRequest获取@RequestMapping("/login.do") public String login(HttpServletRequest request){ String name = request.getParameter("name") String pass = request.g...原创 2019-04-02 16:30:08 · 238 阅读 · 0 评论 -
(二十一)什么是Spring MVC ?简单介绍下你对springMVC的理解?
什么是Spring MVC ?简单介绍下你对springMVC的理解?SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。C:控制器 ①中央调度器 DispatherServl...原创 2019-04-02 16:44:31 · 3748 阅读 · 0 评论 -
(二十二)@RequestParam、用对象接收多个请求参数
请求中的参数名和处理器中的形参名不一致时用@RequestParam可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传required默认是truepublic ModelAndView doSome(@RequestParam(value="rage",required=false)) Integer age,.......原创 2019-04-02 17:10:20 · 36794 阅读 · 0 评论 -
(二十二)处理器方法返回值:ModelAndView、String、void、Object
一、返回ModelAndView(视图+数据)若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回ModelAndView较好。在使用时,若该处理器方法只是进行跳转而不传递数据,或只是传递数据而不跳转资源(比如对页面的Ajax异步响应),此时若返回ModelAndView,总有一部分多余,要么Model多余,要么View多余,此时返回ModelAndVie...转载 2019-04-02 17:39:06 · 1710 阅读 · 0 评论 -
(二十八)拦截器概述及执行流程
拦截器作用:拦截用户的请求,可以对请求做判断,处理。可以控制请求是否被处理。拦截器的执行时间点:获取到处理器的适配器之后,在处理器方法执行之前,拦截用户的请求拦截器的数量:在一个项目中0或多个拦截器是全局的,对所有的处理器对象都可以使用preHandler:返回值为boolean true:请求是能被处理的,拦截器的所有方法都会被执行...原创 2019-04-08 18:00:07 · 1357 阅读 · 0 评论 -
(二十九)多个拦截器
springmvc的拦截器实现HandlerInterceptor接口后,会有三个抽象方法需要实现,分别为方法前执行preHandle,方法后postHandle,页面渲染后afterCompletion。1、当俩个拦截器都实现放行操作时,顺序为preHandle 1,preHandle 2,处理器方法、postHandle 2,postHandle 1,afterCompletion 2,a...原创 2019-04-08 18:48:27 · 599 阅读 · 0 评论 -
(二十三)SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?
默认是单例模式所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写成员变量。为什么设计成单例模式?①性能 (不用每次请求都创建对象)②不需要多例(不要在控制器类中定义成员变量)...原创 2019-04-03 15:42:49 · 8767 阅读 · 0 评论 -
(二十三)向页面传递数据
使用Request对象保存数据 使用Session对象保存数据 使用ModelAndView保存数据 使用Model保存数据 使用ModelMap保存数据 使用HashMap保存数据 使用@ModelAttribute注解https://blog.csdn.net/qq_34598667/article/details/84134794...转载 2019-04-03 16:12:42 · 116 阅读 · 0 评论 -
(二十四)SpringMVC怎么样设定重定向和转发的?
一、转发与重定向的区别1.地址栏转发:不变,不会显示出转向的地址重定向:会显示转向之后的地址2.请求转发:一次请求重定向:至少提交了两次请求3.数据转发:对request对象的信息不会丢失,因此可以在多个页面交互过程中实现请求数据的共享重定向:request信息将丢失4.原理转发:是在服务器内部控制权的转移,是由服务器区请求,客户端并不知道是怎样转移...原创 2019-04-03 17:26:07 · 7486 阅读 · 0 评论 -
(二十五)异常处理--同一异常处理器
处理器抛出异常,给中央调度器,由中央调度器捕获异常,调用异常处理器对象,集中处理框架把视线HandlerExceptionResolver接口的类叫做异常处理器,只有异常处理器能够处理异常//定义一个简单的异常类public class CustomException extends Exception { //异常信息 public String messa...转载 2019-04-03 19:01:27 · 289 阅读 · 0 评论 -
(二十六)异常处理--自定义异常类即实现HandlerExceptionResolver
原创 2019-04-03 19:33:42 · 422 阅读 · 0 评论 -
(二十七)异常处理--注解方式@ExceptionHandler、@ControllerAdvice
需要定义在Controller中上述用@ExceptionHandler注解的方式的缺点是比如很多控制器都需要处理相同的异常,则需要在每个处理器中定义,不能共享这样就能实现业务处理和异常处理的方式分离、解耦...原创 2019-04-03 19:56:49 · 967 阅读 · 0 评论 -
(三十)自动化装配之组件扫描@Component
Spring从两个角度来实现自动化装配:组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean。自动装配(autowiring):Spring自动满足bean之间的依赖下面主要介绍组件扫描方式下面创建一个接口和对应一个实现类(bean)实现类用@Component 注解package com.jdj.spring.inf;pu...原创 2019-04-20 17:43:21 · 620 阅读 · 0 评论 -
(三十二)处理静态资源两种方式
一、<url-pattern>/</url-pattern>不能处理静态资源的原因 <!-- 使用/ 则说明将所有请求都交给servlet处理 --> <url-pattern>/</url-pattern> 将所有请求都交给springmvc,包括jsp页面中图片、css、js等资源请求,所以就会出现图片不能展示问...原创 2019-05-19 17:49:40 · 469 阅读 · 0 评论 -
(三十三)springmvc环境搭建之入门项目
一、目录结构二、web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http:...原创 2019-05-19 17:57:08 · 156 阅读 · 0 评论 -
(十二.1)使用xml方式演示AOP
一、核心代码package target;//target 目标接口 即核心代码public interface ArithmeticCalculator { int add(int i,int j); int div(int i,int j);}package target;import org.springframework.stereotype.Componen...原创 2019-05-14 19:31:07 · 113 阅读 · 0 评论 -
(十二.2)使用annotation方式演示AOP
一、核心代码package com.target;//com.target 目标接口 即核心代码public interface ArithmeticCalculator { int add(int i,int j); int div(int i,int j);}package com.target;import org.springframework.stereoty...原创 2019-05-14 20:00:54 · 82 阅读 · 0 评论 -
(十九)注解式@Controller @RequestMapping
一、@Controller:创建处理器对象,默认是单例对象 位置:在类上面二、@RequestMapping:映射Request请求与处理器 放到方法上是处理相应页面请求 放在类上表示请求地址的公共部分放在这里,省得此类中所有方法都写重复部分 比如 user/pag1.d...原创 2019-04-02 15:53:25 · 296 阅读 · 0 评论 -
(十八)SpringMVC执行流程
1.用户请求发送至前端控制器DispatcherServlet (读取web.xml配置文件)DispatcherServlet 是前端控制器,用来接收用户的请求,然后响应结果,相当于一个转发器二、经过DispatcherServlet过滤后URL后,比如上述的URL是http://localhost:8080/SpringTest/login,那么这时候就进入到了Handle...原创 2019-04-02 09:44:52 · 187 阅读 · 0 评论 -
(二)Spring 配置bean实例化有哪些方式
一、构造方法实例化:XML配置使用bean构造器这种创建方式使我们使用最多的一种创建方式,直接配置bean节点即可,比如我有一个User类,如下:public class User { public void add() { System.out.println("add()---------"); }}然后通过简单配置一个bean节点就可以获取实例...原创 2019-03-26 12:10:46 · 3126 阅读 · 1 评论 -
(三)Spring注入属性值的2种方式:构造器、set方法
注入的属性类型基本上分为三块,普通类型,引用类型和集合一、构造方法注入这种方式的注入是指带有参数的构造函数注入public class User4 { private String username; public User4(String username) { this.username = username; }}User4中有一...原创 2019-03-26 15:20:38 · 405 阅读 · 0 评论 -
(四)循环依赖(待补)
一、构造方法注入属性会报异常Spring容器会将每一个正在创建的Bean标识符放在一个“当前创建Bean池”中,Bean标识符在创建过程中将一直保持在这个池子中。因此若在创建Bean过程中,发现自己已经在“当前创建Bean池”里将抛出异常BeanCurrentInCreationExceptionpublic class A{ private B b; public A(B...转载 2019-03-26 16:06:59 · 132 阅读 · 0 评论 -
(五)Spring 框架中Bean配置的继承
Spring支持bean配置继承。我们可以定义一个bean,然后进一步配置它来创建新的bean。通过使用bean继承,我们可以共享公共值,属性或配置。子bean继承其父bean配置,属性和属性。此外,子bean可以覆盖继承的值。一、非继承抽象Java Beanpackage com.www.w3cschool.cnmon;public class Customer {...转载 2019-03-26 18:00:18 · 156 阅读 · 0 评论 -
(六)Spring中bean的作用域(五种)
一、singleton作用域是指在Spring IoC容器中仅存在一个Bean的示例,Bean以单实例的方式存在,单实例模式是重要的设计模式之一,在Spring中对此实现了超越,可以对那些非线程安全的对象采用单实例模式。接下来看一个示例:<bean id="car" class="cn.lovepi.Car" scope="singleton"></bean>...转载 2019-03-26 19:21:15 · 248 阅读 · 0 评论 -
(七)AOP之AspectJ (Spring中通知类型5种)
例子参考:注解方式:https://blog.csdn.net/u010502101/article/details/78823056xml方式:https://www.yiibai.com/spring/spring-aop-examples-advice.html原创 2019-03-27 11:08:52 · 460 阅读 · 0 评论 -
(八)BeanFactory和ApplicationContext的区别?
BeanFactory是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象(getBean)的功能。两者装载bean的区别BeanFactory:在启动的时候不会去实例化Bean,当有从容器中拿Bean的时候才会去实例化; ApplicationContext:在启动的时候就把所有的Bean全部实例化了。它还可以为Bean配置lazy-init=t...原创 2019-03-27 11:48:04 · 249 阅读 · 0 评论 -
(九)bean自动装配(5种)
一、bean的自动装配Spring容器能够自动装配相互合作的bean,这意味着容器不需要<constructor-arg>和<property>配置,能通过Bean工厂自动处理bean之间的协作。autowire=“”二、byType:把与Bean的属性具有相同类型的其他Bean自动装配到Bean的对应属性中。https://www.yiibai.com/...转载 2019-03-27 15:56:53 · 135 阅读 · 0 评论 -
(十)什么是Spring的内部bean
当一个bean仅被用作另一个bean的属性时,它能被声明为一个内部bean,为了定义innerbean,在Spring的基于XML的配置元数据中,可以在<property/>或<constructor-arg/>元素内使用<bean/>元素,内部bean通常是匿名的,它们的Scope一般是prototype。例子参考:https://www....原创 2019-03-27 16:09:25 · 1310 阅读 · 0 评论 -
(十一)什么是基于注解的容器配置
一、什么是基于注解的容器配置?相对于XML文件,注解型的配置依赖于通过字节码元数据装配组件,而非尖括号的声明。开发者通过在相应的类,方法或属性上使用注解的方式,直接组件类中进行配置,而不是使用xml表述bean的装配关系二、怎样开启注解装配?注解装配在默认情况下是不开启的,为了使用注解装配,我们必须在Spring配置文件中配置<context:annotation-c...原创 2019-03-27 17:07:16 · 999 阅读 · 0 评论 -
(十二)Spring AOP(面向切面编程)核心概念
解释AOP是面向对象开发的一种补充,它允许开发人员在不改动原来模型的基础上动态地修改模型以满足新的需求。比如,开发人员可以在不改变原来业务逻辑模型的基础上动态的增加日志、安全、或异常处理功能。切面Aspect: 满足同时对多个模块增加功能(例如:日志记录,性能统计,安全控制,事务处理,异常处理等等),多个模块可以共用此功能,方便快捷的实现业务需求。public class Lo...原创 2019-03-27 19:14:15 · 182 阅读 · 0 评论 -
(十三)JdbcTemplate 优点
JDBC可以帮助Java程序员更容易的连接、使用不同数据库、并抽象这些数据库之间的所有差异一、不使用JdbcTemplate示例如果不用JdbcTemplate,必须创建大量的冗余代码(创建连接,关闭连接,处理异常)中的所有DAO数据库的操作方法-插入,更新和删除。它的效率并不是很高,容易出错和乏味。二、使用JdbcTemplate示例使用JdbcTemplate可节省大量的冗...原创 2019-03-28 10:04:53 · 1768 阅读 · 0 评论 -
(十四)JdbcTemplate--查
queryForObject:返回一个对象一、Spring中的RowMappersping中的RowMapper可以将数据中的每一行数据封装成用户定义的类我们在数据库查询中,如果返回的类型是用户自定义的类型(其实我们在数据库查询中大部分返回的都是自定义的类)则需要包装,如果是Java自定义的类型,如:String。1.1 自定义RowMapper在一般情况下,它总是建议实现 R...原创 2019-03-28 10:17:51 · 284 阅读 · 0 评论 -
(十五)JdbcTemplate--update
public int update(java.lang.String sql, //sql语句 @Nullable java.lang.Object... args //sql中参数列表 ) throws DataAccessException //返回值是影响的数据...原创 2019-03-28 10:31:57 · 1312 阅读 · 0 评论 -
(十六)Spring对DAO的支持
DAO(DATA Acces Object)是用于访问数据的对象,虽然大多数情况下存储在数据库中,但是也可以存放在文件或者LDAP(轻量目录访问协议,Lightweight Directory Access Protocol)中。 DAO不但屏蔽了数据存储最重介质的不同,也屏蔽了具体的实现技术的不同。早起,JDBC是主流选择,近些年,数据库持久化技术得到了长足的发展。 只要为数据访问定义好DA...原创 2019-03-28 11:49:03 · 189 阅读 · 0 评论 -
(十七)Spring支持的事务管理类型
一、Spring支持的事务管理类型编程式事务管理,在代码中显式调用开启事务、提交事务、回滚事务的相关方法(优点:灵活性高,很难维护)声明式事务管理,底层是建立在 AOP 的基础之上。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。(从业务代码中分离事务管理,我要做的仅仅是利用注释或XML配置来管理事务)声明...原创 2019-03-28 16:06:07 · 3447 阅读 · 0 评论 -
(三十一)用ecplise SpringMVC环境搭建遇到的问题
1.首先新建一个项目工程new-Dynamic Web Project①遇到问题:eclipse没有(添加)”Dynamic Web Project”选项的方法解决方法:https://blog.csdn.net/u011070171/article/details/50018801②JDK版本最小1.6修改:https://jingyan.baidu.com/article/ed...原创 2019-05-17 21:15:47 · 233 阅读 · 0 评论