spring mvc 教程_Spring MVC开发–快速教程

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个常用的处理程序映射是BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping 。

在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应用程序的简单指南。 您可以在此处找到为本教程创建的源代码。 别忘了分享!

相关文章:

  • JBoss 4.2.x Spring 3 JPA Hibernate教程
  • 使用Spring将POJO公开为JMX MBean
  • Spring 3 RESTful Web服务
  • 具有Spring和Maven教程的JAX–WS
  • 使用Spring Security保护GWT应用程序的安全
  • 使用Spring AspectJ和Maven进行面向方面的编程
相关片段:
  • Spring MVC拦截器示例
  • 在Spring容器中声明bean
  • 使用Spring发送电子邮件

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

spring mvc 教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359870.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实时监听输入框值变化的完美方案:oninput onpropertychange

实时监听输入框值变化的完美方案&#xff1a;oninput & onpropertychange 原文:实时监听输入框值变化的完美方案&#xff1a;oninput & onpropertychange在 Web 开发中经常会碰到需要动态监听输入框值变化的情况&#xff0c;如果使用 onkeydown、onkeypress、onkeyup 这…

R语言对矩阵按某一列排序

[plain] view plaincopy a <- c(5,4,3,2,1) b <- c(1,2,3,4,5) c <- cbind(a,b) [plain] view plaincopyc[order(c[,1]),] #按第一列递增排序 转载于:https://www.cnblogs.com/jamesf/p/4751573.html

java 是用什么写的_java用什么写的

java用什么写的JAVA本身就是一门编程语言&#xff0c;它编译生成的文件运行在JVM上(java虚拟机)。JVM是由c语言和汇编语言开发的。基于此之上就是java了&#xff0c;虚拟机是起到解析执行的作用。JVM是java语言最大的特点&#xff0c;java的优缺点也是缘于JVM技术。JVM是一个可…

java properties 保存_Java 读写Properties配置文件

转自&#xff1a;https://www.cnblogs.com/xudong-bupt/p/3758136.html1.Properties类与Properties配置文件Properties类继承自Hashtable类并且实现了Map接口&#xff0c;也是使用一种键值对的形式来保存属性集。不过Properties有特殊的地方&#xff0c;就是它的键和值都是字符…

java垃圾回收机制优化_JVM性能优化--Java的垃圾回收机制

一、Java内存结构1、Java堆(Java Heap)java堆是java虚拟机所管理的内存中最大的一块&#xff0c;是被所有线程共享的一块内存区域&#xff0c;在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例&#xff0c;这一点在Java虚拟机规范中的描述是&#xff1a;所有的对象实…

《linux 网卡别名的添加和绑定》RHEL6

网卡别名的配置&#xff1a; 这个和ifconfig临时修改网卡ip 差不多&#xff0c;但是不一样。都是临时的&#xff0c;只要重启电脑就没了。 配永久的ip别名&#xff1a; cp ifcfg-eth0 ifcfg-eth0:0 vim ifcfg-eth0:0 这样做也能出来&#xff0c;对不对就不知道了 重启网络就ok…

NGUI中UILabel使用url标签的一个bug

在NGUI里&#xff0c;UILabel控件可以支持一些简单功能的标签&#xff0c;使文本显示更丰富及实现类似超链接的功能。但是在使用的时候发现了NGUI3.5.9版本里存在着一个bug。不过还好修复这个bug也很简单。 在UILabel中支持[urllink]text[/url]的方式来定义类超链接的文本。bug…

[转]Oracle DB管理内存

• 描述SGA 中的内存组件• 实施自动内存管理• 手动配置SGA 参数• 配置自动PGA 内存管理内存管理&#xff1a;概览DBA 必须将内存管理视为其工作中至关重要的部分&#xff0c;因为&#xff1a;• 可用内存空间量有限• 为某些类型的功能分配更多内存可提高整体性能• 自动优化…

servlet 3.0异步_Servlet 3.0异步处理可将服务器吞吐量提高十倍

servlet 3.0异步Servlet是Java中处理服务器端逻辑的主要组件&#xff0c;新的3.0规范引入了一些非常有趣的功能&#xff0c;其中异步处理是最重要的功能之一。 可以利用异步处理来开发高度可伸缩的Web应用程序。 使用此功能可以有效地构建Web 2.0站点和AJAX应用程序。 我们的JC…

smartgwt_SmartGWT入门,提供出色的GWT界面

smartgwtSmartGWT简介 我最近开始使用SmartGWT &#xff0c;它是一个基于GWT的框架&#xff0c;该框架为您的应用程序UI提供了一个全面的小部件库&#xff0c;并为服务器端的数据管理提供了帮助。 您可以在SmartGWT展示柜上查看其漂亮的功能。 我准备了一个简短的“入门”指南…

Beaglebone Back学习五(PWM测试)

PWM测试 参考链接 1 Enable PWM on BeagleBone with Device Tree overlays 2 Using PWM on the Beaglebone Black 3 Beaglebone Coding 101: Buttons and PWM 4 Using PWM outputs 5 beaglebone-black-cpp-PWM 6 Enabling PWM Support in the kernel 7转载于:https://www.cnblo…

CUBA平台的理念

最近发生了很多事。 在CUBA于6月1日正式发布之后&#xff0c;我们推出了一个新版本&#xff0c;在一些Java网站上发布了我们的第一篇文章&#xff0c;并在伦敦的Devoxx UK会议上介绍了该平台 。 但是在热潮继续之前&#xff0c;大约是时候阐明CUBA背后的哲学了。 与企业软件开…

Android 绘制动态图

最近准备技能大赛&#xff0c;需要将从传感器中读出的数据在移动客户端以图的形式绘制出来&#xff0c;因为平时很少绘图&#xff0c;于是各种查资料&#xff0c;算是勉强做出来了。 以下是大赛理论效果图&#xff08;左&#xff09;和实际效果图&#xff08;右&#xff09;&am…

$(document).ready() 和 window.onload 方法比较

说明 页面加载文档完毕后&#xff0c;浏览器会通过 Javascript 为 DOM 元素添加事件。 Javascript 使用 window.onload 方法&#xff0c;而 jQuery 使用 $(document).ready() 方法。 $(document).ready() 方法可以极大的提高 Web 应用程序的相应速度&#xff0c;因为该方法可以…

java undo_用JAVA实现Undo、Redo,Copy、Paste、Cut_java

programlover原作package clipborad;import javax.swing.JTextArea;import java.awt.datatransfer.*;import java.awt.*;import javax.swing.*;import java.io.*;import javax.swing.undo.*;http://www.gaodaima.com/64851.html用JAVA实现Undo、Redo,Copy、Paste、Cut_javaimpo…

项目管理控件Project Management Library

Project Management Library是一款项目管理控件&#xff0c;包含了项目管理相关的Windows客户端控件,如&#xff1a;ProjectView, ResourcesView, ScheduleView, StatisticsView。支持所有.NET语言&#xff0c;可以用于Windows桌面应用程序,具有标准的界面和操作自定义设置、拖…

ios 查询mysql数据库操作系统_iOS数据库FMDB--增删改查(模糊查询)详细介绍

简介&#xff1a;很早就想整理一下数据库的使用了&#xff0c;刚好最近接触较多&#xff0c;加之可以安排出空余的时间&#xff0c;所以瓜子我贡献出自己喝咖啡的时间整理一下FMDB的使用&#xff0c;以下是对FMDB的介绍以及基本使用 --- insert、delete、update、select。其中s…

SQL Server 2008 R2如何生成带数据的数据库脚本

1.对想要复制的数据库右键&#xff0c;“任务”&#xff0c;“生成脚本” 2.下面需要注意的是&#xff0c;默认情况下&#xff0c;只会生成仅架构的脚本&#xff0c;也就是说仅仅有表结构&#xff0c;而没有数据的空壳。所以需要额外的设置。 在设置脚本编写选项&#xff0c;选…

java分页 jar_零基础学java之javaEE,分页

【分页】一 分页1.1分页概念引入什么是分页?分页(英语&#xff1a;Paging)&#xff0c;是一种操作系统里存储器管理的一种技术&#xff0c;可以使电脑的主存可以使用存储在辅助存储器中的数据。操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块&#xff0c;称…

查看修改MySQL字符集

查看修改MySQL字符集 http://blog.sina.com.cn/s/blog_70ac6bec01016fts.html 查看修改MySQL字符集 (2012-08-22 09:53:21) 转载▼标签&#xff1a; 字符集 mysql数据库 mysql字符集查看 mysql启动命令 修改mysql字符集 分类&#xff1a; 网站开发MySQL字符集多种多样…