SpringMVC入门学习

本篇博客知识点:
1.介绍SpringMVC的核心类
2.SpringMVC对前端请求的处理过程
3.实际项目核心部分代码演示

SpringMVC几个核心类:

控制器核心类:相当于前面学的struts.xml

org.springframework.web.servlet.DispatcherServlet  - 配置web.xml

加载配置文件核心类:

org.springframework.web.context.ContextLoaderListener – spring的配置文件

处理url影射核心类:

org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping-根据bean的名称请求一个bean. spring的配置文件 - /abc

处理视图资源核心类:

org.springframework.web.servlet.view.ResourceBundleViewResolver
return hello – 决定返回的字符串由哪一个页面来显示。

处理注解URL核心类:

org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - 用于识别@RequestMapping注解。
使用了上面的类,Controller还是需要配置的。 
<context:component-scan package=“cn.hncu”/>用于替代上面的类。

方法动态调用核心类

org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver

SpringMVC对前端请求的处理过程
这里写图片描述

实际项目核心部分代码演示
1.先准备好所有需要的包~
这里写图片描述

2.核心的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name> 
  <!-- 添加Spring的容器和配置文件位置 -->
   <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:beans.xml
        </param-value>
   </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

  <servlet>
    <servlet-name>hncu</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 自定义配置"配置文件"的位置与名称,若没有配置该初始化参数,
               则是默认文件名:servletName+ "-servlet.xml"  -->
     <init-param>
        <param-name>namespace</param-name>
        <param-value>hncu-servlet</param-value>
     </init-param>   
     <load-on-startup>1</load-on-startup>     
  </servlet>
  <servlet-mapping>
    <servlet-name>hncu</servlet-name>
    <url-pattern>/sp/*</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

hncu-servlet.xml

  <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
      <!-- 重定向向不需要绑定视图 -->
      <bean name="/hello" class="cn.hncu.one.HelloWorldController" ></bean>

      <!-- 转发则需要"绑定视图解析的狠心类 " -->
      <bean name="/hello2" class="cn.hncu.two.HelloWorldController2"></bean>

      <bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
            <property name="basenames">
              <list>
                 <!-- 默认查询classpath: hncu.properties  -->
                 <value>hncu</value>
              </list>
            </property>
            <!-- 配置默认父View,当某一个结果资源在hncu.properties中没有指定View时,就用默认父View作为它的View -->
            <property name="defaultParentView" value="hncu"></property>
      </bean>

beans.xml

 <!-- 把Spring容器和SpringMVC容器加到一起,多方法挂了所以加了这个 -->
        <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
        <!-- 在SpringMVC中启用Spring框架的核心类(ContextLoaderListerner) -->
        <bean name="/multi" class="cn.hncu.three.MultiController">
        <!--  内部胚子一个帮助方法名字解析的核心类 -->
            <property name="methodNameResolver">
                <!-- 方法名字解析的核心类  -->
                <bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
                        <!--  未给方法名字就设定默认方法名字 -->
                        <property name="defaultMethodName" value="execute"></property>
                        <!--  参数名:与前端method相对应 -->
                        <property name="paramName" value="method"></property>
                </bean>
            </property>
        </bean>        

        <!-- 基于注解的访问方式~~~ -->
        <!-- 把用注解方式访问的bean放进来 ,另种方式-->
        <!--方式一:自动扫描 下面这个类师核心扫描bean 帮你加到容器中 -->
        <context:component-scan base-package="cn.hncu.annno"/>
        <!-- 方式二:手动添加 -->

        <!--  
        <bean class="cn.hncu.annno.AnnoOneController"></bean>
        <bean class="cn.hncu.annno.AnnoTwoController"></bean>
        -->
        <!--  用于识别注解bean 的核心类 -->
        <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>

</beans>

带注解方法写的实例

//下面这一行是表示 请求访问要加的前缀
@RequestMapping(value="/an")
@Controller
public class AnnoTwoController {

    @RequestMapping(value="/anno_two")
    public String aa(){
        System.out.println("注解anno_two");
        return "anno_two";
    }
}

对应的前端请求

 <a href="sp/an/anno_two">anno_one</a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值