Spring MVC使用样例

步骤1:添加Spring的相关依赖

  1  <dependency>
  2
  3     <groupId>com.alibaba.external</groupId>
  4
  5     <artifactId>java.servlet</artifactId>
  6
  7     <version>2.5</version>
  8
  9 </dependency>
 10
 11 <dependency>
 12
 13     <groupId>com.alibaba.external</groupId>
 14
 15     <artifactId>sourceforge.spring.modules.webmvc</artifactId>
 16
 17     <version>2.5.6</version>
 18
 19 </dependency>
 20
 21 <dependency>
 22
 23     <groupId>com.alibaba.external</groupId>
 24
 25     <artifactId>sourceforge.spring.modules.core</artifactId>
 26
 27     <version>3.0.5.RELEASE</version>
 28
 29 </dependency>
 30
 31 <dependency>
 32
 33     <groupId>com.alibaba.external</groupId>
 34
 35     <artifactId>sourceforge.spring.modules.beans</artifactId>
 36
 37     <version>3.0.5.RELEASE</version>
 38
 39 </dependency>
 40
 41 <dependency>
 42
 43     <groupId>com.alibaba.external</groupId>
 44
 45     <artifactId>sourceforge.spring.modules.context</artifactId>
 46
 47     <version>3.0.5.RELEASE</version>
 48
 49 </dependency>
 50
 51 <dependency>
 52
 53     <groupId>com.alibaba.external</groupId>
 54
 55     <artifactId>sourceforge.spring.modules.context-support</artifactId>
 56
 57     <version>3.0.5.RELEASE</version>
 58
 59 </dependency>
 60
 61 <dependency>
 62
 63     <groupId>com.alibaba.external</groupId>
 64
 65     <artifactId>sourceforge.spring.modules.web</artifactId>
 66
 67     <version>3.0.5.RELEASE</version>
 68
 69 </dependency>
 70
 71 <dependency>
 72
 73     <groupId>com.alibaba.external</groupId>
 74
 75     <artifactId>sourceforge.spring.modules.aop</artifactId>
 76
 77     <version>3.0.5.RELEASE</version>
 78
 79 </dependency>
 80
 81 <dependency>
 82
 83     <groupId>com.alibaba.external</groupId>
 84
 85     <artifactId>jakarta.commons.logging</artifactId>
 86
 87     <version>1.1.1</version>
 88
 89 </dependency>
 90
 91 <dependency>
 92
 93     <groupId>org.springframework</groupId>
 94
 95     <artifactId>spring-asm</artifactId>
 96
 97     <version>3.0.6.RELEASE</version>
 98
 99 </dependency>
100
101 <dependency>
102
103     <groupId>com.alibaba.external</groupId>
104
105     <artifactId>sourceforge.spring.modules.expression</artifactId>
106
107     <version>3.0.5.RELEASE</version>
108
109 </dependency>

步骤2:在web.xml中配置spring mvc的入口

 <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>*.test</url-pattern>

 </servlet-mapping>

也可以指定spring servlet拦截之后,Spring mvc的配置文件

 <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/classes/*.xml</param-value>

     </init-param>

     <load-on-startup>1</load-on-startup>

 </servlet>

  <servlet-mapping>

     <servlet-name>hello</servlet-name>

     <url-pattern>*.do</url-pattern>

  </servlet-mapping>

【注意】

1、在src源下面的文件,都将被映射到/WEB-INF/classes/下面,可以使用通配符。

 <init-param>    

             <param-name>contextConfigLocation</param-name>               

             <!--      

               指定XML文件位置     

               <param-value>/WEB-INF/classes/springmvc.xml                

               <param-value>classpath*:springmvc.xml     

              -->    

              <!-- 在classpath路径下去寻找springmvc.xml文件 -->               

              <param-value>classpath:springmvc.xml     

             </param-value>    

 </init-param>    

2、<load-on-startup>1</load-on-startup> 让容器启动的时候就加载配置文件

步骤3:如果没有指定spring mvc的映射文件名称,默认使用:在WEB-INF目录下的*-servlet.xml文件,其中*为web.xml中配置的servlet-name。本例为:springmvc,则寻找的配置文件为:springmvc-servlet.xml,里面的配置如下:

 <?xml version="1.0" encoding="UTF-8"?>

 <beans xmlns="http://www.springframework.org/schema/beans"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lang="http://www.springframework.org/schema/lang"

     xsi:schemaLocation=" 

 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 

 http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-2.5.xsd">

     <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

         <property name="mappings">

             <props>

                 <prop key="start.test">LoginSpringAction</prop>

             </props>

         </property>

     </bean>

     <bean id="LoginSpringAction" class="com.alibaba.spring.LoginSpringAction"></bean>

     <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">

         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>

         <property name="prefix" value="/WEB-INF/jsp/"/>

         <property name="suffix" value=".jsp"/>

     </bean>

 </beans>

 解释:如果start.test访问,则使用com.alibaba.spring.LoginSpringAction进行处理。

 处于jsp页面隐藏的考虑,放在/WEB-INF目录下,按照跳转要求,则找/WEB-INF/jsp/start1.jsp页面。其中start1是由Controller继承类中new ModelAndView("start1")决定的。前缀和后缀是在*-servlet.xml中指定的,本例为springmvc-servlet.xml。

   【注意】如果需要使用注解annotation的方式,在需要引入context和mvc命名空间,具体如下:

 <?xml version="1.0" encoding="UTF-8"?>     

   <beans xmlns="http://www.springframework.org/schema/beans"       

        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   

        xmlns:p="http://www.springframework.org/schema/p"       

        xmlns:context="http://www.springframework.org/schema/context"   

        xmlns:mvc="http://www.springframework.org/schema/mvc"      

        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd     

        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd     

        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd     

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  

        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"  

         default-autowire="byName">     

   </beans>  

步骤4:LoginSpringAction.java文件

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.Controller;

public class LoginSpringAction implements Controller {

    @Override

    public ModelAndView handleRequest(HttpServletRequest request,

            HttpServletResponse response) throws Exception {

        String username = request.getParameter("username");

        String password = request.getParameter("password");

        System.out.println("username:" + username + ", password:" + password);

        return new ModelAndView("start1");

    }

}

【注意】使用annotation方式,可以避免耦合方式,也方便单元测试

setp 1:为controller的类添加注解:@Controller

setp 2:为方法添加@RequestMapping

在类级别定义:@RequestMapping("/test"),该类的根级别,可选

在方法上定义:@RequestMapping("/start"),相对与类级别,必选,访问方式:/test/start.do

setp 3:在spring servlet配置文件中添加扫描功能,使annotation产生作用

<!-- 把标记了@Controller注解的类转换为bean -->

<context:component-scan base-package="test.controller" />

setp 4:在spring servlet中使用视图解析类,如UrlBasedViewResolver, 在里面配置前缀和后缀,viewClass属性为可选。

步骤5:启动jetty访问,url:http://localhost:8080/start.test, 则后台输出:Controller is working

补充:制作一个index.jsp页面开始运转

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2
 3     pageEncoding="gbk"%>
 4
 5
 6
 7 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 8
 9 <html>
10
11 <h2>Hello World!</h2>
12
13 <body>
14
15     <form method="get" action="/start.test">
16
17         <table>
18
19             <tr>
20
21                 <th><label for="username">用户名</label>
22
23                 </th>
24
25                 <td><input type="text" id="username" name="username" />
26
27                 </td>
28
29             </tr>
30
31             <tr>
32
33                 <th><label for="password">密码</label>
34
35                 </th>
36
37                 <td><input type="text" id="password" name="password" />
38
39                 </td>
40
41             </tr>
42
43             <tr>
44
45                 <th><label for="submit"></label>
46
47                 </th>
48
49                 <td>
50
51                     <button type="submit" id="submit" name="submit">submit</button> <label
52
53                     for="reset"></label>
54
55                     <button type="reset" id="reset" name="reset">reset</button></td>
56
57             </tr>
58
59
60
61         </table>
62
63     </form>
64
65 </body>
66
67 </html>

访问:http://localhost:8080/index.jsp

【补充】

(1)对于不需要的controller的login.jsp页面,可以使用spring自带的org.springframework.web.servlet.mvc.ParameterizableViewController,而不需要自己再写controller的实现。具体配置如下:

<bean id="LoginAction"

class="org.springframework.web.servlet.mvc.ParameterizableViewController">

<property name="viewName" value="login"></property>

</bean>

它会根据策略寻找到/WEB-INF/jsp/login.jsp

(2)如果login.test直接找login.jsp,即login是一致的,不需要改变,则可以更加省略,直接写为:

<bean id="LoginAction"

class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />

Spring MVC使用样例的更多相关文章

  1. Spring Boot入门样例-001-Java和Maven安装配置

    Spring Boot入门样例-001-Java和Maven安装配置 本文说明Java和Maven在windows下的安装和配置 前言 本Spring Boot入门样例准备工作参考: Spring B ...

  2. 转:【Spring MVC Controller单例陷阱】

    http://lavasoft.blog.51cto.com/62575/1394669/ Spring MVC Controller默认是单例的: 单例的原因有二:1.为了性能.2.不需要多例. 1 ...

  3. Spring MVC Controller单例陷阱

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/1394669 Spr ...

  4. MVC整个样例的源代码

    以下就是整MVC样例的源代码: #windows应用程序 #开发者:蔡军生(QQ:9073204) 深圳 2014-9-24 #使用类来描写叙述 from ctypes import * from c ...

  5. Spring Cloud使用样例

    Spring Cloud Demo 项目地址:https://github.com/hackyoMa/spring-cloud-demo 组件 基于Spring Boot 2.0.4.Spring C ...

  6. RAD 极速应用开发 Spring ROO 入门样例

    官网                                      http://projects.spring.io/spring-roo/ Spring ROO in action   ...

  7. Spring 框架学习(1)--Spring、Spring MVC扫盲

    纸上得来终觉浅,绝知此事要躬行 文章大纲 什么是spring 传统Java web应用架构 更强的Java Web应用架构--MVC框架 Spring--粘合式框架 spring的内涵 spring核 ...

  8. Spring Ajax一个简单样例

    配置不说了.要在前面helloworld的样例基础上弄. 相同在hello下新建ajax.jsp <%@ page language="java" contentType=& ...

  9. spring mvc 的Controller类默认Scope是单例(singleton)的

    使用Spring MVC有一段时间了,之前一直使用Struts2,在struts2中action都是原型(prototype)的, 说是因为线程安全问题,对于Spring MVC中bean默认都是(s ...

随机推荐

  1. Python之打印99乘法表

    本脚本实现打印99乘法表 #!/usr/bin/python #9*9 for i in range(1,10): print for j in range(1,i+1): print "% ...

  2. js中addEventListener第三个参数涉及到的事件捕获与冒泡

    js中,我们可以给一个dom对象添加监听事件,函数就是 addEventListener("click",function(){},true); 很容易理解,第一个参数是事件类型, ...

  3. 计算facebook sdk需要的key hashes

    1. 下载openssl,在C盘创建openssl文件夹,解压下载的zip到openssl文件夹. 2. 找到debug.keystore. windows下在C:\Users\用户名\.androi ...

  4. C#设置richtextbox某一段文本颜色

    假设 RichTextBox1 文本是"你好,我爱你中国",想要把中国变为红色,则 可以先找到中的位置是 7 :国的位置是8 设置 RichTextBox1.SelectionSt ...

  5. Java学习笔记——Linux下安装配置MySQL

    山重水复疑无路,柳暗花明又一村 --游山西村 系统:Ubuntu 16.04LTS 1\官网下载mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz2\建立工作组:$su ...

  6. JAVA 编程规范

       软件开发技术规范 PTHINK-DEVELOP-JAVA-091010         Java语言编程规范   2009-10-10发布                2009-10-11实施 ...

  7. 【Netty】ChannelHandler和ChannelPipeline

    一.前言 前面学习了Netty的ByteBuf,接着学习ChannelHandler和ChannelPipeline. 二.ChannelHandler和ChannelPipeline 2.1 Cha ...

  8. springboot 中使用websocket简单例子

    gradle 中添加依赖,引入websocket支持 compile("org.springframework.boot:spring-boot-starter-websocket:${sp ...

  9. collections模块方法详解

    collections是Python内建的一个集合模块,提供了许多有用的集合类. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> ...

  10. 开源解析库 - JSON

    Json及其实现 JSON作为一种轻量级的数据交换格式,多被用于跨语言通信(比如CPP与PHP之间的数据交互). 至于何为JSON,其详细解释参考 官网. 既然是一种格式,那便必然有相应的编码实现.在 ...