继续学习 http://sishuok.com/forum/blogPost/list/6986.html
这一篇讲的很细,我就继续照着搭框架。
mvc框架中,所有的url交由对应的servlet,也就是DispatcherServlet处理。它再找到对应的servletname-servlet.xml的HandlerMapping,查出这个url交由哪个Controller处理,Controller返回一个ModleAndView对象,即包括Modle和View。
web.xml中配置:
<!-- HandlerMapping 就是说url中的请求交给bean来处理-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- HandlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean name="/hello" class= "action.HelloWorldController"/>
就是说/hello的请求交给action.HelloWorldController来处理。很像以前struts2中的action类。
在action包中创建HelloWorldController类:
package action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class HelloWorldController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("message", "Hello World!");
mv.setViewName("hello");
return mv;
}
}
mv.setViewName("hello")是说,返回的view为“hello”,这个Dispathcher会在ViewResolver找到相应的视图对象。找到“/WEB-INF/jsp/”开头的,以“.jsp”结尾的“/WEB-INF/jsp/hello.jsp”。
所以,在"/WEB-INF/jsp/"文件下,创建hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello页面</title>
</head>
<body>
这里是hello页面
${message}
</body>
</html>
这样访问 http://localhost:8080/springexample/hello 便得到页面: