SpringMVC笔记三之RequestMapping注解和RequestParam注解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kshon/article/details/82432581

一、@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,访问注册页面

点击注册后,跳转到登陆页面

点击登录即可跳转到欢迎界面,出现注册时使用的真实名字

猜你喜欢

转载自blog.csdn.net/kshon/article/details/82432581