一、准备搭配环境
搭建环境:mysql5.2+tomcat(apache-tomcat-7.0.90)+jdk(jdk1.7.0_55)
开发工具:eclipse(Eclipse Java EE IDE for Web Developers.)
二、完成史上最牛的程序Hello world ,呵呵。
1.准备本环境的需要的jar包,并导入工程目录的WEB-INF/lib下面
2.在web.xml文件中添加springmvc的前端控制器信息
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<!-- spring mvc 前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- spring mvc 拦截 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 所有的的请求,都会被DispatcherServlet处理 -->
<!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
2.在src下添加springmvc-servlet.xml 它是springmvc的配置文件
<?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">
<!-- 启用spring mvc 注解 如:@Controller @Service @Autowired-->
<mvc:annotation-driven/>
<!--配置静态资源:spring mvc拦截所有的请求,所有要对我们访问的资源进行处理,否则将不生效 -->
<mvc:resources mapping="/resources/**/" location="/resources/"/>
<!-- 自动扫描的包名 ,使Spring支持自动检测组件,如注解的Controller-->
<context:component-scan base-package="com.test.controller" />
<!-- 视图解析器:定义跳转的文件的前后缀 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
3.在WEB-INF下建jsp文件夹。在jsp下新建一个hello.jsp,在<body></body>添加Hello world.
再新建一个test.jsp
hello.jsp--用来测试一个大神级的演示在页面输出Hello world
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<H1>Hello world</H1>
</body>
</html>
test.jsp --用来演示方法绑定参数的方式的演示
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<H1>Hello world!</H1>
<h2>Hello spring MVC !</h2>
<!-- 接收后台传过来的数据 -->
<!--el表达式的4大作用域 pageContext,request,session,application-->
${test }
<br/>
${requestScope.test }
</body>
</html>
4.建包
com.test.controller, 建一个类为TestController
com.test.domain包,建一个类Users
上代码:
TestController.java
package com.test.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.test.domain.Users;
//注解用于标识类,为控制器类,同时注册一个bean到spring的上下文件中。
@Controller
//控制器类的地址映射:注解为控制器指定处理 URL请求映射
@RequestMapping("/test")
public class TestController {
//方法的映射的地址最好与方法名称相同。
@RequestMapping("/hello")
public String hello()
{
return "hello";
}
//方法的映射
@RequestMapping("/test")
public String test()
{
//返回的视图的名称
//由视图解析器:定义跳转的文件的前后缀
// <property name="prefix" value="/WEB-INF/jsp/" />
// <property name="suffix" value=".jsp" />
///WEB-INF/jsp/test.jsp 对应的物理视图名称
return "test";
}
//接收请求参数的绑定
//测试地址 http://localhost:8080/springmvc/test/test1?uname=mike&upwd=11
//当地址栏中参数和方法的参数名称相同时会自动赋 值
@RequestMapping("/test1")
public String test1(String uname,String upwd)
{
System.out.println("uname="+uname+"\t"+"upwd="+upwd);
return "test";
}
//测试地址 http://localhost:8080/springmvc/test/test2?a=mike&b=11
//当地址栏中参数与方法参数名称不一致时,用@RequestParam()将请求参数与方法中参数进行绑定
@RequestMapping("/test2")
public String test2(@RequestParam("a")String uname1,@RequestParam("b")String upwd1)
{
System.out.println("uname1="+uname1+"\t"+"upwd1="+upwd1);
return "test";
}
//测试地址 http://localhost:8080/springmvc/test/test3?uname=allen&upwd=123
//当地址栏中参名称与方法中参数对象的属性名称相同时,会自动给对象的属性赋值
@RequestMapping("/test3")
public String test3(Users users)
{
System.out.println(users.getUname()+"\t"+users.getUpwd());
return "test";
}
//向前台页面传参数
@RequestMapping("/show")
//spring mvc 调用方法时传传入一个map对象,在方法内部可以使用map和添加新的数据,它是在请求作用域内的相当于request
//前台页面页直接收。${requestScope.test}
public String show(Map<String,Object> map)
{
map.put("test", "哥们,我去前台了!!,呵呵...");
return "test";
}
//使用@ResponseBody时,把对象转成json数据,出错时,,缺少转换依赖的jar包,故报错
//错误信息HTTP Status 406 – Not Acceptable
//jar包为jackson的jar包
@ResponseBody
@RequestMapping("/testjson")
public List<Users>testJson()
{
Users u1=new Users(1000, "mike", "123");
Users u2=new Users(1001, "rose", "123");
Users u3=new Users(1002, "allen", "123");
Users u4=new Users(1003, "smith", "123");
Users u5=new Users(1004, "李明", "123");
List<Users> list=new ArrayList<Users>();
list.add(u1);
list.add(u2);
list.add(u3);
list.add(u4);
list.add(u5);
return list;
}
}
Users.java
package com.test.domain;
public class Users {
private Integer uid;
private String uname;
public Users(){}
public Users(Integer uid, String uname, String upwd) {
super();
this.uid = uid;
this.uname = uname;
this.upwd = upwd;
}
private String upwd;
public Integer getUid() {
return uid;
}
public void setUid(Integer uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
}
5.测试
1、测试输出Hello word
http://localhost:8080/springmvc/test/hello
2.地址栏中参数与方法中参数相同自动赋值
http://localhost:8080/springmvc/test/test1?uname=mike&upwd=11
3.当地址栏中参数与方法参数名称不一致时,用@RequestParam()将请求参数与方法中参数进行绑定
http://localhost:8080/springmvc/test/test2?a=mike&b=11
4.当地址栏中参名称与方法中参数对象的属性名称相同时,会自动给对象的属性赋值
测试地址 http://localhost:8080/springmvc/test/test3?uname=allen&upwd=123
5.向前台页面传参数
http://localhost:8080/springmvc/test/show
6.输出json数据格式:需要jackson的jar包.如果少jar 时spring mvc报406错误
http://localhost:8080/springmvc/test/testjson
7.SpringMVC常用注解
@Controller 负责注册一个bean 到spring 上下文中
@RequestMapping 应用于类和方法级别的。为控制器和方法指定可以处理URL 请求映射
@RequestBod用于生成json数据,向面页输出
@RequestParam 请求参 数与方法参数名称不相同时,用它来把请求参数和方法参数绑定
@PathVariable 用于占位符绑定 绑定 URL 占位符到方法的参数
本例子下载地址
https://download.csdn.net/download/handsome221/10721056