SpringMVC

是Spring框架中的一个模块,又叫spring web mvc框架的一部分,是在 Spring3.0 后发布的。 //界面层说明他是使用spring核心技术做web开发,springmvc内部使用mvc架构模式SpringMVC也是一个容器,管理对象的,使用IoC核心技术-------管理界面层中的控制器对象 //没有springmvc之前,用的是servlet去管理 // 所以springmvc容器创建一种叫控制器的对象,代替servlet行使控...
摘要由CSDN通过智能技术生成

是Spring框架中的一个模块,又叫spring web mvc框架的一部分,是在 Spring3.0 后发布的。             //界面层
说明他是使用spring核心技术做web开发,springmvc内部使用mvc架构模式

SpringMVC也是一个容器,管理对象的,使用IoC核心技术-------管理界面层中的控制器对象(底层是servlet对象)       
        // 所以springmvc容器创建一种叫控制器的对象,该对象代替servlet行使控制器的角色
       
springmvc底层是servlet,以servlet为核心,接受请求、处理请求

用户请求--->springmvc---->spring----->mybatis---->数据库
                   (mvc)       (service层)    (dao层)

SpringMVC中的核心Servlet-----DispatcherServlet:                        继承自:HttpServlet
                是框架中的一个servlet对象,负责接受请求,响应处理结果。也叫前端控制器、中央调度器   

注解的 SpringMVC 程序:                                                 //springmvc主要使用注解的方式,创建控制器对象,处理请求
        1)Maven新建web项目
        2)加入spring-webmvc依赖(springmvc框架依赖)、servlet依赖、jackson依赖(框架处理json默认使用jackson)
        3)在web.xml中声明springmvc核心对象DispatcherServlet                       // org.springframework.web servlet包下
                       
1.一个servlet对象,继承自:HttpServlet,也叫前端控制器、中央调度器    Front controller                            
                        2.作用:a.在servlet的init()方法中创建springmvc中的容器对象----接受springmvc配置文件的Java对象,即处理器对象
                                      b.作为servlet,接受请求

          web.xml:部署描述符文件,给Tomcat服务器用的,在服务器启动时读取该文件,根据文件声明创建各种对象

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
  version="5.0"
  metadata-complete="true">

	<!--声明servlet核心对象  中央调度器              直接访问该地址,未找到文件 /WEB-INF/<servlet-name>-servlet.xml
    错误原因:在servlet的init方法中,创建容器对象webApplicationContext,创建时需要传入配置文件,文件默认路径:/WEB-INF/<servlet-name>-servlet.xml
    所以需要在WEB-INF目录下创建<servlet-name>名-servlet.xml配置文件-->
	<servlet>
		<servlet-name>名</servlet-name>
		<servlet-class>org.springframework.web servlet.DispatcherServlet</servlet-class>
        <!--可以自定义配置文件的路径-->
        <init-param> 
           <param-name>contextConfigLocation</param-name> 
           <param-value>classpath:xxxx.xml类路径下的xxxspringmvc配置文件</param-value>     
        </init-param>
        <!--启动时会创建这个Servlet实例,即是否在 Web 服务器启动时调用执行该Servlet的init()方法,而不是在真正访问时才创建。-->
        <load-on-startup>1</load-on-startup>  
	</servlet>
	<servlet-mapping>
		<servlet-name>名</servlet-name>
		<url-pattern>*.xxx</url-pattern>     表示以xxx结尾的动态资源
        <url-pattern>/</url-pattern>        该中央调度器变成default身份,能处理静态资源和为映射的请求          
       
	</servlet-mapping>

</web-app>

                 若设置了/,没有设置静态资源请求的控制器对象,则浏览器会出现404不能访问静态资源,因为没有对应的控制器对象去使用。 所以需要处理静态资源的访问工作
                 方式一:在springmvc配置文件中添加 <mvc:default-servlet-handler/>,那么框架会在运行时会加入DefaultServletHttpRequestHandler 处理器对象去处理静态资源访问
                                DefaultServletHttpRequestHandler对象把接受的静态资源地址转发给Tomcat的default-----------------------------缺点:依赖于Tomcat服务的default
                                注意:该标签和@RequestMapping有冲突,所以要在该标签之前加上<mvc:annotation-driven/>
                 方式二:在springmvc配置文件中添加 <mvc:resources/>,那么框架会创建ResourceHttpRequestHandler控制器对象,使用该对象来处理静态资源的访问
                                推荐使用:不依赖服务器

                                
        4)创建一个jsp发起请求
        5)创建一个普通的类,作为控制器使用(代替之前的servlet)                        //创建处理器
                1.在类上面加入@Controller注解 (创建控制器对象的)               //表示创建出此类对象,放入到springmvc容器当中
                2.在类中定义方法,方法上加上@RequestMapping注解(请求映射)------控制器方法              //该方法处理处理请求,相当于servlet的doGet、doPost方法
                        a.形参表示请求中的参数
                        b.返回值表示本次请求的处理结果 (数据和视图)
        6)创建作为结果的JSP页面:就是jsp页面,放入WEB-INF文件下,建个目录存放。这样是受保护的,浏览器就访问不了了,在程序中可以访问
        7)springMVC配置文件(spring一样)
                1.声明组件扫描器,指定@Controller注解所在的包
                2.声明视图解析对象 :帮助处理视图,即转发请求视图页面时若只是名字不同,可以用一定格式代替来通用所有的视图页面
                                                     配置了视图解析器,使用文件名作为视图名使用----->视图逻辑名

        springmvc框架配置文件:声明框架创建的项目中的各种对象,主要是创建控制器对象

<?xml version="1.0" encoding="UTF-8"?>
<!--suppress ALL -->
<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">

    <!--组件扫描器:扫描一个包-->
    <context:component-scan base-package="注解所在的包名"/>

    

    <!--声明视图解析器对象-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">            
        <!--前缀:指定视图文件的路径-->
        <property name="prefix" value="/WEB-INF/目录"/>
        <!--后缀:指定视图文件的扩展们-->
        <property name="suffix" value=".jsp"/>  
     </bean>  

    <!--声明注解驱动:创建HttpMessageConverter接口的7个实现类对象
                     处理<mvc:default-servlet-handler/>与@RequestMapping的冲突--> 
    <mvc:annotation-driven/>

    <!--处理静态资源的访问工作:方式一-->
    <mvc:default-servlet-handler/>
    <!--处理静态资源的访问工作:方式二              推荐-->
    <!--mapping:访问静态资源的url地址,可以使用通配符**            **表示任意目录和目录的资源名称
        location:静态资源在项目中的目录-->
    <mvc:resources mapping="/xxx/**" location="/xxx/"/>      开头的/表示web项目的根目录
    可以配置多个<mvc:resources />
    <!--一句话设置静态资源:在项目下建立static目录,在该目录下建立html、images等目录,资源放在这些目录-->
    <mvc:resources mapping="/static/**" location="/static/"/>
</beans>


        8)使用逻辑视图名称:                        //即在处理器的方法中


配置文件加载的顺序:
        1)Tomcat启动:读取web.xml,根据文件说明创建对象-------DispatcherServlet对象,执行init(),在init方法中又执行springMVC容器对象的创建
        2)springmvc框架:创建容器对象需要读取 springmvc配置文件------使用组件扫描时遍历该包下的所有类,找到@Controller、@RequestMapping就能创建控制器对象
                                         有了控制器对象,就能执行里面的方法
        3)用户发起请求----DispatcherServlet(里面有容器对象,容器对象里面有里面有控制器对象)----调用对应的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值