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

 

posted @ 2018-04-18 15:12  逐风一缕  阅读(123)  评论(0编辑  收藏  举报