文章目录
原版笔记
##Spring Web MVC
Spring框架功能,基于IOC容器功能。
用于开发Web程序的,按MVC结构开发。
-
Spring Web MVC结构
-
设计请求-响应的处理流程
/list.do–>DispatcherServlet–>HandlerMapping–>ListController–>ViewResolver–>/list.jsp
/add.do–>DispatcherServlet–>HandlerMapping–>AddController–>ViewResolver–>/success.jsp
/hello.do–>DispatcherServlet–>HandlerMapping–>HelloController(返回ModelAndView)–>ViewResolver–>/hello.jsp
-
流程的实现
编写流程中需要的组件,然后追加组件配置。
- hello.jsp
- HelloController
实现Controller接口、完成handleRequest方法。返回一个ModelAndView对象,设置视图名和传出数据
-
流程的配置
-
配置DispatcherServlet(web.xml)
<servlet>
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
springmvc
*.do
-
配置HandlerMapping
<!-- HandlerMapping,id名没有约定 -->
<bean id=“handler”
class=“org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”>
helloController
-
配置Controller
<!-- Controller,id名有约定跟handlerMapping对应 -->
-
配置ViewResolver
<!-- ViewResolver,id名没有约定 -->
<bean id=“viewResolver”
class=“org.springframework.web.servlet.view.InternalResourceViewResolver”>
-
-
Spring Web MVC注解配置
- 替换HandlerMapping组件
使用RequestMappingHandlerMapping组件,支持@RequestMapping注解标记,加载Controller方法前。
<mvc:annotation-driven />
- Controller组件编写和配置
Controller组件类可以不用实现Controller接口,方法可以灵活定义。
public ModelAndView xxx(){...} public ModelAndView xxx(HttpServletRequest request){...} public ModelAndView xxx(HttpServletResponse response){...} public ModelAndView xxx(HttpServletRequest request,HttpServletResponse response){...}
Controller配置可以用组件扫描,在Controller组件上使用@Controller标记
<context:component-scan base-package="cn.xdl.web.controller"/>
##列表显示
/list.do–>DispatcherServlet–>HandlerMapping–>ListController–>ViewResolver–>/WEB-INF/list.jsp
-
web.xml可以指定多个Spring配置文件,用逗号隔开
<init-param>
contextConfigLocation
classpath:spring-mvc.xml,classpath:applicationContext.xml
-
Controller使用DAO或Service,都可以采用IOC注入方式使用
@Controller
public class ListController {@Resource private NewsDao newsDao;//省略了setNewsDao方法 //其他省略 }
-
list.jsp页面采用JSTL+EL表达式列表显示
-
导入jstl开发包
-
在jsp添加标签库引入
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-
使用<c:forEach>标记循环
<table> <c:forEach items="${news}" var="news"> <tr> <td>${news.title}</td> <td>${news.releaseTime}</td> </tr> </c:forEach> </table>
-