快捷搜索: 长连接 前端 源码 pan

springmvc创建入门项目的步骤


前言

提示以下只是测试springmvc的入门测试项目,所以没写操作数据库的方法和类

项目是基于maven进行创建的


提示:以下是本篇文章正文内容,下面案例可供参考

一、创建maven项目进行环境搭建

(一)、创建maven项目

1、创建一个新项目

2、选Maven进行创建

3、自定义项目名称

4、因为我没选web的模板所以要自己添加web

5、添加web

6、更改web文件夹的位置

7、项目文件基本创建完成

(二)、在pom.xml文件添加需要springmvc的依赖和插件

1、添加依赖和插件

提示:

<!-- 依赖 -->
    <dependencies>
        <!--spring-webmvc依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.13.RELEASE</version>
        </dependency>
        <!--springmvc底层还是servlet,所以必须添加serlvet依赖-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <!-- 作用在打包时确保servlet不会打包进去 -->
            <scope>provided</scope><!--因为tomcat插件的有提供servlet,所以如果打包进去插件就会启动会失败-->
        </dependency>
    </dependencies>
    <!-- 插件 -->
    <build>
        <plugins>
            <!-- 编码和编译和JDK版本 -->
            <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version><!-- 根据自己电脑中的jdk版本选择maven的版本,如果不匹配可能报错 -->
                    <configuration>
                        <source>11</source><!-- 自己电脑中的jdk版本 -->
                        <target>11</target>
                    </configuration>
            </plugin>
            <!--tomcat插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <path>/</path>
                    <port>8080</port><!-- 可自定义端口,一般只要在8000以上就行 -->
                </configuration>
            </plugin>
        </plugins>
    </build>

2、根据自己需求定义项目需要打包的类型

3、下载

提示:这一步电脑时需要联网才能下载这些依赖和插件的。

提示:如果没出现上方的按钮就按以下步骤

4、下载完成后进行查看

提示:出现进度条就代表在下载 提示:下载完成查看下载的依赖。

三、创建Spring和SpringMVC的配置文件

在运行时springmvc时会用到两个容器: 1、spring容器:用来处理类与类之间的逻辑关系,

2、springmvc容器:用来处理前端和后端的逻辑关系

1、创建spring的配置文件

2、为spring容器添加配置和约束

注意:由于程序运行时是先调用springmvc容器,然后再由springmvc容器调用spring容器的 所以这边扫描的包不要把关于控制器的包也写进去

<?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配置文件:除了控制器之外的bean对象都在这被扫描 -->
    <context:component-scan base-package="com.wen.service,com.wen.dao"/>


</beans>

3、在创建一个springmvc的配置文件

提示: 创建步骤跟上面一样文件名字自定义

<?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
        ">

    <!-- SpringMVC配置文件:控制器的bean对象在这被扫描 -->
    <context:component-scan base-package="com.wen.controller"/>

<!--    启动mvc的注解-->
    <mvc:annotation-driven/>
<!--    配置视图解析器的配置-->                                  <!--    调用视图解析器的方法:InternalResourceViewResolver-->
    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/"/><!--默认访问路径是webapp根路径下的,如果webapp下还有其他文件夹就写:/webapp/文件夹名-->
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"/><!-- 如果是index.html文件,就写html -->
    </bean>
</beans>

四、在web.xml中读取Spring和SpringMVC的配置文件

<?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">


<!--    Spring配置-->

<!--        1、让监听器知道spring的配置文件的位置-->
        <context-param>
            <param-name>contextConfigLocation</param-name>
                                 <!-- spring配置文件的文件名 -->
            <param-value>classpath:applicatiooContext.xml</param-value>
        </context-param>
<!--        2.创建监听器-->
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>


<!--        springmvc的 核心前端中央 控制器-->

<!--        servlet的封装-->
        <servlet>
            <servlet-name>dispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--            servlet读取springmvc的配置文件-->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                                   <!-- springmvc配置文件的文件名 -->
                <param-value>classpath:springmvc.xml</param-value>
            </init-param>
<!--            在容器创建servlet对象的优先级.    数字越小越先创建-->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcherServlet</servlet-name>
<!--            设置访问路径后必须加.do才能进行访问-->
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>




</web-app>

五、根据项目的需求来创建文件夹和类

1、创建文件夹(一般是把Java的源码放这里面)

2、需要的文件夹

提示: controller文件夹 :一般是放web控制器的服务类(就是根据前端发来的请求进行数据的处理,然后返回给前端) dao文件夹 :一般是放数据库的操作类(数据库相关操作数据访问等) pojo文件夹 :一般是放实体类(用来数据库映射对象) service文件夹 :一般是做相应的业务逻辑处理的服务类

3、创建service类

提示:由于只是入门springmvc的测试项目,所以我就没用数据库,然后实体类和数据库的操作类就不写了。 1、service(就模拟以下service的方法在controller那被调用就行)

package com.wen.service;

import org.springframework.stereotype.Service;

@Service
public class TeamService {
          
   
    public void hello(){
          
   
        System.out.println("TeamService---------hello");
    }
    public void update(){
          
   
        System.out.println("TeamService---------update");
    }
    public void add(){
          
   
        System.out.println("TeamService---------add");
    }

}

4、创建jsp文件

index.jsp文件

<html>
<head>
    <title>index</title>
</head>
<body>
<h1>${team}</h1>
<form action="/update.do" method="post">
    <button type="submit">update的post提交方式</button>
</form>
<form action="/add.do" method="get">
    <button type="submit">add的get提交方式</button>
</form>
</body>
</html>

update.jsp文件

<html>
<head>
    <title>update</title>
</head>
<body>
	<h1>team--------update</h1>
</body>
</html>

add.jsp文件

<html>
<head>
    <title>add</title>
</head>
<body>
 	<h1>team--------add</h1>
</body>
</html>

5、创建controller类

package com.wen.controller;

import com.wen.service.TeamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
//@RequestMapping("/team")   /如果在类上加@RequestMapping("/team")则在此类中的所有方法的请求路径前都要加上/team
                            //如:原先是:http://localhost:8080/update.do               现在:http://localhost:8080/team/update.do
public class TeamController {
          
   
    @Autowired
    private TeamService teamService;
    @RequestMapping("/index.do")//设置请求路的径
    public ModelAndView hello(){
          
   
        teamService.hello();
        ModelAndView mv = new ModelAndView();
        mv.addObject("team", "teamindex----hello");//相当于request.setAttribute("team", "teamindex----hello")
        //经过InternalResourceViewResolver对象处理后前缀加上后缀就变为了:    /文件夹/index.jsp
        mv.setViewName("index");//未来要经过Springmvc的视图解析器处理,转换成物理资源路径。/相当于request.getRequestDispatcher("index.jsp").forward();
        return mv;
    }
    //设置请求路的径       /规定请求的方式是get
    @RequestMapping(value = "/add.do",method = RequestMethod.GET)//请求方式设定后,只能用get的提交方式
    public ModelAndView add(){
          
   
        teamService.add();

        ModelAndView mv = new ModelAndView();
        //经过InternalResourceViewResolver对象处理后前缀加上后缀就变为了:    /jsp/add.jsp
        mv.setViewName("/jsp/add");//要经过Springmvc的视图解析器处理,转换成物理资源路径。
        return mv;
    }
    //设置请求路的径       /规定请求的方式是post
    @RequestMapping(value = "/update.do",method = RequestMethod.POST)//请求方式设定后,只能用post的提交方式
    public ModelAndView update(){
          
   
        teamService.update();
        ModelAndView mv = new ModelAndView();
        //经过InternalResourceViewResolver对象处理后前缀加上后缀就变为了:    /jsp/team/update.jsp
        mv.setViewName("/jsp/team/update");//要经过Springmvc的视图解析器处理,转换成物理资源路径。
        return mv;
    }
}

九、运行测试

运行后访问的地址: 访问结果:

由于给add.do和update.do添加了访问方式的限制所以要注意请求方式:

10、补充url-pattern解析

1、如果把标签中的.do改为/时访问静态资源会显示不出来.

在index.jsp页面添加一张图片,如果节点中的值为*.do,图片可以正常访问,但是如果为/就不能访问。 1、项目中添加图片,同时修改index.jsp页面

2、此时访问图片无法显示

1、.do 在没有特殊要求的情况下,SpringMVC 的前端控制器 DispatcherServlet 的常使用后辍匹配方 式,可以写为.do 或者 *.action, *.mvc 等。 2、/ 可以写为/,但是 DispatcherServlet 会将向静态内容–例如.css、.js、图片等资源的获取请求 时,也会当作是一个普通的 Controller 请求。前端控制器会调用处理器映射器为其查找相应的处理器。肯 定找不到啊,所以所有的静态资源获取请求也均会报 404 错误。

2、如果的值配置为/后,静态资源可以通过以下两种方法解决。

1、在springmvc的配置文件中添加如下内容:(第一种)

<mvc:default-servlet-handler/>
 <!--声 明 了 <mvc:default-servlet-handler /> 后 ,springmvc框架会在容器中创建 DefaultServletHttpRequestHandler处理器对象。该对象会对所有进入 DispatcherServlet的URL 进行检查。
 如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet 处理。 一般的服务器都有默认的 Servlet。
 例如咱们使用的Tomcat服务器中,有一个专门用于处理静态资源 访问的 Servlet 名叫 DefaultServlet。其<servlet-name/>为default。可以处理各种静态资源访问 请求。该Servlet注册在 Tomcat 服务器的 web.xml 中。在 Tomcat安装目录/conf/web.xml。-->

2、在springmvc的配置文件中添加如下内容:(第二种)

<mvc:resources location="/imges/" mapping="/images/**" />
    <!--location: 表示静态资源所在目录。当然,目录不要使用/WEB-INF/及其子目录。
    mapping: 表示对该资源的请求。注意,后面是两个星号**。-->
经验分享 程序员 微信小程序 职场和发展