JavaEE简单实例——SpringMVC的核心类和注释

简单介绍:

在之前我们介绍了SpringMVC的入门程序,在入门程序中,我们对于需要用到的类和注解做了一一些简单的介绍,但是对于整体我们说的有一些过于复杂,所以在这一章节中,我们对于创建和运行SpringMVC做一个简单的过程梳理,方便我们可以快速的记忆如何创建和运行一个SpringMVC项目,并且将我们的pom文件,web.xml文件以及我们用到的Bean管理XML配置文件做一个整体的展示。

简单流程

  1. 首先,我们需要创建一个maven项目,以便我们可以在pom.xml中引入我们的依赖,以及Tomcat的插件。
  2. 第二步,我们需要在模块中添加web模板,并且我们需要配置一下web资源的路径。
  3. 第三步,我们需要创建一个Bean管理配置文件,这个文件我们一般叫做spring-mvc.xml配置文件,这个文件的作用是将SpringMVC和IoC结合起来,让我们的SpringMVC的框架可以识别到我们自己创建的控制器类。在这个文件中,我们需要要配置页面解析器和注解扫描器
  4. 然后,我们需要修改web.xml配置文件,在这个文件中,我们需要配置前端控制器,我们所有的请求就是通过前端控制器,转发到我们的控制器类的方法中进行处理的,
  5. 配置好了配置文件之后,我们需要创建控制器类,这个类就是用来处理我们的请求的,在类名上面,我么需要用一个注解去标识这是一个控制器类,而我们之前配置的注解扫描器会扫描这个注解,并将其注册到IoC容器中,之后我们的前端控制器就可以将请求转发到我们的控制器类的方法中。
  6. 在控制器类中编写方法,这个方法就是用来处理请求的方法,在这个方法的上面通常会配置一个注解,这个注解的值是一个路径,用来表示,这个方法处理来自于这个路径的请求,然后方法会返回一个字符串,这个字符串就是要响应显示的页面的文件名,如果没有返回值,也就是返回值为空的情况下,也会返回一个页面,只不过页面的文件名就是和控制器方法的方法名保持一致。返回的文件名,搭配上刚才我们配置的页面解析器,拼接上前缀和后缀就会组成一个完整的路径,这样就可以识别页面,并在浏览器中显示出来。

代码实现:

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>SpringMVC</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--    设置打包方式-->
    <packaging>war</packaging>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!--        mybatis的核心依赖坐标-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.13</version>
        </dependency>
        <!--        mysql连接类的依赖坐标-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.32</version>
        </dependency>
        <!--        junit单元测试的依赖坐标-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <!--        servlet的依赖坐标-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <!--        jsp的依赖坐标-->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
        <!--        spring的核心依赖坐标-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.21.RELEASE</version>
        </dependency>
        <!--        spring的Jdbc包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.21.RELEASE</version>
        </dependency>
        <!--        spring的用于事务管理的依赖坐标 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.21.RELEASE</version>
        </dependency>
        <!--        用于解析切入点表达式-->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.7.2</version>
        </dependency>
        <!--        添加SpringMVC的web包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.21.RELEASE</version>
        </dependency>
    </dependencies>
    <!--    -->
    <build>
        <!--        plugins的作用是添加maven的插件-->
        <!--        我们添加了两个插件,分别是用来编译代码的maven-compiler-plugin-->
        <!--        以及我们的的tomcat插件-->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <!--                这里面包含了我们tomcat的一些基本设置,比如端口号和编码格式以及我们的虚拟路径的一些设置-->
                <configuration>
                    <!--                    设置tomcat的编码格式-->
                    <uriEncoding>utf-8</uriEncoding>
                    <!--                    设置tomcat的端口号-->
                    <port>80</port>
                    <!--                    设置项目的虚拟路径,这里的根路径表示不设置虚拟路径,直接使用根目录-->
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Bean管理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
        https://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">
<!--    配置页面解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--        配置页面的前缀,表示定位页面的包-->
        <property name="prefix" value="SpringMVC/pages/"/>
<!--        配置文件的后缀,表示定位页面的类型-->
        <property name="suffix" value=".jsp"/>
    </bean>
<!--    测试复杂数据绑定中的将数据绑定到Java类中的绑定类-->
    <bean id="user" class="SpringMVC.DataBindingAndResponse.user"/>

<!--    添加有关数据绑定的controller类-->
    <bean id="dataBinger" class="SpringMVC.DataBindingAndResponse.textDataBinger"/>

    <!--        配置包扫描器,因为我们的SpringMVC的配置主要是基于注解,所以我需要配置一个注解扫描 -->
    <context:component-scan base-package="SpringMVC.GettingStartedProgram"/>

<!--    添加格式转换工厂类-->
    <bean class="org.springframework.context.support.ConversionServiceFactoryBean" id="conversionServiceFactoryBean">
        <property name="converters">
            <array>
<!--                此处配置我们自己编写的格式转换类-->
                <bean class="SpringMVC.DataBindingAndResponse.DataConverter"/>
            </array>
        </property>
    </bean>
<!--    然后装载我们的格式工厂-->
    <mvc:annotation-driven conversion-service="conversionServiceFactoryBean"/>
</beans>

 控制器类:

package SpringMVC.GettingStartedProgram;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;

//这个注解就相当于是继承servlet接口,表示这个类是一个用于处理用户请求的servlet类
@Controller
public class UserServer {
    //    这个注解就相当于是servlet注解,后面的路径就是当我访问这个路径时,我的请求就会被转发到这个方法中进行处理
    @RequestMapping("/sayHello")
    public String sayHello(){
//        返回值就是响应的页面,本来因该是全路径,但是因为之前我们配置了页面解析器,所以我们只需要写文件名就可以了
//        如果不写这个返回值,默认会去找跟方法名同名的jsp页面
        return "index";
    }
}

运行结果:

只要我们配置正确,在浏览器地址栏输入我们在控制器类的控制器方法中的注解中的路径,我们就可以看到相应的页面 

注意点:

其实整个的流程非常的简单,只需要记住,首先添加web模块,创建IoC的Bean管理XML配置文件,添加前端控制器,创建控制器类并编写控制器方法,配置路径映射即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值