springmvc 学习日志 第一篇
1、SpringMVC 简介
1.1 什么是springmvc
Springmvc是Spring feameword的一部分,基于java实现mvc的轻量级web框架。
底层是servlet。围绕DispatcherServlet设计
1.2 springmvc的优缺点
优点:
- 轻量级,简单易学
- 高效,易于请求响应mvc框架
- 与Spring兼容性好,无缝结合
- 约定优于配置
- 功能强大:restful、数据验证、格式化、本地化、主体等
- 简单灵活
- 用的人多,使用的公司多
1.3 springmvc的运行流程
- 用户发送请求到前端控制器DispatcherServelt
- DispatcherServelt收到请求调用HandlerMapping处理映射器
- 处理映射器找到具体的处理器(xml配置,或者注解),生成处理器对象返回给DispatcherServelt
- DispatcherServelt调用HandlerAdapter处理器适配器
- HandlerAdapter调用具体的处理器(Controller,后端控制器)
- controller执行完成返回ModerAndView 至 HandlerAdapter。
- HandlerAdapter将ModerAndView 返回至 DispatcherServelt。
- DispatcherServelt将ModerAndView传给ViewReslover视图解析器。
- ViewReslover解析后返回具体的View。
- DispatcherServelt根据View进行渲染视图。
- DispatcherServelt响应用户。
只有 Controller 和 view部分需要开发 其它都使用springmvc框架实现。
1.4 实现简单的springmvc程序
1.web.xml注册DispatcherServlet
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--关联配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-servlet.xml</param-value>
</init-param>
<!--启动顺序,数字越小,启动越早-->
<load-on-startup>1</load-on-startup>
</servlet>
2.编写springmvc-servlet.xml 配置
- 添加处理映射器
<!--处理映射器-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
- 添加处理适配器
<!--处理适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
- 添加视图解析器
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
3.编写Controller类
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
//new一个视图
ModelAndView view = new ModelAndView();
//封装信息到视图中
view.addObject("msg","你好 小一!");
//设置跳转的页面
view.setViewName("hello");
return view;
}
4.在springmvc-servlet.xml中注册bean
<!--在spring aop容器中注册自己编写的类-->
<bean id="/hello" class="com.joe.controller.HelloController"/>
5.编写要跳转的jsp
<body>
${msg}
</body>
1.4 注解实现hellospringmvc
- web.xml同1.3一致
- springmvc.xml
<?xml version="1.0" encoding="UTF8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--自动扫描包,让注解生效,由Spring IOC容器统一管理-->
<context:component-scan base-package="com.joe.controller"/>
<!--不处理静态资源-->
<mvc:default-servlet-handler/>
<!--mvc注解驱动
实现HandlerMapping和HandlerAdapter处理器-->
<mvc:annotation-driven/>
<!--添加视图解析器 解析controller返回的视图-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/"/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
</beans>
3.controller.java
@Controller
//类上面加注解
@RequestMapping("hello")
public class HelloController {
//方法上面加注解
@RequestMapping("/hello1")
public String hello1(Model model){
model.addAttribute("msg","小华,你好!");
return "hello/hello1";
}
@RequestMapping("/hello2")
public String hello2(Model model){
model.addAttribute("msg","小红,你好!");
return "hello/hello2";
}
@RequestMapping("/hello3")
public String hello3(Model model){
model.addAttribute("msg","小白,你好!");
return "hello/hello3";
}
}
4.请求
http://localhost:8080/hello/hello1
http://localhost:8080/hello/hello2
http://localhost:8080/hello/hello3

浙公网安备 33010602011771号