第一讲 Hello Spring MVC
一、mvc框架要做哪些事情:
- 将url映射到java类或java类的方法
- 封装用户提交的数据
- 处理请求-调用相关的业务处理-封装响应的数据
- 将响应数据的数据进行渲染(jsp、html、freemarker等)
二、spring mvc:是一个轻量级的基于请求响应的mvc框架。
三、为什么要学习spring mvc?
- 性能较structs2好
- 简单便捷易学
- 天生和spring无缝集成(使用spring aop、 ioc)
- 使用约定优于配置
- 能够进行简单的junit测试
- 支持Restful风格
- 异常处理
- 本地化、国际化
- 数据验证、类型转换等
- 拦截器等
使用的人多,使用的公司多。
四、简单了解结构
五、spring mvc的案例
步骤:
- 导入jar包
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
|
//新建一个ModelAndView对象
ModelAndView mv = new ModelAndView();
//封装要显示到视图中的数据
mv.addObject("msg", "Hello, spring mvc!");
//设置视图名
mv.setViewName("hello");
因为这里渲染的是jsp页面所以加入这个jar包
|
- 配置web.xml文件-配置分发器
<display-name>spring-web</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
|
- 添加spring mvc配置文件:默认在WEB-INF下添加[servlet-name]-servlet.xml文件
- 编写HelloController.java
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//新建一个ModelAndView对象
ModelAndView mv = new ModelAndView();
//封装要显示到视图中的数据
mv.addObject("msg", "Hello, spring mvc!");
//设置视图名
mv.setViewName("hello");
return mv;
}
}
- 编写spring mvc配置文件
<!-- 配置HandlerMapping -->
<bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 配置HandlerAdapter -->
<bean class = "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<!-- 配置渲染器 视图解析器 -->
<bean id="jspViewResolver" 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" />
<!-- 例:视图名为:hello 渲染后:/WEB-INF/jsp/hello.jsp 该页面-->
</bean>
<!-- 配置请求和处理器 -->
<bean name = "/hello.do" class = "com.liujie.controller.HelloController"></bean>
/hello.do也可以写成/hello,如果没有配置HandlerAdapter则一定要写成/hello.do |
- 测试运行
六、使用注解(Annotation)的配置
- 编写HelloController.java
@Controller
public class HelloController {
@RequestMapping("/hello")
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
mv.setViewName("hello");
mv.addObject("msg", "Hello, spring mvc!");
return mv;
}
}
- 编写spring mvc配置文件
<!-- 配置渲染器 视图解析器 -->
<bean id="jspViewResolver" 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" />
<!-- 例:视图名为:hello 渲染后:/WEB-INF/jsp/hello.jsp 该页面-->
</bean>
<!-- spring容器扫描指定包下的所有类,如果类上有注解 那么根据注解产生相应bean对象已经映射信息 -->
<context:component-scan base-package="com.liujie.controller"/>
七、可以自定义spring mvc配置文件的位置及名字
- 配置web.xml文件-配置分发器
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
classpath: | 对应于maven项目中的 |
|