Spring框架作业和对应讲义PPT,表单处理,视图解析器,映射处理器,注解【诗书画唱】
内容导航
Spring MVC框架的PPT内容
1、SPRING框架_简介.ppt(Spring MVC部分)
2、SPRING框架_表单处理.ppt
3、SPRING框架_视图解析器.ppt
4、SPRING框架_映射处理器.ppt
5、SPRING框架_注解.ppt
作业和讲义
个人理解:Spring MVC(form表达提交,contrtoller框架等内容),Spring Core框架(aop等内容)等框架都是工具,和开发模式的作用等等差不多。
个人尝试的经验:在实体类中声明了多少个构造方法和别的类作为属性,就在配置文件要都对应的配置,少了一个配置都会报错
SPRING框架简介和构造器注入的作业
个人给出的代码答案1
applicationContext.xml中写bean等的配置,在实体类中声明了几个private等的属性,在bean中包裹的constructor-arg都要对应的有几对。
单词注释:ApplicationContext就是应用上下文的意思
applicationContext.xml中写bean等的配置
运行效果
Spring MVC框架的PPT内容 START
个人理解:Spring MVC(form表达提交,contrtoller框架等内容),Spring Core框架(aop等内容)等框架都是工具,和开发模式的作用等等差不多。
1、SPRING框架_简介.ppt(Spring MVC部分)











SPRINGMVC框架
简介
什么是SPRINGMVC
Spring MVC 是一个模型 - 视图 - 控制器(MVC)的Web框架。它的核心类是一个servlet,叫中央前端控制器DispatcherServlet,它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。Spring MVC 是 Spring 产品组合的一部分,它享有 Spring IoC容器紧密结合Spring松耦合等特点,因此它有Spring的所有优点。
什么是SPRINGMVC
创建一个Hello world程序
在创建springmvc项目时,必须下载对应的spring4.0以上的版本,下载地址:
http://maven.springframework.org/release/org/springframework/spring/
导包
在javaweb项目中,将以下包拷贝到项目的lib目录下:
配置web.xml文件
打开web.xml文件,添加如下的代码:
添加springmvc的配置文件
在src目录下创建springmvc-servlet.xml文件。
创建HelloController类
在com.jy.controller包下创建一个java类。
创建index.jsp页面
在/WEB-INF/my/目录下创建index.jsp页面。
调用HelloController类
启动工程,打开浏览器,输入地址:
http://localhost:8080/springmvc/demo/test
web.xml文件和springmvc配置文件的关系(一)
如果不想把springmvc的配置文件放在src目录下,也可以使用如下的方式进行配置:
将springmvc-servlet.xml移到WEB-INF目录下,修改web.xml文件。
web.xml文件和springmvc配置文件的关系(二)
也可以在web.xml文件中通过指定springmvc.xml的路径进行配置。
2、SPRING框架_表单处理.ppt





SPRINGMVC框架
表单处理
springmvc框架表单处理程序
在工程中分别创建com.jy.bean.Student类和com.jy.controller.StudentController类。
创建页面
在WEB-INF/my目录下创建stu_add.jsp页面。
创建跳转到stu_add页面的方法
在StudentController类中添加如下的方法。
创建页面
在WEB-INF/my目录下创建result.jsp页面。
运行项目
在浏览器地址栏输入地址:
http://localhost:8080/springmvc/demo/toAdd,输入学生属性后点击提交按钮,观察后台打印结果。
3、SPRING框架_视图解析器.ppt
















SPRINGMVC框架
视图解析器
视图View
视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户。
视图解析器概述
视图解析器的作用是将逻辑视图转为物理视图,所有的视图解析器都必须实现ViewResolver接口。
SpringMVC为逻辑视图名的解析提供了不同的策略,可以在Spring WEB上下文中配置一种或多种解析策略,并指定他们之间的先后顺序。每一种映射策略对应一个具体的视图解析器实现类。程序员可以选择一种视图解析器或混用多种视图解析器。可以通过order属性指定解析器的优先顺序,order越小优先级越高,SpringMVC会按视图解析器顺序的优先顺序对逻辑视图名进行解析,直到解析成功并返回视图对象,否则抛出ServletException异常。
视图解析器类型
视图解析器的作用是将逻辑视图转为物理视图,所有的视图解析器都必须实现ViewResolver接口。
视图解析器InternalResourceViewResolver
springmvc在处理器方法中通常返回的是逻辑视图,如何定位到真正的页面,就需要通过视图解析器。springmvc里提供了多个视图解析器,InternalResourceViewResolver就是其中之一:
视图解析器InternalResourceViewResolver
order表示视图解析的优先级,数目越小优先级越大(即:0为优先级最高)。InternalResourceViewResolver在项目中的优先级必须设置为最低,也就是order要最大。不然它会阻碍其他视图解析器。当经过视图解析器1时,如果能解析就解析而且不会再继续往下。如果不能执行就返回null,这样下面的解析器才能继续处理。而对于IRVR视图解析器,不管能不能解析它都不会返回null。
使用mvc:view-controller不经控制器直接跳转到页面
若希望直接响应通过SpringMVC渲染的页面,可以使用mvc:view-controller标签实现
视图解析器XmlViewResolver
XmlViewResolver可以根据xml文件中定义的bean来解析视图名称。
步骤一:在com.jy.controller包下创建ViewController类。
视图解析器XmlViewResolver
步骤二:修改springmvc-servlet.xml,添加如下配置。
视图解析器XmlViewResolver
步骤三:创建WEB-INF/views.xml文件。
视图解析器XmlViewResolver
步骤四:导入jstl.jar包,同时创建WEB-INF/my/hello.jsp。
视图解析器ResourceBundleViewResolver
ResourceBundleViewResolver使用属性文件(即properties文件)中定义的视图bean来解析视图名称。
步骤一:在con.jy.controller包下创建ResController类。
视图解析器ResourceBundleViewResolver
步骤二:创建WEB-INF/my/res.jsp。
视图解析器ResourceBundleViewResolver
步骤三:在src目录下创建rb.properties文件。
注意:def就是controller类中返回的字符串的值
视图解析器ResourceBundleViewResolver
步骤四:在springmvc-servlet.xml文件中配置如下的代码:
视图解析器ResourceBundleViewResolver
步骤五:在项目中导入jstl.jar包,启动工程。
视图解析器优先级
如果想在spring mvc应用程序中使用多个视图解析器,那么可以使用order属性设置优先级顺序。
4、SPRING框架_映射处理器.ppt












SPRINGMVC框架
映射处理器
概述
如何根据http请求选择合适的controller是MVC中一项十分关键的功能,在spring MVC中,HandlerMapping接口是这一活动的抽象。这四种HandlerMapping的实现叫映射解析器。
1、根据controller的name名称来映射寻找(默认解析器)
2、根据URL来映射寻找
3、根据controller的类名来映射寻找
4、使用注解来映射寻找
根据controller的name属性映射
步骤一:在springmvc配置文件中通过以下的代码开启这种形式的映射:
根据controller的name属性映射
步骤二:在com.jy.controller包下创建一个名为BeanNameController类,该类必须实现Controller接口
根据controller的name属性映射
步骤三:在springmvc配置文件中对BeanNameController类进行配置,并且在WEB-INF/my/目录下创建hello.jsp文件。
根据URL来映射寻找
步骤一:在com.jy.controller包下创建一个名为SimpleController的类。该类可以实现Controller接口或者继承AbstractController类。
根据URL来映射寻找
步骤二:在springmvc配置文件中进行以下的配置。
根据controller的类名来映射寻找
步骤一:在springmvc配置文件中进行以下的配置。
根据controller的类名来映射寻找
步骤二:在com.jy.controller包下创建TestController类。
注意:controller类的类名中不能包含”name”,否则会配置失败。
根据controller的类名来映射寻找
步骤三:在WEB-INF/my目录下创建cn.jsp页面。
在浏览器地址栏输入http://localhost:8080/springmvc/test进行测试
使用注解来映射寻找
步骤一:在com.jy.controller包下创建MyController类。
使用注解来映射寻找
步骤二:在WEB-INF/my目录下创建success.jsp页面。
5、SPRING框架_注解.ppt

























SPRINGMVC框架
注解
springmvc中的部分注解
1、@Controller 声明该类为SpringMVC中的Controller
2、@RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)
3、@RequestParam绑定单个请求参数值。
4、@ResponseBody 支持将返回值放在response内,而不是一个页面,通常用户返回json数据(返回值旁或方法上)
5、@RequestBody 允许request的参数在request体中,而不是在直接连接在地址后面。(放在参数前)
6、@PathVariable 用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现方法。
7、@RestController 该注解为一个组合注解,相当于@Controller和@ResponseBody的组合,注解在类上,意味着,该Controller的所有方法都默认加上了@ResponseBody。
springmvc中的部分注解
8、@ControllerAdvice 通过该注解,我们可以将对于控制器的全局配置放置在同一个位置,注解了@Controller的类的方法可使用@ExceptionHandler、@InitBinder、@ModelAttribute注解到方法上, 这对所有注解了 @RequestMapping的控制器内的方法有效。
9、@ExceptionHandler 用于全局处理控制器里的异常
10、@InitBinder 用来设置WebDataBinder,WebDataBinder用来自动绑定前台请求参数到Model中。
11、@ModelAttribute 本来的作用是绑定键值对到Model里,在@ControllerAdvice中是让全局的@RequestMapping都能获得在此处设置的键值对。
@Controller注解
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。
步骤一:创建net.test.controller包。
步骤二:在springmvc-servlet.xml文件中添加如下的配置
@Controller注解
步骤三:在net.test.controller包下创建Controller类
@RequestMapping注解
RequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。RequestMapping请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求。
@RequestMapping注解
@RequestParam注解
@RequestParam用于将请求参数区数据映射到功能处理方法的参数上。
@RequestParam有以下三个参数:value:参数名字,即入参的请求参数名字,如act表示请求的参数区中的名字为act的参数的值将传入;required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将抛出异常;defaultValue:默认值,表示如果请求中没有同名参数时的默认值,设置该参数时,自动将required设为false。
@RequestParam注解
@PathVariable注解
@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。
@ModelAttribute注解
@ModelAttribute可以应用在方法参数上或方法上,作用主要是当注解在方法参数上时会将注解的参数对象添加到Model中;当注解在请求处理方法Action上时会将该方法变成一个非请求处理的方法,但其它Action被调用时会首先调用该方法。
注意:被 @ModelAttribute 注解的方法会在Controller类中的每个被@RequestMapping注解的方法执行之前都执行
@ModelAttribute注解
@ModelAttribute注解在没有返回值的方法上。
@ModelAttribute注解
@ModelAttribute注解在有返回值的方法上。
@ModelAttribute注解
@ModelAttribute和@RequestMapping可以同时注释一个方法。
@ModelAttribute注解
当@ModelAttribute注解用于方法参数时,它有了双重功能,即“存/取”。首先,它从模型中取出数据并赋予对应的参数,如果模型中尚不存在,则实例化一个,并存放于模型中;其次,一旦模型中已存在此数据对象,接下来一个很重要的步骤便是将请求参数绑定到此对象上(请求参数名映射对象属性名),这是Spring MVC提供的一个非常便利的机制--数据绑定。
@ModelAttribute注解
@SessionAttributes注解
@SessionAttributes 是用来在 controller 内部共享 model 属性的。我们可以在需要访问 Session 属性的 controller 上加上 @SessionAttributes,然后在 action 需要的 User 参数上加上 @ModelAttribute,并保证两者的属性名称一致。SpringMVC 就会自动将 @SessionAttributes 定义的属性注入到 ModelMap 对象,在 setup action 的参数列表时,去 ModelMap 中取到这样的对象,再添加到参数列表。只要我们不去调用 SessionStatus 的 setComplete() 方法,这个对象就会一直保留在 Session 中,从而实现 Session 信息的共享。
注意: @SessionAttributes只能在类上注释,不能使用在方法上。
@SessionAttributes注解
@SessionAttributes注解
@SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外,还可以通过模型属性的对象类型指定哪些。
@Responsebody注解
@Responsebody表示该方法的返回结果直接写入HTTP response body中。一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@Responsebody后,会直接返回json数据。
@Responsebody注解
@requestBody注解
@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。
@requestBody注解
使用@requestBody先导入以下的jar包:
@requestBody注解
创建jsp页面:
@requestBody注解
创建Controller类:
Spring MVC框架的PPT内容 END
作业和讲义 START


个人理解:autowire="byName"代替了ref部分的代码。
1、创建一个英雄类和一个任务类,英雄类中有一个任务属性和这个属性的set方法以及一个探险的方法(调用showText方法),
任务类中有一个任务文本属性和这个属性的set方法,另外还有一个显示任务内容的方法showText,请在spring容器中创建出英雄类,调用他的探险方法(使用byName自动装配)
2、创建一个接口IFly(飞行能力接口),包含flying方法,创建一个Duck鸭子类和一个Plane飞机类,都实现IFly接口,通过spring容器写出一段松耦合的代码,能够调用Duck和Plane类中的flying方法。
3、创建一个Book类,Pen类,Stu类,stu中包含一个Book属性和Pen属性
Book中有一个read方法,Pen中有一个Write方法。Stu中包含一个Perform方法,该方法会调用read和write方法。
通过byName自动装配调用Stu中的Perform方法

sprinGCore框架就是项目管家,可以管理我们项目中需要new出来的任何的java类。
当引入sprinGCore框架以后,代码中的new关键字几乎就没有了。
sprinGCore框架两种注入方式:就是在配置文件中new出不同的对象的方式
注入方式两种:
1、构造器注入(相当于在配置文件中调用构造方法)
2、setter方法注入(相当于在配置文件中调用属性对应的setter方法)
值注入:就是注入的参数都是字符串,数字或者布尔类型
引入注入:就是注入的参数是一个对象
理解注入:设计模式中的一种策略模式
松耦合:目的就是为了便于修改和维护代码。针对接口编程,尽量不要在代码中使用new关键字
交通工具接口和具体实现类的例子
bean的作用域

1、创建猫类和狗类,都包含eat方法,通过spring aop配置当调用eat方法前调用Person(主人)类中的call(呼唤)方法。调用eat方法之后,调用主人类中的clear(清洁)方法
2、创建UserDao类和ProductDao类,都包含add,delete,update方法,创建日志类Logger,包含记录操作的log方法,通过spring aop配置当调用Dao类中的add,delete和update方法之后,调用日志类中的log方法。

IOC的实现方式:DI(依赖注入)
AOP:面向切面编程,跟OOP(面向对象编程)
在项目的很多地方都要调用这段代码(安全验证)
饭前便后要洗手
吃饭的方法
便便的方法
洗手的方法(切面)
通知:调用吃饭方法之前使用切面(洗手)
调用便便方法之后使用切面(洗手)
调用吃饭方法成功之后使用切面(洗手)
调用吃饭方法发现没有筷子时使用切面(洗手)
连接点:(选择题提供了五个选项供你选择,这五个选项就可以理解为连接点)
在调用吃饭方法之前调用洗手的方法
在调用吃饭方法之后调用洗手的方法
在调用吃饭方法成功以后调用洗手的方法
在调用吃饭方法抛出异常时调用洗手的方法
在调用吃饭方法之前和之后都调用洗手的方法
切点:(从选项中选出了正确的答案)
在调用吃饭方法之前调用洗手的方法变成了一个切点
乱码处理的方法
doPost之前乱码处理
doPost之后乱码处理
doPost方法调用成功以后乱码处理
doPost方法抛出异常时调用乱码处理
doPost方法环绕处理
切点:doPost方法前调用乱码处理
学生和老师
当学生考试时,老师鼓励学生
Student类,考试方法,考驾照方法,创业方法
Teacher类,鼓励方法
调用考试方法之前调用鼓励的方法

1、创建一个Controller类,通过输入地址http://localhost:8080/JO2/test能够跳转到/WEB-INF/index.jsp页面
2、http://localhost:8080/JO2/pub/toLogin跳转到/WEB-INF/pub/login.jsp
3、http://localhost:8080/JO2/pub/toReg跳转到/WEB-INF/pub/reg.jsp
4、http://localhost:8080/JO2/list跳转到/WEB-INF/product/proinfo.jsp
5、http://localhost:8080/JO2/logo跳转到/WEB-INF/index.jsp
6、创建一个商品类,包含商品名称,商品价格,商品类型(多选框),商品单位(下拉框),商品品牌(单选框),生产日期(文本框),在Springmvc中创建一个新增商品的表单,在Controller类中打印出这些输入值并且跳转到另外一个result.jsp,在这个页面显示所有的输入值。

MYBATIS框架:通用数据库框架
SPRINGCORE框架:通用框架,项目粘合剂(管家)
MVC:
Model模型层
View视图层
Controller控制层
Struts2框架中servlet会升级为Action,而在springmvc框架中servlet就会升级为Controller
Maven工具:jar包管理工具
1、导包
2、修改web.xml,添加servlet的配置
3、导入核心配置文件/WEB-INF/springmvc-servlet.xml
创建一个Controller类,运行这个Controller类中的代码,打印出Hello world
通过Controller来对表单中提交的数据进行处理:request.getParameter方法
在WEB-INF目录下的jsp页面是不能直接通过输入页面路径访问到的,必须通过控制器来进行跳转