- 浏览: 93911 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (90)
- spring mvc (7)
- hudson(持续集成引擎) (1)
- jquery (5)
- mongodb (2)
- httpclient (1)
- spring3.1 (4)
- hibernate4.1 (6)
- tomcat;database; (1)
- mysql;存储引擎; (1)
- dwr (1)
- httpsession (2)
- symbian (1)
- lighttpd (3)
- nginx (3)
- apache (2)
- 链表 (1)
- jetty (2)
- Redis (1)
- memcached (1)
- squid (1)
- 反向代理 (1)
- 360doc (1)
- struts2 (2)
- mail (1)
- annotation (2)
- captcha (1)
- ehcache (2)
- ThreadPoolTaskExecutor (1)
- json (2)
- tomcat (3)
- cookie (1)
- session (1)
- 面试 (3)
- hadoop (3)
- JDK (1)
- 内存 (1)
- hibernate二级缓存 (1)
- hadoop mapreduce (1)
- linux (2)
- spring security (2)
- http (2)
- excel (1)
- unix (1)
- compass (1)
- lucene (1)
- kindeditor (1)
- C++ (1)
- java (1)
- cas (1)
- eclipse (2)
- olap (1)
- oltp (1)
- Git (1)
- BI (1)
- lago (1)
- 存储过程 (2)
- 书本 (1)
- VMware虚拟机 (1)
- 网络技术 (1)
- 登陆 (1)
- SapphireCache (1)
- ssl (1)
- webservice (1)
- RPC (1)
- 连接池 (1)
- google api (1)
- oracle (1)
- javascript (1)
- mysql (1)
- 离线文件 (0)
- 多线程 (0)
最新评论
-
davinsam:
import org.mysterylab.utopiafra ...
hibernate dao -
davinsam:
dao类使用说明弄错了,怎么跟basehibernatedao ...
hibernate dao -
like_shadows:
真不错,顶
mongodb基本知识
[size=large]Spring mvc
第一个 Spring MVC 程式
这边的第一个 Spring Web MVC 程式将使用 Tomcat 5.5 来示范,这次为了资源管理上的方便,直 接使用 spring.jar,以及其相依的 commons-logging.jar,请将这两个 jar 放到 WEB-INF/lib 下。
在 Web MVC 架构中,使用者并不直接连接至所需的资源,而必须先连接至前端控制器(Front controller),由前端控制器判断使用者的请求要分派(Dispatch)给哪一个控制物件(Controller) 来处理请求,藉此执到控制使 用者可请求的资源之目的。
在 Spring 的 Web MVC 框架中,担任前端控制器角色的是 org.springframework.web.servlet.DispatcherServlet, DispatcherServlet 负责将客户的请 求分派给对应于请求的控制物件,所以使用 Spring Web MVC 的第一步,就是在 web.xml 中定义 DispatcherServlet:
• web.xml
在 web.xml 中定义了一个 DispatcherServlet 的实例 dispatcherServlet,从设定中可以看到, 所有连接至 *.do 结尾的请求都会由它来处理,"contextConfigLocation"初始参数用来设定
Bean 定义档的位置与名称,如果不设置 "contextConfigLocation"初始参数,则 DispatcherServlet 预设会使用 Servlet 的名称为前置,读取 “Servlet 名称- servlet.xml” 作为其 Bean 定义档,在上面的设定中则会读取 mvc-config.xml 中的定义。
您也可以定义多个 Bean 定义档的来源,像是:
...
...
DispatcherServlet 负责转发请求至控制物件(Controller),在 Spring Web MVC 框架中,控 制物件是实作 org.springframework.web.servlet.mvc.Controller 介面的类别之实例, Controller 介面有一个必须实作的 handleRequest()方法,其定义如下所示:
当 Controller 收到 DispatcherServlet 转发而来的请求,会执行 handleRequest()方法来处理 请求,处理完毕后返回一 个 org.springframework.web.servlet.ModelAndView 的实例, ModelAndView 包括了要呈现在 View 层(例如 JSP 网页)的相关 Model 资料,以及其它有关 View 层的相关讯息。
在您第一个 Spring Web MVC 中,使用者的请求将由一个 HelloController 类别之实例来处理, 其实作如下所示:
•
在这个 Controller 中,取得了来自使用者的 user 请求参数,并设定在 ModelAndView 的实例中,在这个例子中,建构 ModelAndView 的第一个引数为要呈现的目标网页(或资源)路径,第二个 引数是设定用来取得 Model 物件的键(Key),而第三个引数为要给 View 层呈现资料用的 Model 物件。
在 Web MVC 架构下,控制物件的作用为收集使用者的请求,进行与 Web 层相关的动作,您不应当 在控制物件中执行商务逻辑,也不应当让 Servlet 相关的 API 侵入至商务层,这会让商务层的 物件与 Servlet API 产生耦合,例如让 HttpServletRequest 物件直接设定至商务层物件之中。
使用 Spring Web MVC 的好处是,Spring 的 Controller 在其 IoC 容器管理下,可以如同一般的 Bean 来加以管理,并利用其依赖注入来完成相关物件的注入, 以这边的例子来说,具体而言, 您可以在 XML 档案中设定 Controller 请求处理完毕之后,所要呈现资料的网页路径,来看一下 Bean 定义档的内容, 依 web.xml 中的设定,请在 WEB-INF 目录下建立 mvc-config.xml 档案:
• mvc-config.xml
实际上 DispatcherServlet 必须根据一个 HandlerMapping 物件来决定请求由哪一个 Controller 来处理, DispatcherServlet 预设使用 org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,也就是根据 Bean 在定义时的"name"属性及使用者请求的 URL 来决定使用哪一个 Controller 实例,例如在这个例 子中,请求/hello.do 时, DispatcherServlet 根据"hello"(即不包括.do)名称决定要使用 "name"为"hello"的 Bean 实例,所以就是将请求交 由 HelloController 的实例来处理。
当 Controller 返回 ModelAndView 后,DispatcherServlet 会交由 ViewResolver 物件来作 View 层的相关解 析,因而您需要设置一个 ViewResolver 实例,在这个范例中将以 JSP 作为 View 层 技术,所以使用 org.springframework.web.servlet.view.InternalResourceViewResolver, InternalResourceViewResolver 需要设置一个"viewClass",预设是 org.springframework.web.servlet.view.InternalResourceView,这个类别支援 Servlet 技 术 的相关资源(像是 JSP、Servlet)。
InternalResourceViewResolver 的"prefix"、"suffix"属性会与 ModelAndView 返回的路径资讯 结合, 例如若路径资讯返回为"hello"字串,则与以上的例子设定结合,实际的路径就是 /WEB-INF/jsp/hello.jsp。
最后可以简单的在/WEB-INF/jsp/中写一个测试的 hello.jsp:
• hello.jsp
在 ModelAndView 中设 置的 Model 物件,经由 InternalResourceViewResolver 及 InternalResourceView 的解析,将设定为 JSP 技术中可存取的属性(Attribute),因而可以使 用 JSP 技术中的 Expression Language 来取得资料,依以上所撰写的程式,如果您在请求 hello.do 时附带了 user 参数,则最后的 JSP 会出现您所给的 user 讯息。
[/size]
第一个 Spring MVC 程式
这边的第一个 Spring Web MVC 程式将使用 Tomcat 5.5 来示范,这次为了资源管理上的方便,直 接使用 spring.jar,以及其相依的 commons-logging.jar,请将这两个 jar 放到 WEB-INF/lib 下。
在 Web MVC 架构中,使用者并不直接连接至所需的资源,而必须先连接至前端控制器(Front controller),由前端控制器判断使用者的请求要分派(Dispatch)给哪一个控制物件(Controller) 来处理请求,藉此执到控制使 用者可请求的资源之目的。
在 Spring 的 Web MVC 框架中,担任前端控制器角色的是 org.springframework.web.servlet.DispatcherServlet, DispatcherServlet 负责将客户的请 求分派给对应于请求的控制物件,所以使用 Spring Web MVC 的第一步,就是在 web.xml 中定义 DispatcherServlet:
• web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app 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 " version="2.4"> <session-config> <session-timeout> 30 </session-timeout> </session-config> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/mvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app>
在 web.xml 中定义了一个 DispatcherServlet 的实例 dispatcherServlet,从设定中可以看到, 所有连接至 *.do 结尾的请求都会由它来处理,"contextConfigLocation"初始参数用来设定
Bean 定义档的位置与名称,如果不设置 "contextConfigLocation"初始参数,则 DispatcherServlet 预设会使用 Servlet 的名称为前置,读取 “Servlet 名称- servlet.xml” 作为其 Bean 定义档,在上面的设定中则会读取 mvc-config.xml 中的定义。
您也可以定义多个 Bean 定义档的来源,像是:
...
<servlet> <servlet-name>hello</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/mvc-config.xml, →?/WEB-INF/other-service.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
...
DispatcherServlet 负责转发请求至控制物件(Controller),在 Spring Web MVC 框架中,控 制物件是实作 org.springframework.web.servlet.mvc.Controller 介面的类别之实例, Controller 介面有一个必须实作的 handleRequest()方法,其定义如下所示:
package org.springframework.web.servlet.mvc; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; public interface Controller { ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception; }
当 Controller 收到 DispatcherServlet 转发而来的请求,会执行 handleRequest()方法来处理 请求,处理完毕后返回一 个 org.springframework.web.servlet.ModelAndView 的实例, ModelAndView 包括了要呈现在 View 层(例如 JSP 网页)的相关 Model 资料,以及其它有关 View 层的相关讯息。
在您第一个 Spring Web MVC 中,使用者的请求将由一个 HelloController 类别之实例来处理, 其实作如下所示:
•
HelloController.java package onlyfun.caterpillar; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.mvc.Controller; import org.springframework.web.servlet.ModelAndView; public class HelloController implements Controller { private String viewPage; public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) throws Exception { String user = req.getParameter("user"); return new ModelAndView(viewPage, "user", user); } public void setViewPage(String viewPage) { this.viewPage = viewPage; } }
在这个 Controller 中,取得了来自使用者的 user 请求参数,并设定在 ModelAndView 的实例中,在这个例子中,建构 ModelAndView 的第一个引数为要呈现的目标网页(或资源)路径,第二个 引数是设定用来取得 Model 物件的键(Key),而第三个引数为要给 View 层呈现资料用的 Model 物件。
在 Web MVC 架构下,控制物件的作用为收集使用者的请求,进行与 Web 层相关的动作,您不应当 在控制物件中执行商务逻辑,也不应当让 Servlet 相关的 API 侵入至商务层,这会让商务层的 物件与 Servlet API 产生耦合,例如让 HttpServletRequest 物件直接设定至商务层物件之中。
使用 Spring Web MVC 的好处是,Spring 的 Controller 在其 IoC 容器管理下,可以如同一般的 Bean 来加以管理,并利用其依赖注入来完成相关物件的注入, 以这边的例子来说,具体而言, 您可以在 XML 档案中设定 Controller 请求处理完毕之后,所要呈现资料的网页路径,来看一下 Bean 定义档的内容, 依 web.xml 中的设定,请在 WEB-INF 目录下建立 mvc-config.xml 档案:
• mvc-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN""http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="viewResolver" class="org.springframework.web.servlet. → view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <bean name="/hello.do" class="onlyfun.caterpillar.HelloController"> <property name="viewPage"> <value>hello</value> </property> </bean> </beans>
实际上 DispatcherServlet 必须根据一个 HandlerMapping 物件来决定请求由哪一个 Controller 来处理, DispatcherServlet 预设使用 org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,也就是根据 Bean 在定义时的"name"属性及使用者请求的 URL 来决定使用哪一个 Controller 实例,例如在这个例 子中,请求/hello.do 时, DispatcherServlet 根据"hello"(即不包括.do)名称决定要使用 "name"为"hello"的 Bean 实例,所以就是将请求交 由 HelloController 的实例来处理。
当 Controller 返回 ModelAndView 后,DispatcherServlet 会交由 ViewResolver 物件来作 View 层的相关解 析,因而您需要设置一个 ViewResolver 实例,在这个范例中将以 JSP 作为 View 层 技术,所以使用 org.springframework.web.servlet.view.InternalResourceViewResolver, InternalResourceViewResolver 需要设置一个"viewClass",预设是 org.springframework.web.servlet.view.InternalResourceView,这个类别支援 Servlet 技 术 的相关资源(像是 JSP、Servlet)。
InternalResourceViewResolver 的"prefix"、"suffix"属性会与 ModelAndView 返回的路径资讯 结合, 例如若路径资讯返回为"hello"字串,则与以上的例子设定结合,实际的路径就是 /WEB-INF/jsp/hello.jsp。
最后可以简单的在/WEB-INF/jsp/中写一个测试的 hello.jsp:
• hello.jsp
<%@page contentType="text/html"%> <%@page?pageEncoding="UTF-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>First Spring MVC</title> </head> <body> <h1>Hello, ${user}!!</h1> </body> </html>
在 ModelAndView 中设 置的 Model 物件,经由 InternalResourceViewResolver 及 InternalResourceView 的解析,将设定为 JSP 技术中可存取的属性(Attribute),因而可以使 用 JSP 技术中的 Expression Language 来取得资料,依以上所撰写的程式,如果您在请求 hello.do 时附带了 user 参数,则最后的 JSP 会出现您所给的 user 讯息。
[/size]
发表评论
文章已被作者锁定,不允许评论。
-
spring mail
2012-05-02 15:12 924[color=orange][size=large]Sprin ... -
SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结
2012-04-20 13:01 1234转载【http://sishuok.com/for ... -
json格式的输入和输出
2012-04-19 20:04 1233转载http://starscream.iteye.c ... -
Spring mvc3的ajax
2012-04-19 19:59 1184转载来自http://xace.iteye.com/blog/ ... -
spring mvc DispatcherServlet
2012-04-19 19:54 1073Spring MVC的请求处理流程 viewResolve ... -
在Spring中使用jcaptcha实现图片验证
2012-04-19 19:36 1703转载来自http://sha0k.iteye.com/blog ...
相关推荐
这是一个简单的 Web 应用程序,展示了如何配置 spring-mvc 和 spring-data。 有一个简单的登录功能,如果用户凭据正确,用户将被转发到一个主页,其中所有订单的列表显示在 html 表中。 数据库很简单:用户和订单,...
它默认集成了许多必备的依赖,如Tomcat服务器、Spring MVC等。 2. **Spring Web Services**(Spring-WS):Spring-WS是Spring框架的一部分,专门用于构建SOAP Web服务。它提供了创建契约优先(contract-first)的...
在IT行业中,Spring框架是Java企业级应用开发的首选工具之一,因其强大的功能和灵活性而备受推崇。本实例将引导你逐步了解如何使用Spring框架构建你的第...现在,打开`spring_first`这个压缩包,开始你的Spring之旅吧!
11. Developing Your First Spring Boot Application 11.1. Creating the POM 11.2. Adding Classpath Dependencies 11.3. Writing the Code 11.3.1. The @RestController and @RequestMapping Annotations 11.3.2. ...
- 提供了与 Spring MVC 的集成支持,可以在控制器中直接注入 Repository。 - 示例: ```java @Controller public class PersonController { private final PersonRepository personRepository; @Autowired ...
<bean id="helloWorld" class="com.example.FirstSpring.HelloWorld"> , Spring!"/> ``` 这段XML声明了一个名为`helloWorld`的bean,其类型为`com.example.FirstSpring.HelloWorld`,并设置了`message`属性的值。...
在实际开发中,我们还需要了解如何处理HTTP请求,使用Spring MVC或者WebFlux框架;如何配置数据库连接,使用JDBC、JPA或者MyBatis;以及如何进行测试,利用Spring Boot的测试支持,如`@SpringBootTest`、`@...
接下来,`first-hibernate-example-tutorial-en.pdf`是一份关于Hibernate入门的教程,适合初学者。它通过实例演示了如何设置Hibernate环境,创建实体类,配置映射文件,以及如何使用Session接口进行数据的增删改查...
SpringBoot会根据类路径下的配置文件和已添加的依赖自动进行配置,如Spring MVC、Spring Data JPA等。开发者只需少量或无需额外的XML配置即可完成应用的搭建。 2. 起步依赖 SpringBoot通过"starter"模块提供了一种...
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
Struts 是一款经典的Java EE应用程序框架,主要用于构建Web应用程序,特别是企业级的MVC(Model-View-Controller)架构。...学习Struts2不仅有助于理解MVC模式,也为学习其他现代Web框架如Spring MVC打下基础。
在实际应用中,通常会使用MVC(Model-View-Controller)框架,如Spring MVC,来组织和管理Servlet,使得代码结构更清晰,可维护性更强。然而,对于初学者来说,理解基本Servlet的工作原理是非常重要的。 在提供的...
2. **Technology技术**:用于实现MVC架构的技术栈,如Java、Spring MVC等。 3. **Component组件**:MVC架构中的各个组成部分。 4. **Container容器**:管理组件生命周期和依赖注入的容器,如Spring框架提供的...
随着学习深入,还可以探索MVC框架(如Spring MVC)、JSP、EL和JSTL等技术,以及如何将它们与Servlet结合使用,构建更复杂的Java Web应用。参考博文(http://blog.csdn.net/daochuwenziyao/article/details/53012747...
Servlet技术是JavaEE平台中的核心组件,它主要用于构建动态Web应用程序。...学习Servlet的原因在于,静态...同时,Servlet也是其他高级技术,如Spring MVC或Filter等的基础,因此掌握Servlet对于JavaWeb开发者至关重要。
虽然Servlet是基础,但现代Web应用通常使用MVC(Model-View-Controller)框架,如Spring MVC,来简化开发。这些框架在Servlet之上提供更高层次的抽象,使代码更易于维护和扩展。 9. **文件`servlet-example-master...