https://study.163.com/course/courseMain.htm?courseId=1005999006
《课时1》:在web.xml中做如下配置,用DispatcherServlet拦截一切请求:
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
上图中如果没有设置contextConfigLocation,则约定路径与文件名为WEB-INF\springDispatcherServlet-servlet.xml
。此段可快速自动生成,参考《课时4》第18秒
在springmvc.xml中配置视图解析器:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
一个典型的Controller(Servlet):
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class WelcomeController {
@RequestMapping("welcome")
public String welcome() {
return "success";
}
}
《课时2》:04:14:默认使用请求转发而不是重定向、
《课时4》末尾:用HiddenHttpMethodFilter过滤器,给浏览器增加put/delete请求方式,以实现restful风格的请求
《课时5》28分+:用@RequestHeader获取请求的头信息,用@CookieValue(“JSESSIONID”) String cookieId获取cookie里的信息;45分左右,自动把请求参数绑定为java对象且支持级联属性
《课时6》不完全验证,但应该靠谱的感觉:对被@RequestMapping修饰的方法,
- 方法如果有参数,此参数会自动绑定原有数据,如
public String model(Model m) {...
其中的m自动拿到原有的model,调用m.addAttribute方法即可设置request的attribute - 方法的返回类型如为String, 则指定view的名字。如果为ModelAndView,则指定去向的模型和视图,但该返回值和方法参数里的Model(如果有的话)没有关系了
对@ModelAttribute的解释太生硬。正确点的可参考@ModelAttribute注解的使用总结:@ModelAttribute最主要的作用是将数据添加到模型对象中,等价于 model.addAttribute(“attributeName”, abc); 被@ModelAttribute注释的方法会在此controller的每个(被注解@RequestMapping修饰的?)方法执行前被执行
《课时7》SpringMVC流程简化如下。详细版的可参考Java面试突击-V3.0.pdf
《课时8》
- 12分左右:在@RequestMapping方法中配置请求转发或者重定向方式,如“redirect:/views/success.jsp”,注意此时在springmvc.xml中配置的视图解析器的前后缀无效
- 27分左右:springMVC项目因为DispatcherServlet拦截了所有请求,会访问不到静态资源。此时可在springmvc.xml中配置
<mvc:default-servlet-handler/>
解决。另外也需要<mvc:annotation-driven>
,否则会只访问得到静态的,访问不到动态的
《课时9》11:55使用BindingResult避免在前面显示错误
《课时11》使用@ResponseBody返回json数据
《课时15》我手动配SSM一次成功,且正确判断不需要在web.xml中做如下配置:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
《课时16》29:45前后: 用过滤器HiddenHttpMethodFilter支持put,delete