1 工具与环境

借助Eclipse4.3 + Maven3.0.3构建Java Web应用程序。使用Maven内置的servlet 容器jetty,不需手工集成Web服务器到Eclipse。还帮我们自动创建Java EE规范定义的Java Web应用程序的有效目录结构,如:WEB-INF/classes目录等,方便省心。当然Maven还有其他优秀的功能,这里不会详细介绍。pom.xml的内容可见第6小节。

接下来将介绍如果使用Spring MVC开发简单的Web应用程序,就从创建配置文件开始。

2 创建配置文件

2.1 配置前端控制器DispatchServlet

在web.xml中,定义一个类型为DispatcherServlet的Servlet。这是Spring MVC的核心Servlet类,它负责接受Web请求,并将它们分发到相应的处理程序中去。代码如下:

  1. <servlet>
  2. <servlet-name>dispatcherServlet</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <!-- 初始化参数 :确定spring-servlet。xml文件路径 -->
  5. <init-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>/WEB-INF/spring-servlet.xml</param-value>
  8. </init-param>
  9. <load-on-startup>1</load-on-startup>
  10. </servlet>
  11. <!-- 拦截所有以 /mvc/开始的请求 -->
  12. <servlet-mapping>
  13. <servlet-name>dispatcherServlet</servlet-name>
  14. <url-pattern>/mvc/*</url-pattern>
  15. </servlet-mapping>

2.2 配置spring-servlet.xml文件路径

Spring-servlet.xml是一个标准的Spring Bean配置文件,内容如上一节。

3 创建Spring MVC控制器

Controller接口是Spring MVC中所有控制器类的基本接口。通过实现这个接口,你可以创建自己的控制器。代码如下:

  1. package org.mahz.springmvc;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.springframework.web.servlet.ModelAndView;
  7. import org.springframework.web.servlet.mvc.Controller;
  8. public class IndexAction implements Controller {
  9. private String username;
  10. private String viewPage;
  11. @Override
  12. public ModelAndView handleRequest(HttpServletRequest request,
  13. HttpServletResponse response) throws Exception {
  14. Map<String, String> model = new HashMap<String, String>();
  15. model.put("username", getUsername());
  16. return new ModelAndView(getViewPage(), model);
  17. }
  18. public String getUsername() {
  19. return username;
  20. }
  21. public void setUsername(String username) {
  22. this.username = username;
  23. }
  24. public String getViewPage() {
  25. return viewPage;
  26. }
  27. public void setViewPage(String viewPage) {
  28. this.viewPage = viewPage;
  29. }
  30. }

在handleRequest()方法中,可以随意地处理Web请求,就像在Servlet中一样。最后必须返回一个ModelAndView对象,其中包含视图名称或者视图对象,以及一些模型属性。

创建好控制器类后,必须在Web应用程序上下文中声明它的实例。由于这是表现层组件,所以应该在spring-servlet.xml中声明它。代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
  2. <beans>
  3. <!-- 定义映射 -->
  4. <bean id="urlMapping"
  5. class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  6. <property name="mappings">
  7. <props>
  8. <prop key="index">indexAction</prop>
  9. </props>
  10. </property>
  11. </bean>
  12. <!-- 定义视图 -->
  13. <bean id="viewResolver"
  14. class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  15. <property name="viewClass">
  16. <value>org.springframework.web.servlet.view.InternalResourceView</value>
  17. </property>
  18. </bean>
  19. <!-- 定义控制器 -->
  20. <bean id="indexAction" class="org.mahz.springmvc.IndexAction">
  21. <property name="username">
  22. <value>刘平</value>
  23. </property>
  24. <property name="viewPage">
  25. <value>/index.jsp</value>
  26. </property>
  27. </bean>
  28. </beans>

4 创建JSP视图

在webapp目录下创建index.jsp文件,内容如下:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <% String str = (String)request.getAttribute("username"); %>
  10. <body>
  11. <H1><%=str%>,欢迎你!</H1>
  12. </body>
  13. </html>

5 部署Web应用程序

在Maven使用jetty:run部署Web应用程序。

在浏览器中输入链接:http://localhost:8080/springmvc/mvc/index

6 pom.xml

pom.xml文件中,包括项目的基本系统、Spring MVC所需要的依赖信息、项目的编译插件和jetty插件信息。内容如下:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>org.huazhen</groupId>
  5. <artifactId>springmvc</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <packaging>war</packaging>
  8. <name>springmvc</name>
  9. <!-- 属性配置 -->
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. <junit.version>4.10</junit.version>
  13. <spring.version>2.5.6</spring.version>
  14. </properties>
  15. <!-- 依赖配置 -->
  16. <dependencies>
  17. <!-- servlet -->
  18. <dependency>
  19. <groupId>javax.servlet</groupId>
  20. <artifactId>servlet-api</artifactId>
  21. <version>2.5</version>
  22. </dependency>
  23. <!-- junit -->
  24. <dependency>
  25. <groupId>junit</groupId>
  26. <artifactId>junit</artifactId>
  27. <version>${junit.version}</version>
  28. <scope>test</scope>
  29. </dependency>
  30. <!-- Freemarker -->
  31. <dependency>
  32. <groupId>org.freemarker</groupId>
  33. <artifactId>freemarker</artifactId>
  34. <version>2.3.18</version>
  35. </dependency>
  36. <!-- spring -->
  37. <dependency>
  38. <groupId>org.springframework</groupId>
  39. <artifactId>spring-tx</artifactId>
  40. <version>${spring.version}</version>
  41. </dependency>
  42. <dependency>
  43. <groupId>org.springframework</groupId>
  44. <artifactId>spring-aop</artifactId>
  45. <version>${spring.version}</version>
  46. </dependency>
  47. <dependency>
  48. <groupId>org.springframework</groupId>
  49. <artifactId>spring-webmvc</artifactId>
  50. <version>${spring.version}</version>
  51. </dependency>
  52. <dependency>
  53. <groupId>commons-logging</groupId>
  54. <artifactId>commons-logging</artifactId>
  55. <version>1.1.1</version>
  56. </dependency>
  57. </dependencies>
  58. <build>
  59. <finalName>springmvc</finalName>
  60. <plugins>
  61. <plugin>
  62. <groupId>org.apache.maven.plugins</groupId>
  63. <artifactId>maven-compiler-plugin</artifactId>
  64. <version>2.5.1</version>
  65. <configuration>
  66. <source>1.6</source>
  67. <target>1.6</target>
  68. </configuration>
  69. </plugin>
  70. <plugin>
  71. <groupId>org.mortbay.jetty</groupId>
  72. <artifactId>maven-jetty-plugin</artifactId>
  73. <version>6.1.26</version>
  74. <configuration>
  75. <scanIntervalSeconds>10</scanIntervalSeconds>
  76. <stopKey>foo</stopKey>
  77. <stopPort>9999</stopPort>
  78. </configuration>
  79. <executions>
  80. <execution>
  81. <id>start-jetty</id>
  82. <phase>pre-integration-test</phase>
  83. <goals>
  84. <goal>run</goal>
  85. </goals>
  86. <configuration>
  87. <scanIntervalSeconds>0</scanIntervalSeconds>
  88. <daemon>true</daemon>
  89. </configuration>
  90. </execution>
  91. <execution>
  92. <id>stop-jetty</id>
  93. <phase>post-integration-test</phase>
  94. <goals>
  95. <goal>stop</goal>
  96. </goals>
  97. </execution>
  98. </executions>
  99. </plugin>
  100. </plugins>
  101. </build>
  102. </project>

用Spring MVC开发简单的Web应用程序的更多相关文章

  1. 用Spring MVC开发简单的Web应用

    这个例子是来自于Gary Mak等人写的Spring攻略(第二版)第八章Spring @MVC中的一个例子,在此以学习为目的进行记录. 问题:想用Spring MVC开发一个简单的Web应用, 学习这 ...

  2. [转] 使用Spring MVC构建REST风格WEB应用

    原文地址:http://fancy888.iteye.com/blog/1629120 对于运行在网络上的MIS系统而言,处理数据的是整个系统的主要任务,翻开程序我们可以看到,80%以上的代码都在处理 ...

  3. 使用Spring MVC构建REST风格WEB应用

    转自:http://fancy888.iteye.com/blog/1629120 对于运行在网络上的MIS系统而言,处理数据的是整个系统的主要任务,翻开程序我们可以看到,80%以上的代码都在处理数据 ...

  4. Spring MVC之简单入门

    一.Spring MVC简介: 1.什么是MVC 模型-视图-控制器(MVC)是一个众所周知的以设计界面应用程序为基础的设计模式.它主要通过分离模型(Model).视图(View)及控制器(Contr ...

  5. 干净win7要做几步才能运行第一个Spring MVC 写的动态web程序

    干净win7要做几步才能运行第一个Spring MVC 写的动态web程序: 1. 下载安装jdk 2. 配置Java环境变量 3. 测试一下第1,2两步是否完全成功:http://jingyan.b ...

  6. 使用Spring MVC开发RESTful API

    第3章 使用Spring MVC开发RESTful API Restful简介 第一印象 左侧是传统写法,右侧是RESTful写法 用url描述资源,而不是行为 用http方法描述行为,使用http状 ...

  7. CRUD using Spring MVC 4.0 RESTful Web Services and AngularJS

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  8. 使用Spring Boot开发 “Hello World” Web应用

    环境准备 由于现在很多IDE都支持Maven, 所以我们将使用Maven构建该工程: 开始之前,需要先安装Java和Maven: 本工程将基于Spring Boot 1.4.3.RELEASE开发,推 ...

  9. Spring MVC中发布Restful Web服务

      对于企业应用来说,数据是许多业务的命脉,软件通常是可替换的,但是多年积累的数据是永远不能替换的.   近些年来,以信息为中心的表述性状态转移(Representational State Tran ...

随机推荐

  1. 身份证归属地查询免费api接口代码

    描写叙述 :依据身份证编号 查询归属地信息. 身份证实体类: package org.wx.xhelper.model; /** * 身份证实体类 * @author wangxw * @versio ...

  2. leetCode 88.Merge Sorted Array (合并排序数组) 解题思路和方法

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: Y ...

  3. Unity3D研究院之拓展Scene视图

    Scene视图是编辑游戏模型的地方,其实它还可以进行编辑.如下图所示,我给Scene视图做了简单的编辑. Scene视图的拓展是基于对象的,意思就是你必须在Hierarchy视图中选择一个对象才行.H ...

  4. 设计TCP服务器的规则

    设计TCP服务器,采用如下规则: 1.正等待连接请求的一端有一个固定长度的连接队列,该队列中的连接已被TCP接受(完成三次握手),但还没有被应用层接受.注意:TCP接受一个连接是将其放入这个队列,而应 ...

  5. 最近两周我们接触到的两种线上抓娃娃机的技术实现方案(一种RTSP/一种RTMP)

    线上抓娃娃机需求 最近线上抓娃娃机的项目火爆了,陆陆续续几十款线上抓娃娃机上架,还有一大波正在开发上线中,各大视频云提供商都在蹭热度发布自己的线上抓娃娃机方案,综合了一下,目前线上抓娃娃机的视频需求无 ...

  6. android菜鸟学习笔记3----关于AndroidMainfest.xml

    每个android项目都包含一个AndroidMainfest.xml文件,它包含了组成应用程序的每一个Acitivity.Service.Content Provider和Broadcast Rec ...

  7. javac 编译源文件出现"java:1: 需要为 class、interface 或 enum"、" [javac] 锘縫"错误

    [javac] HelloWorld.java:1: 需要为 class.interface 或 enum [javac] 锘縫ackage com.csdn.demo; [javac] ^ [jav ...

  8. CUDA: 常量内存与事件

    常量内存: 常量内存用于保存在核函数执行期间不会发生变化的数据,在变量面前添加  __constant__  修饰符: __constant__  Sphere  s[SPHERES]; cudaMe ...

  9. Redis——慢查询分析

    核心知识点: 1.什么是慢查询? 2.客户端执行一条命令的步骤? 3.阈值和慢查询日志的设置? 4.慢查询日志的操作命令:slowlog get.slowlog len.slowlog reset. ...

  10. nginx语法之location详解

    Location语法优先级排列 匹配符 匹配规则 优先级 = 精确匹配 ^~ 以某个字符串开头 ~ 区分大小写的正则匹配 ~* 不区分大小写的正则匹配 !~ 区分大小写不匹配的正则 !~* 不区分大小 ...