码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC框架——springmvc注解及应用

时间:2018-03-07 21:50:55      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:input   framework   表达式   base   class   beans   对象   struts2   coding   

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>

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

 

SpringMVC框架——springmvc注解及应用

标签:input   framework   表达式   base   class   beans   对象   struts2   coding   

原文地址:https://www.cnblogs.com/cxy2016/p/8524942.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!