为了使Spring可插入MVC架构,SpringframeWork在Spring基础上开发了SpringMVC框架,从而在使用Spring进行WEB开发时可以选择使用Spring的SpringMVC框架作为WEB开发的控制器框架。
# springmvc的引言 1. springmvc 由来 诞生 由来:基于spring框架基础之上开发的一个全新的框架 springmvc 作用:SpringMVC 可以作为Web开发时的控制器框架 用来替换现有项目中的Struts2控制器框架 目的:为了使现有项目中使用spring框架在mvc架构中存在自己的位置 因此开发了一个springmvc框架 MVC:编程步骤 三层编程 M:model模型 service+dao+eneity Jdbc|Mybatis V:view视图 webapp 页面 jsp(动态页面)|html C:Controller 控制器 action servlet|Struts2 ======> SpringMVC 控制器框架 2. SpringMVC 引言 SpringMVC 典型mvc框架 控制器框架 它是在spring基础之上进行二次开发 用来替换原有项目中struts2框架 3. 为什么是SpringMVC(优势) 1). Spring框架流行程度非常之高 90% ====> SpringMVC框架可以与Spring框架进行无缝整合 spring springmvc 2). SpringMVC 运行效率 高于struts2运行效率 action 创建一个新的Action SpringMVC默认单例处理请求 3). SpringMVC 推荐使用注解式 其注解式开发更高效更灵活
springmvc运行流程与struts2运行流程对比:
# springmvc与struts2运行流程对比 控制器做的三件事: 接收请求 调用业务对象 处理请求 struts2的执行流程: 首先要去接收请求,客户端得在浏览器上发起一个请求,它会优先被项目中web.xml中所配的 StrutsPrepareAndExecuteFitler给拦截掉,Fitler为什么要拦截这些请求呢,是因为 它要把这些请求拿到之后全部交给Struts2框架去处理请求,Fitler拿到这个请求之后,它会 去找在项目中配置的叫struts.xml的配置文件,在struts.xml的配置文件中,我们配置了 package,它做的第一件事会去解析 请求,那怎么解析这个请求呢,拦截到这个请求之后,我是不是就可以去解析你的url啊,在 url中取出对应的namespace,去找一个名字叫做namespace这样的一个package,找到这个 package之后再去解析url最后的这块内容,比如访问的是findAll,那我在这里去找action 标签名字叫findAll的, 类和类中执行的方法都找到了,你是不是就可以进入你自己的控制器xxxAction了呀, xxxAction public String find..(){ 1. 收集数据 用的是成员变量 2. 调用业务对象 3. 处理响应 return "ok"; } 到这步的话其实它就可以 直接进入我们的action去对应去执行相应的方法,走到这个方法的执行之后,方法执行的时候做三件事:收集数据、 调用业务对象、处理响应,处理响应的时候最终返回了一个字符串,这个字符串呢它还会回到当前的这个请求的 (action)里面去找, 找一个 /index.jsp ,做对应的视图,那所对应的视图找到了其实整个请求就开始返回了, 我告诉Fitler说我当前这个请求请求的是xxAction下的find方法,这个find方法最终处理完业务之后返回的是/index.jsp, 那我们在响应回来的请求还要经过Fitler啊,最终Fitler给我们一个响应,响应给我们index.jsp,如果有数据的话展示我们的 数据,当然要展示这个数据在调用业务这块要把数据放入作用域中啊, springmvc的运行流程: springmvc作为一个控制器,它也要去处理请求,所以客户端同样得发起一个请求,其实这个请求它就是一个url,这个url 一定包含url:/user/findAll这样的一个路径,springmvc它作为一个控制器框架,它如果想要把客户端的这些请求都拿到, 拿到之后才能自己去处理这些请求,所有的控制器框架在处理的时候都是这样,它得先把所有的请求都拿到它才能去处理,所以 springmvc也需要我们在web.xml中配置这样的一个东西DispatacherServlet,通过这个类名字的最后你可以发现它是一个 Servlet,日后配置的时候得用Servlet便签,servletmapping有一个url-pattern/test代表日后只拦test请求,写一个 url-pattern/aa代表只拦aa,写一个url-pattern/user/findAll才能拦findAll这个请求啊,那问题来了,我日后总不能 一个请求我配一次DispatacherServlet吧,servletmapping我得配多少个啊,请求那么多,业务那么复杂,这是不是就没人 用了啊,所以这里注意,servlet我想让它拦到所有请求该怎么拦呢,这个url-pattern这我们不要写url-pattern @RequestMapping() // 有一个value属性,用来指定该方法的请求路径 public String hello(){ // 1. 收集数据 // 2. 调用业务方法 System.out.println("hello spring mvc"); // 3. 处理响应 return "index"; // 页面逻辑名 日后就会跳转到根(webapp)下面的index.jsp } }
因为老师有一节课忘记录了,里面应该包含tomcat的下载和配置,接下来我来演示一下tomcat相关的操作:
首先进入镜像网站进行下载:点击进行镜像网站下载
下载完成之后打开下载好的压缩包进行解压
解压完成之后,因为在使用时可能存在乱码问题,我们先来修改一下tomcat的配置文件
首先我们来解决一下命令行窗口cmd的乱码问题:
因为我将tomcat安装在了D盘,所以我需要打开D:apache-tomcat-8.5.76conf下的
之后我们再来解决一下在idea中运行时post提交的参数乱码
在这句话set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%"之后加上 -Dfile.encoding=UTF-8
变成 set “JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8”
测试一下tomcat是否安装成功
出现上面这个控制台之后在浏览器中输入http://localhost:8080,看到下面这个页面表示安装成功
之后我们在idea中配置tomcat
web文件的部署:
并会弹出这个窗口
另外:index.jsp的源码
Hello World!
说明在地址栏输入helllo,它最终进入了上面的方面,输出 hello spring mvc 这句话,最后跳转到了 index.jsp
本来springmvc.xml文件中的内容是:
但是由于有一个更加强大的标签,替代了映射器和适配器的创建,而且还有更加强大的功能
开发的Controller组件:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping(value = "/hello") //value可以省略不写直接写"hello", / 也可以不写
@Controller // 这个是一个控制器组件,@Controller能够用来创建HelloController这个对象
// 有一个value属性,可以设置在工厂中的唯一标识,默认类名首字母小写
public class HelloController {
@RequestMapping(value = "/hello") // 有一个value属性,用来指定该方法的请求路径
public String hello(){
// 1. 收集数据
// 2. 调用业务方法
System.out.println("hello spring mvc");
// 3. 处理响应
return "index"; // 页面逻辑名 日后就会跳转到根(webapp)下面的index.jsp
}
@RequestMapping("save")
public String save(){
// 1. 收集数据
// 2. 调用业务方法
System.out.println("save method ....");
// 3. 处理响应
return "index";
}
}
如果只在方法上加@RequestMapping标签,在访问时直接输入方法上的@RequestMapping中的value即可(/模块/方法@RequestMapping标签上的value),但是如果在类上也加了@RequestMapping标签,输入时得**/模块/类中@RequestMapping的value/方法上@RequestMapping的value**
另外,有其他方法时,可以输入其他方法的@RequestMapping的value进行访问
只有方法上有@RequestMapping标签:
类上和方法上都有@RequestMapping标签:
类上和方法上都有@RequestMapping标签,并且访问其他方法:
tomcat学习于:
Tomcat安装及配置教程
idea配置tomcat的方法(详细图文步骤
Tomcat乱码问题解决



