一、HelloWorld

1.导入SpringMVC所需的jar包

    

 

2.配置web.xml

     配置DispatcherServletDispatcherServlet默认加载/WEB-INF/<servletName-servlet>.xml 的Spring配置文件,启动Web层的Spring容器。可以通过contextConfigLocation初始化参数自定义配置文件的位置和名称。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <!-- 配置DispatcherServlet -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置 DispatcherServlet 的一个初始化参数: 配置 SpringMVC 配置文件的位置和名称 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet> <servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> </web-app>

 

3.创建SpringMVC的配置文件

springmvc.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: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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 配置自动扫描的包 -->
<context:component-scan base-package="com.kiwi"/> <!-- 配置视图解析器: 如何把handler方法返回值解析作为实际的物理视图-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>

 

4.创建请求处理类

@Controller
public class HelloWorld{ /*
* 1.使用@RequestMapping注解来映射请求的URL
* 2.返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver会做如下解析
* prefix + returnVal + "suffix 会得到实际的物理视图,然后做转发操作
* /WEB-INF/views/success.jsp
*/
@RequestMapping("/helloWorld")
public String hello(){
System.out.println("Hello World");
return "success";
}
}

index.jsp

<a href="helloWorld">Test</a>

 

二、使用@RequestMapping映射请求

1.@RequestMapping修饰类

(1)SpringMVC使用@RequestMapping注解为控制器指定可以处理哪些URL请求。

(2)@RequestMapping可以在类和方法处定义:

    类定义处: 提供初步的请求映射信息,相当于WEB应用的根目录。

    方法处: 提供细分映射信息,相当于类定义处URL,如果类定义未标注,相当于WEB根目录。

@Controller
@RequestMapping("/demo")
public class TestDemo{ private static final String SUCCESS = "success"; /*
* 1.@RequestMapping不仅可以修饰方法,还可以修饰类
*/
@RequestMapping("/test")
public String test(){ System.out.println("test()......"); return SUCCESS;
}
}

此时请求路径: http://localhost:8080/springmvc-01/demo/test

(1)类定义处@RequestMapping限定处理器类可以处理所有URI为"/demo"的请求,它相当于WEB容器的根目录。

(2)处理器可以定义多个方法来处理来之"/demo"的请求。

 

2.请求参数、请求方法、请求头

(1)@RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数及请求头映射请求。

(2)valuemethodparamsheaders分别表示请求URL、请求方法、请求参数、请求头

(3)params和headers支持简单的表达式。

     param1: 请求必须包含param1的请求参数。

     !param1: 表示请求不能包含名为param1的请求参数。

    param1 != value1: 请求包含名为param1的请求参数但是不能为value1。

	/*
* 1.请求方式必须是GET请求
* 2.请求参数必须带有"name"
* 3.eg: http://localhost:8080/springmvc-01/demo/method?name=Tom
*/
@RequestMapping(value="/method",method=RequestMethod.GET,params="name")
public String testMethod(){ return SUCCESS;
}

 

3.匹配符

?: 匹配文件名中的一个字符。

*: 匹配文件名中的任意字符。

**:  匹配多层路径。

/a/*/b

匹配: /a/aaa/b、/a/bbb/b

/a/**/b

匹配: /a/b、/a/aaa/bbb/b

 

/a/b??

匹配: /a/baa、/a/bbb

 

4.@PathVariable映射URL绑定的占位符

     通过@PathVariable可以将URL中站位符参数绑定到控制器处理方法的入参中。

	@RequestMapping(value = "/user/{userId}/role/{roleId}",method = RequestMethod.GET)
public String getLogin(@PathVariable("userId") String userId,
@PathVariable("roleId") String roleId){
System.out.println("User Id : " + userId);
System.out.println("Role Id : " + roleId);
return SUCCESS;
}

http://localhost:8080/springmvc-01/demo/user/11/role/22

结果:

     User Id : 11

     Role Id : 22

 

5.使用@RequestParam绑定请求参数值

(1)在处理方法入参处使用@RequestParam可以把请求参数传递给请求方法。

(2)value: 参数名。

    required: 是否必须,默认为true。表示请求参数必须包含对应的参数,不存在,将抛出异常。

	@RequestMapping("/param")
public String testParam(@RequestParam(value="username",required=false) String username,
@RequestParam(value="password") String password){ System.out.println("username: " + username);
System.out.println("password: " + password); return SUCCESS;
}

http://localhost:8080/springmvc-01/demo/param?username=Tom&password=123

结果:

      username: Tom

      password: 123

 

6.使用POJO对象绑定请求参数值

SpringMVC会按请求参数名POJO属性名进行自动匹配,自动为该对象填充属性值,支持级联属性。

index.jsp

<form action="${pageContext.request.contextPath}/demo/test" method="post">
username: <input type="text" name="username"/><br>
password: <input type="password" name="password"/><br>
province: <input type="text" name="address.province"/><br>
city: <input type="text" name="address.city"/><br> <input type="submit" value="提交"/>
</form>

User.java

TestDemo.java

@Controller
@RequestMapping("/demo")
public class TestDemo{ private static final String SUCCESS = "success"; @RequestMapping("/test")
public String testPOJO(User user){ System.out.println(user); return SUCCESS;
} }

结果:

     User [username=Tom, password=123, address=Address [province=BeiJing, city=Changping]]

 

7.使用Servlet API作为入参

可以接受以下类型的参数:

1.HttpServletRequest、2.HttpServletResponse、3.HttpSession、4.java.security.Principal

5.Locale、6.InputStream、7.OutputStream、8.Reader

	@RequestMapping("/test")
public String testServlet(HttpServletRequest request){ String username = request.getParameter("username"); System.out.println(username); return SUCCESS;
}

http://localhost:8080/springmvc-01/demo/test?username=Tom

结果:

    Tom

SpringMVC基础学习(一)—初识SpringMVC的更多相关文章

  1. springMVC学习笔记--初识springMVC

    前一段时间由于项目的需要,接触了springMVC(这里主要是讲3.1版,以下内容也是围绕这个版本展开),发觉其MVC模式真的很强大,也简单易用,完全是基于注解实现其优雅的路径配置的.想想以前接手的项 ...

  2. springmvc基础学习3---注解简单理解

    1:@Controller 用来注解这个bean是MVC模型中的一个C 会被spring的auto-scan扫到纳入管理.Spring mvc框架中的action层注入,也就是控制层.控制器Contr ...

  3. springmvc基础学习2---简单配置文件

    1:web文件 2:spring-mvc.xml配置文件

  4. SpringMVC基础学习(二)—开发Handler

    一.Handler开发         Handler的开发方式在springmvc中有多种,下面我们主要讲解三种实现方式:实现Controller接口.实现HttpRequestHandler接口. ...

  5. 1.1(Spring MVC学习笔记)初识SpringMVC及SpringMVC流程

    一.Spring MVC Spring MVC是Spring提供的一个实现了web MVC设计模式的轻量级Web框架. Spring优点:网上有,此处不复述. 二.第一个Spring MVC 2.1首 ...

  6. SpringMVC基础学习(三)—参数绑定

    一.基本数据类型的绑定 页面 <form action="${pageContext.request.contextPath}/test.do" method="p ...

  7. Mybatis基础学习(一)—初识MyBatis

    一.MyBatis是什么?      MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co ...

  8. Spring基础学习(一)—初识Spring

    一.Spring的使用 1.导入jar包 2.编写实体类 Person.java public class Person{ private String name; public void say() ...

  9. Hibernate基础学习(一)—初识Hibernate

    一.对象的持久化 狭义的理解: 持久化仅仅指把对象永久的保存到数据库中. 广义的理解: 持久化包括和数据库相关的各种操作.         保存: 把对象永久保存到数据库中.         更新: ...

随机推荐

  1. Spring+SpringMVC+MyBatis+easyUI整合基础篇(二)牛刀小试

    承接上文,该篇即为项目整合的介绍了. 废话不多说,先把源码和项目地址放上来,重点要写在前面. github地址为ssm-demo 你也可以先体验一下实际效果,点击这里就行啦 账号:admin 密码:1 ...

  2. 【openstack N版】——镜像服务glance

    一.openstack镜像服务glance 1.1 glance介绍 glance主要是由三部分组成 glance-api:接收云系统镜像的创建,删除,读取请求,类似nova-api,通过其他模块(g ...

  3. MySQL Innodb 并发涉及参数

    1 参数作用 MySQL的各个插件式引擎中,都会对事务及线程做一定的处理和优化.在Innodb引擎中,总是尝试保持 innodb内 操作系统的线程数(暂命名为innodb_thread) 应该小于或等 ...

  4. java中map集合的迭代

    import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TestMap { pu ...

  5. 《Django By Example》第八章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:还有4章!还有4章全书就翻译完成了 ...

  6. Flume-ng源码解析之Sink组件

    作为启动流程中第二个启动的组件,我们今天来看看Sink的细节 1 Sink Sink在agent中扮演的角色是消费者,将event输送到特定的位置 首先依然是看代码,由代码我们可以看出Sink是一个接 ...

  7. UVa 1588 换抵挡装置

    前言 题目 大意是说,两个槽能够插在一起,并保证每一列的高度不高于3,保证最短长度. 思路 思路很简单,取短字符串遍历长字符串的每一个位置,纪录下位置,并取最短即可. 实现 //习题3-11 换抵挡装 ...

  8. C++primer拾遗(第一章:开始)

    本系列将总结正在阅读的C++primer这本书中值得注意又容易忘记的知识点. 1. 当return语句包括一个值时,次返回值的类型必须与函数返回类型相同. 2. 操纵符 endl.写入该符号的效果是: ...

  9. 对bootstrap不同版本的总结

    之前以为bootstrap2和bootstrap3没啥区别,无非就是功能增加了,简直是误区啊 bootstrap3与bootstrap2版本语法都不同啦 栅格写法 col-md-3/span3 文本效 ...

  10. MyEclipse下打开ftl文件

      转:http://blog.csdn.net/w410589502/article/details/51669028 1.Freemarker模板的文件后缀名 2.Freemarker其实是一种比 ...