SpringMVC(二)—— SpringMVC的基本使用(配置和注解实现)


这节主要讲述 SpringMVC的基本使用,注意我用的是伪代码,即并没有与底层数据库交互,主要在于SpringMVC的基本使用(配置和注解实现);

操作步骤:

  1. 引入依赖(主要是Spring核心包、SpringMVC相关的包);
  2. 配置和开发(配置:前端控制器、处理器映射器、处理器适配器、配置视图解析器,开发:开发Handler、开发视图);
  3. 部署到服务器上(Tomcat、Jetty);

配置实现

一、引入依赖

Spring的核心包前面Spring已经介绍过了(Spring(一)),所以这里只写SpringMVC的:

   <!--SpringMVC相关-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>

二、配置和开发

1、创建bean类、开发Handler:

创建bean类Student:

public class Student {
    private int SID;
    private String Sname;
    private String Ssex;
    private int Age;
    //get、set方法,toString方法
}

开发Handler:

public class ControllerTest1 implements Controller {
    /**
     * Handler必须实现org.springframework.web.servlet.mvc.Controller接口
     * 并且实现handleRequest方法
     * @param httpServletRequest
     * @param httpServletResponse
     * @return
     * @throws Exception
     */
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //查询
        List<Student> list = new ArrayList<>();
        Student student1 = new Student();
        student1.setSID(1);
        student1.setSname("张三");
        student1.setSsex("男");
        student1.setSage(22);
        Student student2 = new Student();
        student2.setSID(2);
        student2.setSname("小丽");
        student2.setSsex("女");
        student2.setSage(21);
        list.add(student1);
        list.add(student2);

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("students",list);

        //逻辑视图名
        modelAndView.setViewName("jsp1");
        return modelAndView;
    }
}

2、开发视图:

我是在WEB-INF下创建的jsp包里面创建的jsp1.jsp:
在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>用户列表</title>
</head>
<body>

<table width="80%" border="1" align="center">
    <h1 align="center">用户列表</h1>
    <tr>
        <%--<td>选择</td>--%>
        <td>编号</td>
        <td>姓名</td>
        <td>性别</td>
        <td>年龄</td>
    </tr>


    <%-- students 要与后台保持一致--%>
    <c:forEach items="${students }" var="student">
        <tr>
            <td>${student.SID }</td>
            <td>${student.sname} </td>
            <td>${student.ssex }</td>
            <td>${student.sage }</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

3、创建配置文件springmvc1.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"
       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">

    <!--通过配置实现-->

    <!--配置处理器映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!--配置处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>

    <!--管理handler-->
    <!--name="/springmvc1"   /springmvc1就是访问的URL-->
    <bean name="/springmvc1" class="com.tulun1.controller.ControllerTest1"/>
</beans>

4、配置前端控制器

打开对应的web.xml(这个相当于main方法):
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name>springmvc</display-name>

  <!--配置前端控制器-->
  <servlet>
    <!-- 第 3 步走到这-->
    <servlet-name>springmvc</servlet-name>
    <!--前端控制器的全路径名-->
    <!-- 第 4 步走到这,交给DispatcherServlet解析-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--初始化用的-->
    <init-param>
      <!--contextConfigLocation 配置处理器映射器、处理器适配器,如果不写的话,
      默认在当前的web的同级目录添加web-INF/servler名称(就是外层的servlet-name对应的值)-servlet.xml-->
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:配置实现/springmvc1.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <!-- 第 2 步走到这-->
    <servlet-name>springmvc</servlet-name>
    <!--设置访问地址 交给DispatcherServlet解析-->
    <!-- 访问这个地址之后第 1 步走到这-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

三、部署项目

1、使用Jetty插件(这个比Tomcat轻量级):

        <!--引入jetty插件-->
          <plugin>
              <groupId>org.mortbay.jetty</groupId>
              <artifactId>maven-jetty-plugin</artifactId>
              <version>6.1.24</version>
              <configuration>
                  <connectors>
                      <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                          <port>8080</port>
                          <maxIdleTime>30000</maxIdleTime>
                      </connector>
                  </connectors>
                  <contextPath>/</contextPath>
              </configuration>
          </plugin>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击上图那个按钮启动项目:
在这里插入图片描述
打开浏览器,输入http://localhost:8080/springmvc1,访问本地的springmvc1:
在这里插入图片描述
2、使用Tomcat,这是使用最广的方式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同样的,启动项目,访问http://localhost:8080/springmvc1:
在这里插入图片描述
使用Tomcat的过程中,遇到了这个错误:
在这里插入图片描述
只要引入这个依赖就好了:

   <!--加入jstl包-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

注解实现

一、引入依赖

一样的,略;

二、配置和开发

1、创建bean类、开发Handler:

创建bean类,还是那个Student类,略;

开发Handler:

@Controller
@RequestMapping(value = "/student")  //这个不要也可以,访问http://localhost:8080/springmvc2就好
public class ControllerTest2 {
    @RequestMapping(value = "/springmvc2")  //这个相当于把http://localhost:8080/springmvc2和getStudentList方法绑定了
    public ModelAndView getStudentList(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) {
        //查询
        List<Student> list = new ArrayList<>();
        Student student1 = new Student();
        student1.setSID(1);
        student1.setSname("张三");
        student1.setSsex("男");
        student1.setSage(22);
        Student student2 = new Student();
        student2.setSID(2);
        student2.setSname("小丽");
        student2.setSsex("女");
        student2.setSage(21);
        list.add(student1);
        list.add(student2);

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("students",list);

        //逻辑视图名
        modelAndView.setViewName("jsp1");
        return modelAndView;
    }

}

2、开发视图

和上面一样的,略;

3、创建配置文件:

这个有两种写法:

㈠springmvc2.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"
       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">


    <!--基于注解-->

    <!--处理器映射器-->
    <!--spring 3.1版本之后-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>

    <!--处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置jsp的视图解析类-->
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- 注解扫描 -->
    <context:component-scan base-package="com.tulun2.controller"/>
</beans>

㈡springmvc3.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">


    <!--基于注解-->

    <!-- 注解扫描 -->
    <context:component-scan base-package="com.tulun2.controller"/>

    <!--自动扫描mvc相关的注解 适配器、映射器等,都有相关的默认配置-->
    <mvc:annotation-driven/>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置jsp的视图解析类-->
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

4、配置前端控制器:

还是web.xml,改一下使用的配置文件就好了:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name>springmvc</display-name>

  <!--配置前端控制器-->
  <servlet>
    <!-- 第 3 步走到这-->
    <servlet-name>springmvc</servlet-name>
    <!--前端控制器的全路径名-->
    <!-- 第 4 步走到这,交给DispatcherServlet解析-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--初始化用的-->
    <init-param>
      <!--contextConfigLocation 配置处理器映射器、处理器适配器,如果不写的话,
      默认在当前的web的同级目录添加web-INF/servler名称(就是外层的servlet-name对应的值)-servlet.xml-->
      <param-name>contextConfigLocation</param-name>
      <!--也可以见springmvc2.xml改成springmvc3.xml,都可以-->
      <param-value>classpath:注解实现/springmvc2.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <!-- 第 2 步走到这-->
    <servlet-name>springmvc</servlet-name>
    <!--设置访问地址 交给DispatcherServlet解析-->
    <!-- 访问这个地址之后第 1 步走到这-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

三、部署服务器

略,

直接使用吧,启动服务器,在浏览器输入http://localhost:8080/student/springmvc2:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章