Spring MVC - 框架概述 Spring MVC - 环境设置 Spring Web MVC框架提供了模型 - 视图 -控制器架构和现成组件,可用于开发灵活且松散耦合的Web应用程序。MVC模式导致应用程序的不同方面(输入逻辑,业务逻辑和UI逻辑)分离,同时在这些元素之间提供松散耦合。 该型号封装应用程序的数据和一般,他们将包括 POJO。 该视图 负责呈现模型数据,并在一般情况下,它会生成HTML输出,客户端的浏览器可以解释。 该控制器*负责处理用户请求和建立适当的模型 ,并将其传递到用于呈现该视图。 DispatcherServlet Spring Web模型 - 视图 - 控制器(MVC)框架是围绕处理所有HTTP请求和响应的DispatcherServlet设计的。Spring Web MVC DispatcherServlet的请求处理工作流程如下图所示。 以下是与DispatcherServlet的传入HTTP请求相对应的事件序列 收到HTTP请求后,DispatcherServlet会查询 HandlerMapping 以调用相应的Controller。 Controller接受请求并根据使用的 GET 或 POST 方法调用适当的服务 方法 。服务方法将基于定义的业务逻辑设置模型数据,并将视图名称返回给DispatcherServlet。 DispatcherServlet将从 ViewResolver 获取帮助以获取请求的已定义视图。 一旦完成视图,DispatcherServlet就会将模型数据传递给最终呈现在浏览器上的视图。 所有上述组件,即HandlerMapping,Controller和ViewResolver都是 WebApplicationContext 的一部分,它是普通 ApplicationContext 的扩展,具有Web应用程序所需的一些额外功能。 必需的配置 我们需要使用 web.xml 文件中的URL映射来映射您希望DispatcherServlet处理的请求。以下是显示 HelloWeb DispatcherServlet的 声明和映射的示例 <web-app id = "WebApp_ID" version = "2.4" xmlns = "http://java.sun.com/xml/ns/j2ee" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring MVC Application</display-name> <servlet> <servlet-name>HelloWeb</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>HelloWeb</servlet-name> <url-pattern>*.jsp</url-pattern> </servlet-mapping> </web-app> 在 web.xml 中的文件将被保存在 WebContent/WEB-INF Web应用程序的目录。 在初始化 HelloWeb DispatcherServlet时,框架将尝试从 位于应用程序的 WebContent/WEB-INF 目录中的名为 [servlet-name] -servlet.xml 的文件加载应用程序上下文。在这种情况下,我们的文件将是 HelloWeb-servlet.xml 。 接下来, 标记指示哪个URL将由哪个DispatcherServlet处理。这里,所有以.jsp结尾的HTTP请求都将由 HelloWeb DispatcherServlet 处理。 如果您不想使用默认文件名作为 [servlet-name] -servlet.xml 并将默认位置作为WebContent/WEB-INF,则可以通过在web.xml中添加servlet侦听器 ContextLoaderListener 来自定义此文件名和位置文件如下 <web-app...> <!-------- _DispatcherServlet_ definition goes here----- > .... <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/HelloWeb-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app> 现在,让我们检查 HelloWeb-servlet.xml 文件所需的配置,该文件放在Web应用程序的WebContent/WEB-INF目录中。 <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:context = "http://www.springframework.org/schema/context" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" 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"> <context:component-scan base-package = "com.codingdict" /> <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name = "prefix" value = "/WEB-INF/jsp/" /> <property name = "suffix" value = ".jsp" /> </bean> </beans> 以下是关于 HelloWeb-servlet.xml 文件的一些重要观点 在 [servlet-name]-servlet.xml 的文件将被用来创建定义的豆类,覆盖在全球范围内的名字相同的Bean的定义。 所述 <context:component-scan...> 标签将被用来激活弹簧MVC注释扫描能力,这允许使用例如注解的 @Controller 和 @RequestMapping 等 该 InternalResourceViewResolver 将定义解析视图名称规则。根据上面定义的规则,名为 hello 的逻辑视图被委托给位于 /WEB-INF/jsp/hello.jsp 的视图实现。 现在让我们了解如何创建实际组件,即Controller,Model和View。 定义控制器 DispatcherServlet将请求委托给控制器以执行特定于它的功能。该 @Controller 注解表明特定类供应控制器的作用。@RequestMapping 注解用于将URL映射到要么整个类或特定处理程序方法。 @Controller @RequestMapping("/hello") public class HelloController{ @RequestMapping(method = RequestMethod.GET) public String printHello(ModelMap model) { model.addAttribute("message", "Hello Spring MVC Framework!"); return "hello"; } } 该 @Controller 注解类定义为Spring MVC的控制器。这里, @RequestMapping 的第一次使用表明该控制器上的所有处理方法都与 /hello 路径相关。 下一个注释 @RequestMapping(method = RequestMethod.GET) 用于将 printHello() 方法声明为控制器处理HTTP GET请求的默认服务方法。我们可以定义另一种方法来处理同一URL上的任何POST请求。 我们也可以用另一种形式编写上面的控制器,我们可以在@RequestMapping中添加其他属性,如下所示 @Controller public class HelloController{ @RequestMapping(value = "/hello", method = RequestMethod.GET) public String printHello(ModelMap model) { model.addAttribute("message", "Hello Spring MVC Framework!"); return "hello"; } } 所述 值 属性表示该处理程序方法被映射和所述URL 方法 属性定义了服务的方法来处理该HTTP GET请求。 以下是关于上面定义的控制器需要注意的一些要点 您将在服务方法中定义所需的业务逻辑。您可以根据要求在此方法中调用另一个方法。 根据定义的业务逻辑,您将在此方法中创建模型。您可以设置不同的模型属性,视图将访问这些属性以显示结果。此示例创建一个具有其属性“message”的模型。 定义的服务方法可以返回String,其中包含用于呈现模型的 视图 的名称。此示例返回“hello”作为逻辑视图名称。 创建JSP视图 Spring MVC支持不同类型的视图,用于不同的表示技术。这些包括 - JSPs, HTML, PDF, Excel Worksheets, XML, Velocity Templates, XSLT, JSON, Atom 和 RSS 提要, JasperReports 等。但是,最常见的是使用JSTL编写的JSP模板。那么,让我们在/WEB-INF/hello/hello.jsp中编写一个简单的hello视图 <html> <head> <title>Hello Spring MVC</title> </head> <body> <h2>${message}</h2> </body> </html> 这里是 ${message} 这是我们在Controller中设置的属性。您可以在视图中显示多个属性。 Spring MVC教程导航 Spring MVC - 框架概述 Spring MVC - 环境设置 Spring MVC - Hello World示例 Spring MVC - 表单处理示例 Spring MVC - 页面重定向示例 Spring MVC - 静态页面示例 Spring MVC - 文本框示例 Spring MVC - 密码示例 Spring MVC - TextArea示例 Spring MVC - Checkbox示例 Spring MVC - Checkboxes示例 Spring MVC - RadioButton示例 Spring MVC - RadioButtons示例 Spring MVC - 下拉示例 Spring MVC - 列表框示例 Spring MVC - 隐藏字段示例 Spring MVC - 错误处理示例 Spring MVC - 文件上传示例 Spring MVC - Bean Name Url 处理器映射实例 Spring MVC - 控制器类名称处理程序映射示例 Spring MVC - 简单的URL处理程序映射示例 Spring MVC - 多动作控制器示例 Spring MVC - 属性方法名称解析器示例 Spring MVC - 参数方法名称解析器示例 Spring MVC - 可参数化的视图控制器示例 Spring MVC - 内部资源视图解析器示例 Spring MVC - Xml 视图解析器实例 Spring MVC - 资源包视图解析器示例 Spring MVC - 多个解析器映射示例 Spring MVC - Hibernate Validator示例 Spring MVC - 生成RSS Feed示例 Spring MVC - 生成 XML 实例 Spring MVC - 生成JSON示例 Spring MVC - 生成Excel示例 Spring MVC - 生成PDF示例 Spring MVC - 集成LOG4J示例 Spring MVC - 环境设置