Spring MVC开发–快速教程

这是我们的JCG合作伙伴之一,来自Manoj的有关使用Spring开发Web应用程序的简短教程, 网址为“ The Khangaonkar Report ”。

(注意:对原始帖子进行了少量编辑以提高可读性)

Spring MVC使用基于模型视图控制器体系结构(MVC)模式的框架,可以轻松进行Web应用程序开发。 MVC架构模式要求将用户界面(视图),正在处理的数据(模型)和管理视图与模型之间的交互的控制器分开。

Spring MVC的核心是Servlet,即DispatcherServlet ,它处理每个请求。 DispatcherServlet将HTTP请求路由到应用程序开发人员创建的Controller类。 控制器类处理请求,并确定应将哪个视图作为响应的一部分显示给用户。

让我们开发一个简单的Web应用程序,该应用程序接收请求并将一些数据发送回用户。 在继续进行任何操作之前,建议您从此处下载源代码。

对于本教程,您还需要:

1.像Tomcat这样的servlet容器
2. Spring3.0
3. Eclipse是可选的。 我使用eclipse作为我的IDE。 Eclipse使您可以导出可以部署到Tomcat的战争。 但是您也可以使用其他IDE或命令行工具。 4.需要对JSP和Servlet有一定的了解。

步骤1:如果要在J2EE中开发Web应用程序,通常可以通过开发打包在.war文件中的servlet和/或JSP来实现。 还需要包含配置元数据的部署描述符web.xml。 这场战争被部署到了像Tomcat这样的应用服务器上。

使用Spring,首先要做的是通过将org.springframework.web.servlet.DispatcherServlet定义为该应用程序的Servlet类,将Spring连接到此J2EE Web基础结构。 您还需要将org.springframework.web.context.ContextLoaderListener定义为侦听器。 ContextLoaderListener负责加载具有Spring元数据的特定于Spring的应用程序上下文。

web.xml设置确保servlet引擎将对应用程序的每个请求都路由到DipatcherServlet 。 更新为web.xml如下所示:

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

步骤2:此Web应用程序中的繁重工作由控制器类完成。 这是扩展org.springframework.web.servlet.mvc.AbstractController的普通Java类或bean。 我们重写handleRequestInternal方法。 在这种方法中,您将做一些处理请求的必要工作,其中可能包括例如从数据库中读取数据。

该方法返回一个org.springframework.web.servlet.ModelAndView对象,该对象封装了视图的名称以及该视图需要显示的任何数据(模型)。 ModelAndView将数据作为名称值对保存。此数据稍后可用于视图。 如果视图是jsp,则可以使用jstl技术或直接查询Request对象来访问数据。 我们的控制器的代码如下所示:

public class SpringMVCController extends AbstractController {
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) {
        ModelAndView mview = new ModelAndView("springmvc") ;
        mview.addObject("greeting", "Greetings from SpringMVC") ;
        mview.addObject("member1", new Member("Jonh","Doe", 
            "1234 Main St","Pleasanton","94588","kh@gmail.com","1234")) ;
        return mview ;
    }
}

视图springmvc的名称将传递到ModelAndView的构造函数中。 addObject方法调用将添加2个模型对象,即“ greeting”和“ member1”。 稍后,您将看到视图如何检索对象并显示它们。

步骤3:每个Spring应用程序都需要元数据来定义Bean及其依赖项。 对于此应用程序,我们创建一个springmvc-servlet.xml。 我们通过在web.xml中指定其位置来帮助spring找到它。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/springmvc-servlet.xml</param-value>
</context-param>

在springmvc-servlet.xml中,控制器bean定义为:

<bean name="/*.htm" class="com.mj.spring.mvc.SpringMVCController"/>

步骤4: DispatcherServlet如何知道哪个控制器应该处理请求?

Spring使用处理程序映射将控制器与请求相关联。 2个常用的处理程序映射是BeanNameUrlHandlerMappingSimpleUrlHandlerMapping

BeanNameUrlHandlerMapping中 ,当请求URL与bean的名称匹配时,bean定义中的类就是将处理请求的控制器。

在我们的示例中,我们使用BeanNameUrlHandlerMapping,如下所示。 每个以.htm结尾的请求url由SpringMVCController处理。

<bean name="/*.htm" class="com.mj.spring.mvc.SpringMVCController"/>

在SimpleUrlHandlerMapping中,映射更加明确。 您可以指定许多URL,并且每个URL都可以与控制器明确关联。

步骤5: DispatcherServlet如何知道作为响应返回什么?

如前所述,控制器的handleRequestInternal方法返回ModelAndView对象。

在上面显示的控制器代码中,视图“ springmvc”的名称在ModelAndView的构造函数中传递。 至此,我们刚刚给出了视图的名称。 我们没有说什么文件,类或工件有助于产生html,也没有说使用的视图技术是JSP还是速度模板还是XSLT。 为此,您需要一个ViewResolver ,它提供视图名称和具体视图之间的映射。 Spring使您可以使用许多不同的技术来生成具体视图,但是对于本示例,我们将使用JSP。

Spring提供了一个支持JSP的InternalResourceViewResolver类,并且springmvc-servlet.xml中的以下声明告诉spring我们正在使用此解析器。 在视图名称中添加了前缀和后缀,以生成呈现视图的jsp文件的路径。

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

步骤6:在此示例中,视图解析为springmvc.jsp,该视图使用JSTL获取并显示数据。 Spring使JSP可以将模型对象“ greeting”和“ member1”用作请求范围对象。 出于教育目的,下面的代码也直接从请求中获取对象。

// Using JSTL to get the model data
${greeting}
${member1.lastname

// Using java to get the model directly from the request
Map props = request.getParameterMap() ;
System.out.println("PARAMS =" + props) ;
Enumeration em = request.getAttributeNames() ;
while (em.hasMoreElements()) {
    String name = (String) em.nextElement() ;
    System.out.println("name = "+name) ;
}
System.out.println("Attrs are "+request.getAttributeNames()) ;
System.out.println("greeting is "+ request.getAttribute("greeting")) ;
Member m = (Member)request.getAttribute("member1") ;
System.out.println("member is "+m.toString()) ;

步骤7:到目前为止,我们开发的所有文件都应打包到war文件中,就像在任何Web应用程序中一样。 通过复制到tomcat_install \ webapps,可以将战争部署到tomcat。 我发动了一场战争,您可以在这里下载。

步骤8:将您的Web浏览器指向http:// localhost:8080 / springmvc / test.htm以运行该应用程序。 浏览器应显示数据。

总而言之,Spring通过提供可以轻松组装的构建块来简化Web应用程序的开发。 我们使用Spring MVC构建了一个Web应用程序。 Spring提供了一种简单的方法来将我们的模型,控制器SpringMVCController和视图springmvc.jsp连接在一起。 我们不必显式地编写任何请求/响应处理逻辑。 通过更改springmvc-servlet.xml中的元数据,您可以切换到其他控制器或其他视图技术。

没错 ,我们的JCG合作伙伴 Manoj Khangaonkar 提供了使用Spring开发Web应用程序的简单指南。 您可以在此处找到为本教程创建的源代码。 别忘了分享!

相关文章:

相关片段:

翻译自: https://www.javacodegeeks.com/2011/02/spring-mvc-development-tutorial.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值