用Spring MVC开发简单的Web应用程序

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请求,并将它们分发到相应的处理程序中去。代码如下:

Xml代码   收藏代码
  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中所有控制器类的基本接口。通过实现这个接口,你可以创建自己的控制器。代码如下:

Java代码   收藏代码
  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.   
  9. public class IndexAction implements Controller {  
  10.     private String username;  
  11.     private String viewPage;  
  12.     @Override  
  13.     public ModelAndView handleRequest(HttpServletRequest request,  
  14.             HttpServletResponse response) throws Exception {  
  15.         Map<String, String> model = new HashMap<String, String>();  
  16.         model.put("username", getUsername());  
  17.         return new ModelAndView(getViewPage(), model);  
  18.     }  
  19.     public String getUsername() {  
  20.         return username;  
  21.     }  
  22.     public void setUsername(String username) {  
  23.         this.username = username;  
  24.     }  
  25.     public String getViewPage() {  
  26.         return viewPage;  
  27.     }  
  28.     public void setViewPage(String viewPage) {  
  29.         this.viewPage = viewPage;  
  30.     }  
  31. }  

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

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

Java代码   收藏代码
  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文件,内容如下:

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插件信息。内容如下:

Xml代码   收藏代码
  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>  

转载于:https://www.cnblogs.com/zhangchuan210/p/3270699.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值