一、@RequestMapping注解
@RequestMapping可以用来注释一个控制器类,此时所有的方法都将映射为对于类级别的请求,表示该控制器处理的所有请求都被映射到value属性所指示的路径下,例如:
@Controller
@RequestMapping(value="/user")
public class UserController {
@RequestMapping(value="/register")
public String register(){
System.out.println("register GET方法被调用");
return "register";
}
由于在UserController类上面加了一个value="/user"的@RequestMapping注解,故所有访问此类的相关路径都要加上"/user",此时访问register方法路径如下:
http://localhost:8080/user/register
@RequestMapping具有以下属性:
属性 | 类型 | 是否必要 |
value | String[] | 否 |
name | String | 否 |
method | RequestMethod[] | 否 |
consumes | String[] | 否 |
produces | String[] | 否 |
params | String[] | 否 |
headers | String[] | 否 |
Path | String[] | 否 |
1、value属性
属性value即是将URL映射到对应的控制器类或方法中,例如前面的例子,将user映射到UserController类中、将register映射到register方法中。
由于value是@RequestMapping注释的默认属性,因此,如果只有唯一属性时可以省略属性名,如下面两个是等价的:
@RequestMapping(value="/hello")
@RequestMapping("/hello")
value属性的值也可以为空。
2、method属性
该属性用来指示该方法仅仅处理哪些HTTP请求方式
@RequestMapping(value="/hello",method=RequestMethod.POST)
以上方法只处理POST请求,当然也可以设置为支持多个HTTP请求方式
@RequestMapping(value="/hello",method={RequestMethod.POST,RequestMethod.GET})
如果没有指定method属性值,则默认可以处理任意的HTTP请求方式
二、@RequestParam注解
@RequestParam的属性如下
属性 | 类型 | 是否必要 |
name | String | 否 |
value | String | 否 |
required | boolean | 否 |
defaultValue | String | 否 |
例如:
@RequestMapping(value="/login")
public String login(
@ReuqestParam("username") String username,
@ReuqestParam("password") String password){
System.out.println("login GET方法被调用");
return "login";
}
可以通过以下请求
http://localhost:8080/SpringMVC/login?username=kshon&password=123
@ReuqestMapping和@ReuqestParam示例
在kshon.pojo包下创建用户对象
package kshon.pojo;
public class User{
private String loginName;
private String userName;
private String password;
public User(){}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
在kshon.controller包下创建用户控制器UserController
package kshon.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import kshon.pojo.User;
@Controller
@RequestMapping(value="/user")
public class UserController {
private static List<User> userlist;
public UserController(){
super();
userlist = new ArrayList<User>();
}
//支持GET
@RequestMapping(value="/register",method=RequestMethod.GET)
public String register(){
System.out.println("register GET方法被调用");
return "register";
}
//支持POST
@RequestMapping(value="/register",method=RequestMethod.POST)
public String register(
@RequestParam("loginName") String loginName,
@RequestParam("userName") String userName,
@RequestParam("password") String password){
System.out.println("register POST被调用");
User user = new User();
user.setLoginName(loginName);
user.setUserName(userName);
user.setPassword(password);
userlist.add(user);
return "login";
}
@RequestMapping(value="/login")
public String login(
@RequestParam("loginName") String loginName,
@RequestParam("password") String password,
Model model){
System.out.println("login被调用");
for(User user:userlist){
if(user.getLoginName().equals(loginName)&&user.getPassword().equals(password)){
model.addAttribute("user",user);
return "welcome";
}
}
return "login";
}
}
修改WEB-INF下的springmvc-config.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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<!-- spring自动扫描base-package下面的包或子包下面的java文件 -->
<context:component-scan base-package="kshon.controller,kshon.pojo" />
<!-- 配置annotation类型的处理映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!-- 配置annotation类型的处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/content/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
在WEB-INF/content创建注册、登录和欢迎页面
WEB-INF/content/register.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>
<form action="register" method="post">
用户名:<input type="text" name="loginName"/><br>
密码:<input type="password" name="password"/><br>
真是姓名:<input type="text" name="userName"/><br>
<input type="submit" value="注册"/>
</form>
</body>
</html>
WEB-INF/content/login.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>
<form action="login" method="post">
用户名:<input type="text" name="loginName"/><br>
密码:<input type="password" name="password"/><br>
<input type="submit" value="登录"/>
</form>
</body>
</html>
WEB-INF/content/welcome.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>
${requestScope.user.userName }
</body>
</html>
启动tomcat,打开浏览器输入localhost:8080/SpringMVC/register,访问注册页面
点击注册后,跳转到登陆页面
点击登录即可跳转到欢迎界面,出现注册时使用的真实名字