SpringMVC 学习笔记

一、跳转、重定向

  在任何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.)
cookie

1.一、ModelAndView

  在返回ModelAndView的时候,经过setViewName(String viewName) 来设置展现须要绑定的jsp页面。session

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

1.二、String

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

1.三、在跳转过程当中的参数

  a)能够直接在地址中进行拼接,可是要注意中文乱码的状况jsp

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

 参考:.net

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

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

二、先后台的交互

  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

三、在开发过程当中获取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

四、SpringMVC 静态资源的访问能够经过配置

<mvc:default-servlet-handler />

相关文章
相关标签/搜索