示例
下面是一个使用Servlet API向Request域对象共享数据的完整示例:
代码语言:javascript复制@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(method = RequestMethod.GET)
public String test(HttpServletRequest request) {
// 向Request域对象中添加一个属性
request.setAttribute("username", "John");
return "test";
}
@RequestMapping(value = "/result", method = RequestMethod.POST)
public String result(HttpServletRequest request) {
// 从Request域对象中获取属性的值
String username = (String) request.getAttribute("username");
// 输出属性的值
System.out.println("Username: " username);
return "result";
}
}
在上面的代码中,我们定义了一个TestController类,并使用@Controller注解将它标记为一个控制器。我们在控制器中定义了两个请求处理方法,它们分别对应/test和/test/result请求。在test方法中,我们向Request域对象中添加了一个名为"username"的属性,它的值为"John"。在result方法中,我们通过调用request.getAttribute("username")方法获取Request域对象中的"username"属性的值,并输出它的值。
下面是对应的JSP页面:
test.jsp
代码语言:javascript复制<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/test/result" method="post">
<p>
<label>Username:</label>
<input type="text" name="username" value="${username}">
</p>
<p>
<input type="submit" value="Submit">
</p>
</form>
</body>
</html>
result.jsp
代码语言:javascript复制<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Result</title>
</head>
<body>
<p>Username: ${username}</p>
</body>
</html>
在上面的JSP页面中,我们使用EL表达式来获取Request域对象中的"username"属性的值,并在页面上显示它的值。
当我们访问/test时,将会显示test.jsp页面,它包含一个文本框和一个提交按钮。我们在文本框中输入"Tom",点击提交按钮后,将会提交表单到/test/result请求。在result.jsp页面上将会显示"Username: Tom"。