springmvc



一、搭建环境

步骤:

具体步骤
1.创建一个简单maven项目,名为springMVC作为父项目,并删除src包(子项目学习,父项目啥也不用干)
2.导入需要的依赖包
3.创建子项目,命名方式为springMVC-xx-xxx

导入依赖的包

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.9.RELEASE</version>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>

<dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

二、回顾servlet

  1. 在父项目springMVC上创建简单maven子项目springMVC-01-servlet

  2. 添加框架 Web Application(右键点击子项目,选择添加支持的框架技术)

  3. 需要的包(父项目有,可不导入)

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
    </dependency>
    
  4. 编写一个servlet用于处理用户请求,HelloServlet.java

    package com.palen.servlet;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    public class HelloServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
            //1.获得前端参数
            String method = req.getParameter("method");
            if (method.equals("add")){
                req.getSession().setAttribute("msg","执行了add方法");
            }if (method.equals("delete")){
                req.getSession().setAttribute("msg","执行了delete方法");
            }
    
            //2.调取业务层
    
            //3.视图转发或者重定向
            req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,resp);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    
  5. 编写接收数据页面form.jsp和跳转之后页面test.jsp

    • form.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head><title>Title</title></head>
      <body>
          <form action="/hello" method="post">
              <input type="text" name="method">
              <input type="submit">
          </form>
      </body>
      </html>
      
    • test.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head><title>Title</title></head>
      <body>
      	${msg}
      </body>
      </html>
      
  6. 在web.xml中注册servlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    
        <servlet>
            <servlet-name>hello</servlet-name>
            <servlet-class>com.palen.servlet.HelloServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>/hello</url-pattern>
        </servlet-mapping>
    
    </web-app>
    
  7. 启动tomcat,运行测试

    • 部署tomcat,点击右上角的add configuration,“+”,“tomcat server”,“local”,改名称,“修复”
    • 启动Tomcat,在网址输入”http://localhost:8080/form.jsp“,并输入表单内容点击提交,或者直接输入 “http://localhost:8080/hello?method=add"

三、初建springMVC

3.1 创建一个简单的springMVC 步骤

  1. 新建子项目,添加web支持

  2. 导入springMVC所需要的包

  3. 配置web.xml,注册DispatcherServlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    <!-- 注册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>
        </servlet>
    
        <!-- / 匹配所有请求;(不包括jsp) -->
        <!-- /*匹配所有请求;(包括jsp) -->
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
    </web-app>
    
  4. 编写springmvc配置文件,springmvc-servlet.xml

    • 添加映射器
    • 添加适配器
    • 添加图层解析器
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
        <!--  1.  添加映射器-->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
        <!--  2.  添加适配器-->
        <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
        <!--  3.  添加图层解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
            <!-- 前缀 -->
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <!-- 后缀 -->
            <property name="suffix" value=".jsp"/>
        </bean>
    </beans>
    
  5. 编写controller,(实现controller接口或者增加注解),返回一个ModelAndView,装数据,封视图。

    package com.palen.controller;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.lang.annotation.Annotation;
    
    public class HelloController implements Controller {
    
        public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
            //1.ModelAndView 模型和视图
            ModelAndView mv = new ModelAndView();
            //2.调用业务层,此处无
            //3.封装对象
            mv.addObject("msg","Hello,springMvc");
            //4封装跳转视图
            mv.setViewName("hello"); //自动会拼接成 WEB-INF/jsp/hello.jsp
            return mv;
        }
    }
    
  6. 在spring-servlet.xml中注册自己写的类,交给springIOC容器

    <!--handler-->
    <bean id="/helloReq" class="com.palen.controller.HelloController"/>
    
  7. 写跳转页面jsp,显示ModelAndView存放的数据,以及我们正常的页面;

  8. 配置Tomcat,启动测试,输入网址“http://localhost:8080/helloReq”

404失败原因:是否缺少jar包

在项目结构中,点击项目依赖,然后查看WEB-INF下是否有lib目录,没有就新建一个,并“+” 把jar全部添加

3.2 springMVC执行流程

在这里插入图片描述

1、客户端(用户)就会发送请求,DispatcherServlet会接收并拦截请求
2、DispatcherServlet 根据请求信息调用对应的映射器HandlerMapping,映射出需要解析的Handler
3、解析请求对应的Handler(HandlerExecution)
4、解析后返回给DispatcherServlet
5、解析到对应的 Handler后,开始由 HandlerAdapter 适配器处理。
6、HandlerAdapter 会根据 Handler 来调用真正的处理器来处理请求,并处理相应的业务逻辑。
7、Controller处理完业务后,会返回一个 ModelAndView 对象,Model 是返回的数据对象,View 是跳转的视图。
8、HandlerAdapter 适配器把 ModelAndView 对象给DispatcherServlet
9、通过ModelAndView 对象配置具体的视图解析器ViewResolver
10、把配置的具体视图View返回给DispatcherServlet
11、DispatcherServlet 把已返回的 Model 传给 View进行视图渲染。
12、View将渲染好的视图返回给用户(浏览器)


四、注解开发springMVC

步骤:

  1. 创建子项目springMVC-03-annotation

    • 防止过滤xml文件
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    
  2. 添加web支持,并在项目结构里添加lib包,并把jar包导入

  3. 配置web.xml,注册DispatcherServlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    
    <!-- 配置DispatcherServlet 这是springMVC的核心 , 请求分发器,前端控制器 -->
        <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>
        </servlet>
    
        <!-- / 匹配所有请求;(不包括jsp) -->
        <!-- /*匹配所有请求;(包括jsp) -->
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
    </web-app>
    
  4. 配置springmvc-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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
            http://www.springframework.org/schema/context/spring-context.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        
        <!--  1. 自动扫描包,让指定包下注解生效,由IOC容器统一管理--> 
        <context:component-scan base-package="com.palen.controller"/>
        <!--  2.  让springMVC不处理静态资源,类似css html js文件-->
        <mvc:default-servlet-handler/>
        <!--  3.  springMVC注解支持 : 映射器 + 适配器 -->
        <mvc:annotation-driven/>
        <!--  4.  添加视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
            <!-- 前缀 -->
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <!-- 后缀 -->
            <property name="suffix" value=".jsp"/>
        </bean>
        
    </beans>
    
  5. 创建controller

    package com.palen.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class HelloController {
        @RequestMapping("/helloReq")
        public String hello(Model model){
            //封装数据
            model.addAttribute("msg","hello,springMVC annotation!");
            return "hello";//被视图解析器解析
        }
    }
    
    
  6. 创建视图层hello.jsp ,一般页面放在WEB-INF/jsp/下,比较安全

  7. tomcat部署,测试运行“http://localhost:8080/helloReq”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值