JAVA--高级基础开发

允我心安 提交于 2020-03-16 19:14:21

某厂面试归来,发现自己落伍了!>>>

------------------------ SpringMVC------------------

    1. @CookieValue

作用:

用于指定 cookie 名称的值传入控制器方法的参数

属性:

value 指定 cookie 的名称

required:是否必须有请求头

    1. @RequestHeader

作用:

 获取请求头消息

属性:

value 指定请求头的名称

required:是否必须有请求头

    1. @ModelAttribute

作用:该注解时 springmvc4.x 以后新增的,它可以用于修饰方法和参数

出现在方法上,表示当前方法会在控制器的方法执行前,先执行。它可以修饰没有返

回值的方法,也可以修饰有返回值的方法。

出现在参数上,获取指定的数据给参数赋值

属性:

value 用于获取数据的 keykey 可以是 pojo 的属性名称,也可以是 map key

什么时候使用?

当表单提交数据不是完成的实体类数据时,保证没有提交数据的字段使用数据原有

的值或者默认值

@ModelAttribute

 public void display(User user){

 user.setUserName("小花");

 System.out.println("=========先执行 display 方法========="+user);

 }

    1. @SessionAttribute

作用:

用于会话直接参数的共享(如果多次执行控制器方法,而且需要参数共享)

属性:

value:用于指定存入的属性名称

type:用于指定存入的数据类型

<h3>注解@SessionAttribute</h3>

<a href="testSession">放入数据</a>

<a href="getSession">取出数据</a>

=============================================================

@Controller

@SessionAttributes(value = {"userName","age"},types = {String.class,Integer.class})

public class RestfulControllerDemo {

    /**

     * 把数据存入 sessionattribute

     * @param model Model spring 提供的一个接口,该接口有一个实现类

         ExtendedModelMap,该类继承了 ModelMap

     * , ModelMap 就是 LinkedHashMap 的子类

     * @return

     */

    @RequestMapping("/testSession")

    public String testSession(Model model){

        model.addAttribute("userName","博道 IT");

        model.addAttribute("age",2);

        return "success";

    }

    /**

     * 获取 sessionAttribute 中的值

     * @param map

     * @return

     */

    @RequestMapping("/getSession")

    public String getSession(ModelMap map){

        System.out.println(map.get("userName"));

        System.out.println(map.get("age"));

        return "success";

    }

  • 响应数据和视图

4.1 返回字符串结果

控制器方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址

4.2 无返回值 void

@Controller

public class ResultController {

    @RequestMapping("/testResult")

    public  void testReturnMethod(HttpServletRequest  request, HttpServletResponse response) throws ServletException, IOException {

        //请求分派转向页面

      request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);

        //重定向是无法访问/WEB-INF 目录下的资源的,可以访问 web 根目录下的资源

        response.sendRedirect("");

    }

}

4.3 ModelAndView

ModelAndView SpringMVC 提供的一个对象,该对象也可以用作控制器方法的返回值,

该对象中有两个方法:
@RequestMapping("/testMav")

    public ModelAndView testMav(){

        ModelAndView mav=new ModelAndView();

        //指定响应的数据

        mav.addObject("name","zhangsan");

        mav.addObject("age",22);

        //指定要跳转页面的逻辑视图名称

        mav.setViewName("success");

        return mav;

}

在页面中,可以通过 EL 表达式获取值,实际上 ModelAndView 默认也是采用的请求分派进行资源的跳转。

<h2>ModelAndView</h2>

姓名:${name},年龄:${age}

4.4 重定向和请求分派

1 如果使用了 forward,则路径必须写成实际视图 URL,不能写逻辑视图名

它相当于:

request.getRequestDispatcher("/WEB[1]INF/pages/success.jsp").forward(request,response);

使用请求分派,既可以转发到 jsp,也可以转发到控制器。

//请求分派

    @RequestMapping("/testForward")

    public String testForward(HttpServletRequest request){

        //指定响应的数据

        request.setAttribute("name","小明");

        request.setAttribute("age",26);

        return "forward:/WEB-INF/pages/success.jsp";

    }

 

  1. 如果使用Rediret重定向,它相当于 response.sendRedirect("");
  2. 需要注意,如果是重定向到 jsp 页面,则 jsp

 * 不能位于/WEB-INF/目录下,否则无法找到

//重定向

    @RequestMapping("/testRedirect")

    public String testRedirect(){

        return "redirect:reset.jsp";

    }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!