欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【java框架】SpringMVC(1)--SpringMVC入门

程序员文章站 2022-11-22 11:45:52
1. SpringMVC框架认识 Spring MVC是一个基于MVC模式的Web框架,SpringMVC作为Spring中的一个模块,它与Spring能够无缝集成,主要用于解决企业Web开发中常见的问题:如参数接收、文件上传、表单验证、国际化等等。 2. SpringMVC HelloWorld模 ......

1.   springmvc框架认识

spring mvc是一个基于mvc模式的web框架,springmvc作为spring中的一个模块,它与spring能够无缝集成,主要用于解决企业web开发中常见的问题:如参数接收、文件上传、表单验证、国际化等等。

2.   springmvc helloworld模式使用

2.1.导入springspringmvc的依赖jar

    配置spring的环境

准备spring的环境——springmvcspring为核心,而spring最核心的模块是di/ioc容器,也就是springmvc的核心类和控制器要交给spring管理。所以使用springmvc必须先保证spring容器初始化,也就是让项目拥有spring的运行环境。

基于spring的初始化环境需要导入spring的核心包与beans包(使用spring-framework-4.1.2.release),jar包目录位置在\spring-framework-4.1.2.release\libs文件中:

需要导入:

com.springsource.org.apache.commons.logging-1.1.1.jar

spring-beans-4.1.2.release.jar

spring-context-4.1.2.release.jar

spring-core-4.1.2.release.jar

spring-expression-4.1.2.release.jar

【java框架】SpringMVC(1)--SpringMVC入门

 

配置applicationcontext.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">
    <bean id="mydate" class="java.util.date">
        <!-- collaborators and configuration for this bean go here -->
    </bean>
</beans>

创建junit4测试类查看是否获取到配置的bean对象:

import org.springframework.context.applicationcontext;
import org.springframework.context.support.classpathxmlapplicationcontext;

public class springenvtest {

    @org.junit.test
    public void getbeantest(){
        //读取资源文件applicationcontext.xml
        //拿到applicationcontext核心对象
        applicationcontext applicationcontext = new classpathxmlapplicationcontext("applicationcontext.xml");
        system.out.println("-------------实例化分割线--------------------");
        //获取bean同样具有三种方式:这里不再一一列出
        object mydate = applicationcontext.getbean("mydate");
        system.out.println(mydate);
    }
}

②配置springmvc的环境

springmvc作为spring中的一个模块存在,无需单独下载,springlib文件中就包含了springmvcjar包。

jar包目录位置也是在\spring-framework-4.1.2.release\libs中,需要导入的jar包:

spring-web-4.1.2.release.jar

spring-webmvc-4.1.2.release.jar

【java框架】SpringMVC(1)--SpringMVC入门

 

2.2.在web.xml中配置核心控制器dispatcherservlet

在springmvc框架中使用的是dispatcherservlet作为核心控制器,dispatcherservlet核心控制器会拦截匹配的请求,把拦截下来的请求,依据相应的规则分发到目标controller来处理。

所以,我们要在web.xml中配置springmvc的核心控制器dispatcherservlet,具体配置如下:

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的核心控制器:拦截所有的请求
        启动时会默认到/web-inf/dispatcherservlet-servlet.xml路径下去加载
        [servlet-name]-servlet.xml文件;
        在启动时加载文件,需要提前配置load-on-startup(避免在页面访问时才报错)-->
    <servlet>
        <servlet-name>dispatcherservlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.dispatcherservlet</servlet-class>
        <!--加载配置文件:使用放在resources目录下,重新定义加载的路径-->
        <init-param>
            <param-name>contextconfiglocation</param-name>
            <param-value>classpath:applicationcontext-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherservlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

2.2.配置springmvc的配置文件

springmvc的配置文件和spring的配置差不多,在resources目录中新建一个applicationcontext-mvc.xml文件即可,需要配置映射controller类的映射路径及class:

<?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">
    <!--springmvc的配置文件:把控制器类交给spring来管理-->
    <!--name:访问的映射路径-->
    <bean name="/hello" class="cn.yif.controller.hellocontroller"></bean>
</beans>

2.3.准备controller控制器并配置

这里需要创建一个hellocontroller类来实现controller接口,实现handlerequest()方法:

import javax.servlet.http.httpservletrequest;
import javax.servlet.http.httpservletresponse;

public class hellocontroller implements controller {
    /***
     * 控制层业务处理:①参数的接收;②调用service层的业务逻辑;③返回一个视图
     * @param equest
     * @param response
     * @return
     * @throws exception
     */
    @override
    public modelandview handlerequest(httpservletrequest equest, httpservletresponse response) throws exception {
        system.out.println("进入springmvc controller视图模型控制器......");
        string view = "/web-inf/views/hello.jsp"; //视图
        string modelname = "msg"; //模型名字
        object modelobject = "helloobj"; //模型对象
        modelandview modelandview = new modelandview(view, modelname, modelobject);
        return modelandview;
    }
}

2.4.根据applicationcontext-mvc.xml访问映射路径

运行tomcat并启动web项目,访问配置的url路径,即可访问到对应的/hello映射的/web-inf/views/hello.jsp文件。

【java框架】SpringMVC(1)--SpringMVC入门

 

3.   springmvc入门demo的执行流程分析

从上面的使用配置过程我们可以分析得出springmvc的执行流程:

首先,我们通过浏览器客户端发起请求(localhost:8080/hello),这个请求会被web.xml中配置的核心控制器dispatcherservlet所拦截,拦截到的请求地址会交由配置在classpath下的applicationcontext-mvc.xml springmvc的配置文件中去找到对应的bean的请求url,并且找到对应的bean class,通过bean class配置再找到对应的controller,通过controller中的handlerequest()方法返回的对应的modelandview视图,返回对应的hello.jsp页面,通过页面hello.jsp去呈现页面上的内容。

4.   静态资源文件访问放行

通过上面的配置,我们如果在webapp路径下存在静态资源(.html与css/js)文件时,我们通过浏览器直接去访问是访问不了的,会出现404 not find问题。

【java框架】SpringMVC(1)--SpringMVC入门

 

原因就在于我们在web.xml中默认配置了拦截所有的请求,我们需要在springmvc的配置文件applicationcontext-mvc.xml中去开启对静态资源的访问:

applicationcontext-mvc.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: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/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--开启静态资源的访问-->
    <mvc:default-servlet-handler />
    <!--springmvc的配置文件:把控制器类交给spring来管理-->
    <!--name:访问的映射路径-->
    <bean name="/hello" class="cn.yif.controller.hellocontroller"></bean>
</beans>

配置之后,通过浏览器页面就能访问到webapp路径下的静态资源文件了。

【java框架】SpringMVC(1)--SpringMVC入门