创作SpringMVC项目的流程

1.添加依赖

2.配置文件

a)web.xml 设置前端控制器

      1)要设置她的优先级

       2)指定SpringMVC配置文件的路径

b)SpringMVC.xml

      1)开启包扫描

      2)视图解析器:给Controller返回的视图名称添加前缀和后缀

                a):视图的前缀

                b):视图的后缀

3.自定义Controller

       1)@Controller:表示当前的是web层,把当前bean交给spring容器创建

       2)@RequestMapping 把方法名称作为一个映射地址

       3)方法直接返回视图名称

参数传递

1.表单属性和方法形参一致,不需要做任何处理SpringMVC会自动封装

2.表单属性和方法形参不一致,需要用@RequestParam注解建立映射关系

3.表单属性要和对象属性保持一致,属性会自动封装

4.可以通过@DataTimeFormat指定用户时间格式化格式,默认是yyy/MM/dd

乱码问题

编码过滤器SpringMVC已经帮我们写好,我们只需要配置就可以了

    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>


    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

跳转

转发

1.方法直接返回视图名称,SpringMVC会自动添加前后缀

2.方法返回"forward:xxx.jsp",这种方式需要手动设置视图前缀和后缀

 

重定向视图:

1.方法返回"redirect:xxx.jsp"这种方式需要手动设置视图的前后缀

 

跳转或者重定向Controller

1.方法返回redirect:controller的路径

参数的传递

1.ModelAndView

2.Model

3.ModelMap

4.原生的方式

@SessionAttributes:拷贝req作用域中的数据到session作用域
package com.controller;


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@Controller

@SessionAttributes(names = {"msg_map2","msg_map"})//拷贝req作用域中的数据到session作用域
public class UserController {


    /**
     *
     * 原生的传参
     * @return
     */
    @RequestMapping("/test")
    public String test(HttpServletRequest request){

        request.setAttribute("msg","Hello Word");
        System.out.println("UserController.test");

        return "forward:ok.jsp";
    }


    /**
     * 使用ModAndView传递参数
     * @return
     */
    @RequestMapping(value = "test2")
    public ModelAndView test2(){
        //1.创建要传递的参数
        ModelAndView modelAndView = new ModelAndView();

        //2.设置要传递的参数
        modelAndView.addObject("msg","使用ModelAndView传递的参数");

        //3.设置需要跳转的页面

        modelAndView.setViewName("ok");//转发过去的
        return modelAndView;

    }


    /**
     * 使用Model传递参数
     * @param model
     * @return
     */
    @RequestMapping(value = "/test3")
    public String test3(Model model){

        System.out.println("UserController.test3");
        //1.给model中添加数据
        model.addAttribute("msg_model","这是model传递的参数");


        //2.转发到ok视图
        return "ok";
    }

    @RequestMapping(value = "/test4")
    public String test4(ModelMap map, HttpSession session){
        System.out.println("UserController.test4");

        map.put("msg_map","这个是通过ModelMap传递参数1");//放在request作用域
        map.put("msg_map2","这个是通过ModelMap传递参数1");

        //session.setAttribute("msg");

        return "ok";

    }

    /**
     * 删除用@SessionAttributes拷贝到session作用域中的数据
     * @return
     */
    @RequestMapping(value = "/removeSessionAttrData")
    public String removeSessionAttrData(SessionStatus sessionStatus){
        System.out.println("UserController.removeSessionAttrData");
        sessionStatus.setComplete();
        return "ok";



    }



}

静态资源处理

1.在SpringMVC颞部处理的静态资源

<mvc:resources mapping="/js/**" location="/js/"></mvc:resources>

 

2.把SpringMVC处理不了的请求转交给默认的servlet,这样比较安全

    <mvc:default-servlet-handler default-servlet-name="default"/>

JSON转换

1.添加jackson依赖

2.@RequestBody:把方法返回值直接响应给用户

    a):productes生成的数据,这里可以设置数据类型编码

猜你喜欢

转载自blog.csdn.net/tony_yang6/article/details/106367834
今日推荐