SpringMVC通过servletAPI向request域对象共享数据(二)

2023-05-13 11:35:13 浏览数 (1)

示例

下面是一个使用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"。

0 人点赞