zoukankan      html  css  js  c++  java
  • SpringMVC框架——springmvc注解及应用

    SpringMVC框架也定义了自己的一套注解,并利用这些注解简化xml配置,进行开发。

    SpringMVC框架应用在控制层及视图层,Spring启用servlet技术作为总控制器,用于处理请求并找到具体指定的控制器进行处理。

    相比于struts2,SpringMVC框架具有以下优势:

    1.利用注解技术极大简化xml文件配置。

    2.采用Model作为数据传递容器,比ongal更加方便。

    3.SpringMVC和Struts2的比较的优点

    SpringMVC的核心:

    (1)经典的MVC框架,其特征是:使用Servlet作为总控制器

            总控制器:DispatcherServlet.

            具体的作用:请求分发;它可以处理多个请求,并且通过注解指定具体的控制器来处理相应的请求!

    (2)请求路径"/"的含义:

       ①基于当前web应用的任何请求

       ②默认Servlet(处理静态资源)

            注意:

            web服务器中,原有的默认ServletDefaultServlet.

       ①默认Servlet的功能是:负责向浏览器发送静态的资源,比如html文件;

       ②默认Servlet的请求路径规定为:"/".

    (3)具体控制器的方案:

       ①pojo

       ②基于注解技术:

    @Controller

    利用注解的方式,声明某各类为action

    @RequestMapping

    利用注解的方式,定义某个action的请求路径

    @RequestParam

    利用注解的方式获取参数

    (4)SpringMVC框架中的数据模型:Model对象(SpringMVC的数据结构)

       ①Model对象是一个map集合,用来存储Controller的数据,jsp使用;

       ②凡是存入Model中的对象,也会存入reqeust域中.

    (5)SpringMVC框架中的视图组件

       ①支持丰富的视图组件技术

       ②需要在xml文件中注册视图解析器

              支持jsp视图技术的解析器是:InternalResourceViewResolver

    Demo

    下面通过一个简单的例子来说明:

     获取用户输入数据,进行判断并反馈。

    控制层:

     1 package controller;
     2 
     3 import org.springframework.stereotype.Controller;
     4 import org.springframework.ui.Model;
     5 import org.springframework.web.bind.annotation.RequestMapping;
     6 import org.springframework.web.bind.annotation.RequestMethod;
     7 import org.springframework.web.bind.annotation.RequestParam;
     8 
     9 @Controller//该注解声明该类为控制器
    10 public class QuestionController {
    11     
    12     @RequestMapping(value="/questionForm")//该注解声明该action的请求路径
    13     public String showFrom(){
    14         return "QuestionForm";
    15     }
    16     
    17     @RequestMapping(value="/handleQuestion", method = RequestMethod.POST)//该注解声明该action的请求路径,并声明提交方法为post
    18     public String handleQuestion(@RequestParam("city") String anwser, Model model){//利用注解获取参数
    19         if("北京".equals(anwser))
    20             model.addAttribute("anwser", "正确");
    21         else
    22             model.addAttribute("anwser", "错误");
    23         return "HandleQuestion";
    24     }
    25 }

    在控制器的方法中,return后面的参数对应jsp页面的名称,最终会通过框架找到对应的页面。

    控制器将数据封装到Model对象中,该对象会通过框架封装到request域中,可以直接用el表达式获取。

    视图层:

     1 视图1:
     2 <body>
     3     <h2>请回答下面问题</h2>
     4     <form action="handleQuestion" method="post">
     5         中国的首都是:<input type="text" name="city"/>
     6         <input type="submit" value="提交"/>
     7     </form>
     8   </body>
     9 
    10 视图2:
    11 <body>
    12     <h2>反馈结果:</h2>
    13         ${anwser}
    14   </body>

    控制器的配置有几个要点:

    1.注解扫描

    告诉框架那些类需要扫描,并按照注解执行相应操作。

    2.注册驱动请求

    3.注册静态资源请求处理和视图解析器

    SpringMVC框架对项目资源的请求分静态请求(请求静态资源)和动态请求(jsp),静态请求用默认servlet处理。视图解析器专门处理jsp请求,这就时控制器return的参数找到对应的jsp的关键。

    控制器配置:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans xmlns="http://www.springframework.org/schema/beans"
     3        xmlns:context="http://www.springframework.org/schema/context"
     4        xmlns:mvc="http://www.springframework.org/schema/mvc"
     5        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     6        xsi:schemaLocation="
     7        http://www.springframework.org/schema/beans
     8        http://www.springframework.org/schema/beans/spring-beans.xsd
     9        http://www.springframework.org/schema/context
    10        http://www.springframework.org/schema/context/spring-context.xsd
    11        http://www.springframework.org/schema/mvc
    12        http://www.springframework.org/schema/mvc/spring-mvc.xsd
    13        ">
    14        <!-- 指定扫描的基准路径 -->
    15        <context:component-scan base-package="controller"/>
    16        
    17        <!-- 注解驱动的请求处理 -->
    18        <mvc:annotation-driven/>
    19        <!-- 指明静态资源的请求处理是DefaultServlet -->
    20        <mvc:resources location="/css/" mapping="/css/**"/>
    21        <mvc:resources location="/js/" mapping="/js/**"/>
    22        <mvc:resources location="/image/" mapping="/image/**"/>
    23        <mvc:resources location="/" mapping="/*.html" />
    24        
    25        <!-- 注册视图解析器,指明视图资源是jsp -->
    26        <bean id="viewResolver"
    27              class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    28               <property name="prefix" value="/WEB-INF/jsp/"/>
    29               <property name="suffix" value=".jsp" />
    30        </bean>
    31 
    32 </beans>

    web配置:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app version="3.0" 
     3     xmlns="http://java.sun.com/xml/ns/javaee" 
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     6     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
     7     <!-- 注册springmvc的总控制器DispatcherServlet -->
     8     <servlet>
     9         <servlet-name>springmvc</servlet-name>
    10         <servlet-class>
    11             org.springframework.web.servlet.DispatcherServlet
    12         </servlet-class>
    13         <init-param>
    14             <param-name>contextConfigLocation</param-name>
    15             <param-value>/WEB-INF/config/springmvc-config.xml</param-value>
    16         </init-param>
    17         <!-- web服务器启动时创建DispatherServlet对象 -->
    18         <load-on-startup>1</load-on-startup>
    19     </servlet>
    20     
    21     <servlet-mapping>
    22         <servlet-name>springmvc</servlet-name>
    23         <!-- 表明当前Servlet是默认Servlet -->
    24         <url-pattern>/</url-pattern>
    25     </servlet-mapping>
    26   
    27 </web-app>

    是不是极大地简化了开发流程及配置?!

  • 相关阅读:
    洛谷 P2384 最短路
    洛谷 P2910 [USACO08OPEN]寻宝之路Clear And Present Danger
    POJ 3264 Balanced Lineup
    洛谷 P1892 团伙
    洛谷 P1724 东风早谷苗
    P1129 [ZJOI2007]矩阵游戏
    P1894 [USACO4.2]完美的牛栏The Perfect Stall
    Poj 3041 Asteroids
    P3377 【模板】左偏树(可并堆)
    P1613 跑路
  • 原文地址:https://www.cnblogs.com/cxy2016/p/8524942.html
Copyright © 2011-2022 走看看