SpringMVC之入门案例
2014-09-11 09:49
393 查看
pring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如
JavaServer Pages(JSP)技术、Velocity、Tiles、iText
和POI。Spring
MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
SpringMVC的各层的简单说明:
模型(Model )封装了应用程序的数据和一般他们会组成的POJO。
视图(View)是负责呈现模型数据和一般它生成的HTML输出,客户端的浏览器能够解释。
控制器(Controller )负责处理用户的请求,并建立适当的模型,并把它传递给视图渲染。
DispatcherServlet -- 前置控制器
Spring的web模型 - 视图 - 控制器(MVC)框架是围绕着处理所有的HTTP请求和响应的DispatcherServlet的设计。 Spring的Web MVC框架的DispatcherServlet的请求处理流程说明如下图:
下面是对应于传入的HTTP请求到DispatcherServlet的事件序列:
接收HTTP请求后,DispatcherServlet 咨询 HandlerMapping 来调用相应的控制器。
该控制器接受请求并调用基于使用GET或POST方法相应的服务方法。服务方法将基于定义的业务逻辑设置模型数据,并返回视图名到DispatcherServlet。
DispatcherServlet将需要帮助的ViewResolver从拾取到该请求所定义的视图。
一旦视图被敲定,DispatcherServlet会传递模型数据是在浏览器上最终呈现的视图。
类和接口的简要说明
HandlerMapping接口 -- 处理请求的映射
HandlerMapping接口的实现类:
SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller
DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上
ViewResolver接口的实现类
UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
InternalResourceViewResolver类,比上面的类,加入了JSTL的支持
下面给出一个简单的案例:
首先配置web.xml:
web.xml 文件将被保存在您的Web应用程序的 WebContent/ WEB-INF 目录。 在 DispatcherServlet 的 HelloWeb 初始化,该框架将尝试从一个名为 [servlet-name]-servlet.xml位于应用程序 WebContent/WEB-INF 目录文件加载应用程序上下文。在这种情况下我们的文件将是HelloWeb-servlet.xml。
接下来,<servlet-mapping>标记指示URL会被DispatcherServlet处理。这里全部用。jsp结束HTTP请求将由DispatcherServlet的HelloWeb处理。
如果不想用默认文件名为[servlet-name]-servlet.xml和默认位置的WebContent/WEB-INF,可以通过添加servlet 的 listenerContextLoaderListener 在 web.xml 文件中定义该文件的名称和位置如下:
放置在 Web应用程序的WebContent/WEB-INF目录:
现在我们来配置hello-servlet.xml(放在/WEB-INF/下):
面是有关 hello-servlet.xml 文件的要点:
[servlet-name]-servlet.xml 文件将被用于创建定义的Bean,会覆盖在全局范围里名字相同的Bean的定义。
视图解释类可以把他看做简单的看做是struts2中的result标签,prefix指定的是前缀,suffix指定的是后缀,完整的组合是:
使用InternalResourceViewResolver将有定义来解析视图名的规则。按照上述定义的规则,命名为你好的逻辑视图被委托给一个视图实现位于/WEB-INF/jsp/hello.jsp。
编写Controller控制器,我们先不适用注解,使用类似于Struts2中的ActionSupport的继承机制,在这里是继承AbstractController,handleRequestInternal可以看做struts2中的execute方法。
定义基于注解的Controller
DispatcherServlet
委托请求发送到控制器,以执行特定于它的功能。注解@Controller表示一个特定的类提供一个控制器的角色。注解@RequestMapping 用于将URL映射到任何一个类或者一个特定的处理方法。
首先在hello-servlet.xml添加注解扫描器:
基于注解的控制器:
JavaServer Pages(JSP)技术、Velocity、Tiles、iText
和POI。Spring
MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
SpringMVC的各层的简单说明:
模型(Model )封装了应用程序的数据和一般他们会组成的POJO。
视图(View)是负责呈现模型数据和一般它生成的HTML输出,客户端的浏览器能够解释。
控制器(Controller )负责处理用户的请求,并建立适当的模型,并把它传递给视图渲染。
DispatcherServlet -- 前置控制器
Spring的web模型 - 视图 - 控制器(MVC)框架是围绕着处理所有的HTTP请求和响应的DispatcherServlet的设计。 Spring的Web MVC框架的DispatcherServlet的请求处理流程说明如下图:
下面是对应于传入的HTTP请求到DispatcherServlet的事件序列:
接收HTTP请求后,DispatcherServlet 咨询 HandlerMapping 来调用相应的控制器。
该控制器接受请求并调用基于使用GET或POST方法相应的服务方法。服务方法将基于定义的业务逻辑设置模型数据,并返回视图名到DispatcherServlet。
DispatcherServlet将需要帮助的ViewResolver从拾取到该请求所定义的视图。
一旦视图被敲定,DispatcherServlet会传递模型数据是在浏览器上最终呈现的视图。
类和接口的简要说明
HandlerMapping接口 -- 处理请求的映射
HandlerMapping接口的实现类:
SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller
DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上
ViewResolver接口的实现类
UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
InternalResourceViewResolver类,比上面的类,加入了JSTL的支持
下面给出一个简单的案例:
首先配置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> <servlet> <servlet-name>hello</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
web.xml 文件将被保存在您的Web应用程序的 WebContent/ WEB-INF 目录。 在 DispatcherServlet 的 HelloWeb 初始化,该框架将尝试从一个名为 [servlet-name]-servlet.xml位于应用程序 WebContent/WEB-INF 目录文件加载应用程序上下文。在这种情况下我们的文件将是HelloWeb-servlet.xml。
接下来,<servlet-mapping>标记指示URL会被DispatcherServlet处理。这里全部用。jsp结束HTTP请求将由DispatcherServlet的HelloWeb处理。
如果不想用默认文件名为[servlet-name]-servlet.xml和默认位置的WebContent/WEB-INF,可以通过添加servlet 的 listenerContextLoaderListener 在 web.xml 文件中定义该文件的名称和位置如下:
放置在 Web应用程序的WebContent/WEB-INF目录:
<web-app...> <!-------- DispatcherServlet definition goes here-----> .... <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:hello-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app>
现在我们来配置hello-servlet.xml(放在/WEB-INF/下):
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <bean name="/welcome.html" class="com.springmvc.controller.WelComeController"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp" /> </bean> </beans>
面是有关 hello-servlet.xml 文件的要点:
[servlet-name]-servlet.xml 文件将被用于创建定义的Bean,会覆盖在全局范围里名字相同的Bean的定义。
视图解释类可以把他看做简单的看做是struts2中的result标签,prefix指定的是前缀,suffix指定的是后缀,完整的组合是:
prefix+<method返回值>+suffix
使用InternalResourceViewResolver将有定义来解析视图名的规则。按照上述定义的规则,命名为你好的逻辑视图被委托给一个视图实现位于/WEB-INF/jsp/hello.jsp。
编写Controller控制器,我们先不适用注解,使用类似于Struts2中的ActionSupport的继承机制,在这里是继承AbstractController,handleRequestInternal可以看做struts2中的execute方法。
package com.springmvc.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; public class WelComeController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("进入handleRequestInternal-----"); ModelAndView mv=new ModelAndView("welcome"); return mv; } }这是我们在浏览器中输入http://127.0.0.1:8080/SpringMVC/welcome.html,就会显示结果welcome,jsp里面的内容。
定义基于注解的Controller
DispatcherServlet
委托请求发送到控制器,以执行特定于它的功能。注解@Controller表示一个特定的类提供一个控制器的角色。注解@RequestMapping 用于将URL映射到任何一个类或者一个特定的处理方法。
首先在hello-servlet.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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <bean name="/welcome.html" class="com.springmvc.controller.WelComeController"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp" />
</bean>
<!-- 添加注解扫描器 -->
<context:component-scan base-package="com.springmvc.controller"></context:component-scan>
</beans>
基于注解的控制器:
package com.springmvc.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping(value={"/hello","/"}) public String helloWord(){ System.out.println("进入helloWord-----"); return "hello"; } }在WEB-INF/jsp下建立一个hello.jsp,接着在浏览器中输入http://127.0.0.1:8080/SpringMVC/hello可以看到结果。
相关文章推荐
- SpringMVC的第一个入门案例
- SpringMVC入门案例(3)
- SpringMVC入门案例
- SpringMvc之入门案例-yellowcong
- 【SpringMVC】入门案例
- springMVC学习笔记之入门案例
- Dubbox --- springmvc结合入门案例
- springmvc入门案例
- SpringMVC学习(1):SpringMVC框架结构详解和入门案例详解
- SpringMVC(5.0)入门案例
- springMvc入门案例
- 10SpringMvc_springmvc快速入门小案例(注解版本)
- SpringMVC框架的学习及入门案例编写
- SpringMVC的第一个入门案例
- SpringMVC--入门案例
- Spring 入门案例(含IOC、AOP、SpringMVC、Spring JDBC)
- 02SpringMvc_springmvc快速入门小案例(XML版本)
- Springmvc入门案例
- SpringMVC的第一个入门案例
- SpringMVC入门案例