SpringMVC学习
1 MVC介绍:
M model模型(JavaBean) V view视图(jsp或IMG) C controller控制器(Action/Servlet)
c控制的目的:将视图和模型联系在一起
2.什么是 springMVC?
spring MVC是基于MVC模式的一个框架,它解决了web中常见的问题(参数接收,文件上传,表单验证,国际化。等等)而且使用简单,与spring无缝集成。
目前很多公司都会用MVC,需要熟悉MVC
3.第一个hello world程序:
3.1 导入相关的资源:
导入spring核心包
导入web相关的支持包
日志相关
3.2 导入相关的配置文件
一般是放在src下面同级的源包中
name代表前台处理的接口
class代表对应的处理类
3.3 编写核心类需要实现接口 org.springframework.web.servlet.mvc.Controller
public class HelloWorldController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("HelloWorldController.handleRequest()"); return null; } }
3.4 配置DispatcherServlet分发器,因为DispatcherServlet最终是继承servlet类所以在web中就可以像配置servlet一样配置
<?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://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 修改寻找配置文件的路径 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:application.xml</param-value> </init-param>
<!-- 启动的优先级,数字越小,启动越早 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
打开服务器,通过服务器执行程序然后报错
3.4.1
SpringMVC启动时默认的去WEB-INF下寻找配置文件修改
默认找到文件名<servlet-name>-servlet.xml
第一次访问的时候去加载spring的配置文件,
希望在配置启动的时候就去加载spring的配置文件
<load-on-startup>1</load-on-startup>
修改完之后还是会报错
错误原因是:没有将classes路径放到WEB-INF下面
4 URL的映射方式:
4.1 BeanNameURL方式来配置前天请求映射哪个处理类
<bean name="/hello" class="com.liyi.spring.hello.HelloWorldController"></bean>
4.2 基于注解的方式来配置URL映射(推荐使用这种)
5 . 静态资源的处理
6. springMVC的传参方式:
6.1使用servlet原生api传参
6.2前台需要传入的参数名和方法定义的形参名相同(同名匹配原则)
6.3 当前台名称和后台名称不一样是,需要用@requestParam(“前台参数名”)来注入
6.4 使用模型传参(前台参数名称需要和后台模型中的名称一样)
前台发的请求:localhost/delete/3
6.6 中文乱码问题
只针对post有效
补充:
如果requestMapping放在类上,所有的请求都要带有这样的地址
前台访问地址:localhost/test/method
但是产生了一个问题:返回的地址会带有类上的url
解决方法:
7
8. 传值的方式:
8.1 通过原生servlet-api回显数据
8.2 使用过springMVC的ModelAndView来回显数据
8.3 直接返回模型:
如果参数中没有response对象,且返回值又没有ModelAndView对象这时候springMVC不知道处理的视图是哪一个此时就需要配置视图解析器
来告诉springMVC返回的视图是怎么样的。
9.文件的上传和下载
文件下载
SpringMVC源码解析:
https://www.cnblogs.com/fangjian0423/p/springMVC-directory-summary.html