springmvc怎么使用?springmvc的简单使用

阳光 2022-05-09 16:27:58 java常见问答 4968

spring mvc 是基于 spring 的一个框架,实际上就是 spring 的一个模块,是专门用来做 web 开发的,使用springmvc会让开发更加简单,可是有些开发人员不太清楚springmvc怎么使用?下面来我们就来给大家讲解一下。

先在 idea 中通过 maven 创建一个 web 项目,创建完成后我们可以手动添加 src/main/java 和 src/main/resource 目录:

springmvc怎么使用?springmvc的简单使用.jpg

然后引入依赖,依赖配置文件 pom.xml 类似下面:

<?xml version="1.0" encoding="UTF-8"?>
 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>org.example</groupId>
  <artifactId>maven_ee_test01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
 
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
  </dependencies>
</project>

在 maven 的 web 项目的 web.xml 配置文件中配置中央调度器。默认生成的 web.xml 配置文件跟下面不太一样,可以直接照着下面进行修改:

<?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">
 
  <!-- SpringMVC的前端控制器 -->
  <servlet>
    <servlet-name>springmvcTest</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 
 
    <!-- 可以自定义springmvc读取的配置文件的位置 -->
<!--    <init-param>-->
<!--      <param-name>contextConfigLocation</param-name>-->
<!--      <param-value>/WEB-INF/xxx.xml</param-value>  &lt;!&ndash;指定配置文件的位置&ndash;&gt;-->
<!--    </init-param>-->
 
 
    <!-- 指定该servlet对象在tomcat启动时即创建。
         load-on-startup:指定tomcat启动后创建对象的顺序,tomcat会根据各个servlet的该属性值按照顺序来创建各个servlet对象。它的值是大于等于0的整数,值越小创建时间越早。-->
    <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>springmvcTest</servlet-name>
 
    <!-- 使用框架时,url-pattern一般来说有两种写法:
            1)使用自定义扩展名:*.do、*.action、*.mvc等等,如<url-pattern>*.do</url-pattern>
            2)直接使用斜杆:<url-pattern>/</url-pattern>,表示拦截所有请求
    -->
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

DispatcherServlet实际上就是个Servlet(它继承自HttpServlet基类),在被创建时,会执行该 servlet 的 init() 方法。在 DispatcherServlet 的初始化过程中,该框架会尝试拿到项目中的 WebContent/WEB-INF 目录文件下的名为 [servlet-name]-servlet.xml 的配置文件,并创建其中所定义的bean。(比如是上面的配置,则该配置文件将会是 webcontent/WEB-INF/springmvcTest-servlet.xml,springmvc 会从该配置文件中加载应用程序上下文)。当然,我们也可以通过 init-param 标签自定义配置文件的位置及名称,不使用默认的。

中央调度器 DispatcherServlet 负责创建 springmvc 容器 对象,读取 spring 的 xml 配置文件,创建文件中的 Controller 对象。并且负责接收用户的请求,分派给各个 Controller 对象。

然后我们需要在 webcontent(webapp)/WEB-INF 目录下创建一个 spring 配置文件,并在该文件中开启组件扫描。比如下面的 springmvcTest-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"
       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">
 
    <!--开启组件扫描。base-package写包名,若要扫描多个包,可以用逗号隔开,或者直接写多个包共用的上级目录-->
    <context:component-scan base-package="controllerPackage"></context:component-scan>
</beans>

然后需要创建控制器,通过控制器来处理请求。比如下面我们创建了一个控制器类,通过注解 @RequestMapping 来将URL映射到处理方法中,即 /test.do 请求将会由 doTest() 方法来处理:

package controllerPackage;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class ControllerTest01
{
    /**
     *创建方法来处理请求,在springmvc中是通过方法来处理请求的。方法是自定义的,有多种返回值,多种参数
     * @RequestMapping:请求映射,作用是把请求地址和方法绑定在一起。属性的value可以是一个string,也可以是一个数组,不同方法间的值不能重复。
     * @RequestMapping 可以放在方法上,也可以直接放在类上
     */
    @RequestMapping(value = "/test.do")
    public ModelAndView doTest()
    {
        //Spring MVC 通过 ModelAndView 对象把模型和视图结合在一起
        ModelAndView modelView = new ModelAndView();
        //添加数据,框架最后会把数据放到request的作用域当中,类似于 request.setAttribute()
        modelView.addObject("name", "张三");
        modelView.addObject("age", "22");
        //指定视图,指定视图的完整路径。框架会对视图执行forward操作,类似于request.getRequestDispatcher("/show.jsp").forward();
        modelView.setViewName("/show.jsp");
        return modelView;
    }
}

在项目 src/main/webapp 目录下创建 show.jsp,用来接收上面处理 /test.do 过后添加的数据:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>这里是show.jsp页面</h1>
    <h2>hello:${name} ---- ${age}</h2>
</body>
</html>

然后我们就可以通过访问 test.do 来进行测试了。启动 tomcat,添加项目,访问 test.do 请求。比如项目名为 springmvcProject,则访问路径为:http://localhost:8080/springmvcProject/test.do。最后可以看到结果如下:

1.jpg

这就是 springmvc的简单使用, springmvc容易理解,使用起来简单,能够让开发者减轻处理复杂问题的负担,促进项目完美开发!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

程序员面试一般问什么?程序员面试常见问题

JAVA写程序时主类的名字和什么要相等?JAVA怎么写程序?

java接口可以有变量吗?什么是java成员变量?