您的位置:首页 > 编程语言 > Java开发

SpringMVC笔记(二)

2021-04-29 09:36 260 查看

1. 创建SpringMVC程序

1.1 配置文件方式

  1. 创建web项目

  2. 配置pom.xml,导入依赖

  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">
    
    <!--1.注册DispatcherServlet-->
    <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->
    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
    <!--启动级别-1-->
    <load-on-startup>1</load-on-startup>
    </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">
    
    </beans>
  5. 添加处理映射器

    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
  6. 添加处理适配器

    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
  7. 添加视图解析器

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
    <!--前缀-->
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <!--后缀-->
    <property name="suffix" value=".jsp"/>
    </bean>
  8. 编写Controller,要么实现Controller接口,要么使用注解,需要返回一个ModelAndView,装数据,封视图

    package top.linzeliang.controller;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    // 先导入Controller接口
    public class HelloController implements Controller {
    
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // ModelAndView 模型和视图
    ModelAndView mv = new ModelAndView();
    
    // 封装对象,放在ModelAndView中。Model
    mv.addObject("msg","HelloSpringMVC!");
    
    1044
    // 封装要跳转的视图,放在ModelAndView中
    // /WEB-INF/jsp/hello.jsp
    mv.setViewName("hello");
    return mv;
    }
    }
  9. 将类交给SpringIOC,注册Bean

    <!-- Handler -->
    <!-- id中要加斜杠 -->
    <bean id="/hello" class="top.linzeliang.controller.HelloController"/>
  10. 编写对应jsp页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>Kuangshen</title>
    </head>
    <body>
    ${msg}
    </body>
    </html>
  11. 启动Tomcat服务器,进行测试

      如果出现404错误,则检查lib包是否导入成功了

1.2 注解方式

  1. 创建web项目

  2. 配置pom.xml,导入依赖

      Spring框架核心库

    • SpringMVC

    • Servlet

    • JSTL

    • 由于Maven可能存在资源过滤,所以要配置一下如下信息以防万一

      <build>   <resources>       <resource>           <directory>src/main/java</directory>           <includes>               <include>**/*.properties</include>               <include>**/*.xml</include>           </includes>           <filtering>false</filtering>       </resource>       <resource>           <directory>src/main/resources</directory>           <includes>               <include>**/*.properties</include>               <include>**/*.xml</include>           </includes>           <filtering>false</filtering>       </resource>   </resources></build>
  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">    <!--1.注册DispatcherServlet-->    <servlet>        <servlet-name>springmvc</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:springmvc-servlet.xml</param-value>        </init-param>        <!--启动级别-1-->        <load-on-startup>1</load-on-startup>    </servlet>    <!--/ 匹配所有的请求;(不包括.jsp)-->    <!--/* 匹配所有的请求;(包括.jsp)-->    <servlet-mapping>        <servlet-name>springmvc</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>
  4. 添加SpringMVC配置文件,springmvc-servlet.xml

      再resource目录下添加springmvc-servlet.xml配置文件,配置文件的形式与Spring容器配置基本类似,为了支持基于注解的IOC,设置了自动扫描包的功能

      <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.springfra
      1b23
      mework.org/schema/context/spring-context.xsd                           http://www.springframework.org/schema/mvc                           https://www.springframework.org/schema/mvc/spring-mvc.xsd">    <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->    <context:component-scan base-package="top.linzeliang.controller"/>    <!-- 让Spring MVC不处理静态资源 -->    <mvc:default-servlet-handler />    <!--       启用注解驱动       在spring中一般采用@RequestMapping注解来完成映射关系       要想使@RequestMapping注解生效       必须向上下文中注册DefaultAnnotationHandlerMapping       和一个AnnotationMethodHandlerAdapter实例       这两个实例分别在类级别和方法级别处理。       而annotation-driven配置帮助我们自动完成上述两个实例的注入。    -->    <mvc:annotation-driven />    <!-- 视图解析器 -->    <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是为了让SpringIOC容器初始化时自动扫描到
    • @RequestMapping是为了映射请求路径
    • 方法中的Model类型的参数是为了把Action中的数据带到视图中
    • 方法返回的结果是视图的名称,加上配置文件中的前后缀变成/WEB-INF/jsp/hello.jsp
    package top.linzeliang.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("/HelloController")public class HelloController {    //真实访问地址 : 项目名/HelloController/hello    @RequestMapping("/hello")    public String sayHello(Model model){        //向模型中添加属性msg与值,可以在JSP页面中取出并渲染        model.addAttribute("msg","hello,SpringMVC");        //web-inf/jsp/hello.jsp        return "hello";    }}
  6. 创建视图层(页面)

    <%@ page contentType="text/html;charset=UTF-8" language="java" %><html>    <head>        <title>SpringMVC</title>    </head>    <body>        ${msg}    </body></html>
  7. 进行测试

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: