• SpringMVC 学习笔记


    1、跳转、重定向

      在任何Web项目中跳转和重定向是必须的,在Servlet中,跳转的方式(1)可以通过客户端跳转 response.sendRedirect("jspPath") 但是这种跳转只能传递session范围的属性,无法传递request范围属性,(2)执行服务端跳转(地址栏不发生变化)必须依靠 RequestDispatcher 接口完成,需要通过forward (后台)或者include(页面)来完成跳转

      在SpringMVC中,Controller中的Action我自己常用的有两种返回值ModelAndView和String。ModelAndView是SpringMVC封装的一个展示对象和视图的一个类(注释中提到的:Represents a model and view returned by a handler, to be resolved by a DispatcherServlet.)

    1.1、ModelAndView

      在返回ModelAndView的时候,通过setViewName(String viewName) 来设置展示需要绑定的jsp页面。

      如果在处理过程中,根据业务逻辑的处理过程需要跳转到其他Action,也直接调用setViewName(String viewName)即可,但是这时候的viewName是有格式要求的要以 "redirect:" 开头,如:"redirect:/list"。

    1.2、String

      返回String就是直接返回的字符串了。更多的时候,这种情况,返回的Json字符串。这种情况下是通过 返回类似 "redirect:/list" 这样的字符串完成跳转。

    1.3、在跳转过程中的参数

      a)可以直接在地址中进行拼接,但是要注意中文乱码的情况

      b)还有更加优雅的方法就是通过RedirectAttributes 来设置跳转参数。

     参考:

    http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/

    http://blog.csdn.net/liushengmeng/article/details/7985080

    2、前后台的交互

      Web除了要为用户提供需要数据,也需要满足用户的操作需求和用户想服务器提供的数据。在Servlet和Jsp中可以完成数据传递的对象有(application、sessionrequest、page)最常用的是session、request。Jsp向Servlet发送操作和数据主要通过 Form 表单和Url地址参数(主要方式有POST,GET)。

      在SpringMVC中,Action向Jsp中传递数据的方式直接 addObject(String attributeName, Object attributeValue) 完成数据数据的传递(Jsp可以通过EL表达式获取数据),这里addObject怎么传递到Jsp呢?事后在研究一下

      Jsp页面中操作数据传递到Action中,可以通过路径/path1/param1这种方式,通过@PathVariable("varName")指定Action中和路径中对应的参数,也可以传递对象(Spring会自动绑定)页面Form中的那么属性要和对象中的一致,如果是组合对象,需要对被包含对象的属性进行前缀指定,如 obj1.name

    参考:

    http://blog.csdn.net/seawaywjd/article/details/7335804

    3、在开发过程中获取Request和Response

      在业务处理过程中,在操作cookie等很多针对客户端的操作都需要获取这两个对象,在 SpringMVC 中获取这两个对象的方法:

      a)在Controller范围添加Resquest和Response属性通过@ModelAttribute,在每次个Action属性前设置这两个对象。

      注解说明:

      放置在方法的形参上:表示引用Model中的数据
      放置在方法上面:表示请求该类的每个Action前都会首先执行它,也可以将一些准备数据的操作放置在该方法里面。

      b)添加Controller两个属性通过注解@Autowired,让Spring自动注入

      c)通过上下文RequestContextHolder直接获取

    HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
    HttpServletResponse response = ((ServletWebRequest)RequestContextHolder.getRequestAttributes()).getResponse();

    参考:

    http://blog.csdn.net/wsh900221/article/details/23428369

    4、SpringMVC 静态资源的访问可以通过配置

    <mvc:default-servlet-handler />

  • 相关阅读:
    读《成交》有感
    【VC++学习笔记二】绘制图片的双缓冲技术
    【VC++学习笔记一】MFC操作Excel
    敏捷软件开发
    VIM常用命令
    Ubuntu下配置samba实现文件夹共享
    linux系统编程之管道(三):命令管道(FIFO)
    linux系统编程之管道(二):管道读写规则
    linux系统编程之管道(一):匿名管道(pipe)
    《Linux环境进程间通信》系列文章链接
  • 原文地址:https://www.cnblogs.com/hpuCode/p/5577555.html
Copyright © 2020-2023  润新知