springmvc 学习日志 第一篇

1、SpringMVC 简介

1.1 什么是springmvc

Springmvc是Spring feameword的一部分,基于java实现mvc的轻量级web框架。

底层是servlet。围绕DispatcherServlet设计

1.2 springmvc的优缺点

优点:

  1. 轻量级,简单易学
  2. 高效,易于请求响应mvc框架
  3. 与Spring兼容性好,无缝结合
  4. 约定优于配置
  5. 功能强大:restful、数据验证、格式化、本地化、主体等
  6. 简单灵活
  7. 用的人多,使用的公司多

1.3 springmvc的运行流程

  1. 用户发送请求到前端控制器DispatcherServelt
  2. DispatcherServelt收到请求调用HandlerMapping处理映射器
  3. 处理映射器找到具体的处理器(xml配置,或者注解),生成处理器对象返回给DispatcherServelt
  4. DispatcherServelt调用HandlerAdapter处理器适配器
  5. HandlerAdapter调用具体的处理器(Controller,后端控制器)
  6. controller执行完成返回ModerAndView 至 HandlerAdapter。
  7. HandlerAdapter将ModerAndView 返回至 DispatcherServelt。
  8. DispatcherServelt将ModerAndView传给ViewReslover视图解析器。
  9. ViewReslover解析后返回具体的View。
  10. DispatcherServelt根据View进行渲染视图。
  11. 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

  1. web.xml同1.3一致
  2. 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
posted @ 2022-01-07 19:10  大龙挂了,公主在哪  阅读(41)  评论(0)    收藏  举报