jsp:useBean 创建一个对象 id class
jsp:setProperty给指定的对象属性赋值 name property value
jsp:getProperty取出指定的对象属值 name property
首先新建一个实体类,用来说明此动作标签的用法:
package com.qianqian.practice.entity;
/**
* 用户实体
*/
public class User {
private String userId;
private String userName;
private String userPassword;
private String userGender;
@Override
public String toString() {
return "User{" +
"userId='" + userId + '\'' +
", userName='" + userName + '\'' +
", userPassword='" + userPassword + '\'' +
", userGender='" + userGender + '\'' +
'}';
}
}
用法1:
进行简单的新建类对象,在index.jsp中使用如下代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>结果</title>
</head>
<body>
<%--实例化一个对象,id为对象标识,class为对象类地址--%>
<jsp:useBean id="user" class="com.qianqian.practice.entity.User"/>
<%--设置对象成员变量--%>
<jsp:setProperty name="user" property="userId" value="748387483"/>
<jsp:setProperty name="user" property="userName" value="阿狗"/>
<jsp:setProperty name="user" property="userPassword" value="12345"/>
<jsp:setProperty name="user" property="userGender" value="男"/>
<%--获取成员变量--%>
<jsp:getProperty name="user" property="userId"/><br>
<jsp:getProperty name="user" property="userName"/><br>
<jsp:getProperty name="user" property="userPassword"/><br>
<jsp:getProperty name="user" property="userGender"/><br>
</body>
</html>
运行服务器,访问index.jsp,结果如下:
很明显,以上用法,也可以使用new关键字示例化对象,再使用set/get方法即可替代
用法2(快速将表单数据封装为实体对象,并提交给Servlet做业务处理)
新建login.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<form method="post" action="index.jsp">
用户id<input type="text" name="userId"/><br>
用户名<input type="text" name="userName"/><br>
用户密码<input type="password" name="userPassword"/><br>
性别
<input type="radio" name="userGender" value="女" checked/>女
<input type="radio" name="userGender" value="男"/>男<br>
<input type="submit" value="提交">
</form>
</body>
</html>
将index.jsp中的内容改成如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head>
<title>结果</title>
</head>
<body>
<%--实例化一个对象,id为对象标识,class为对象类地址--%>
<jsp:useBean id="user" class="com.qianqian.practice.entity.User"/>
<%--可从表单中自动获取对应实体的所有属性,完成实体类对象的构建--%>
<jsp:setProperty name="user" property="*"/>
用户名id:<jsp:getProperty name="user" property="userId"/><br>
用户名:<jsp:getProperty name="user" property="userName"/><br>
用户密码:<jsp:getProperty name="user" property="userPassword"/><br>
性别:<jsp:getProperty name="user" property="userGender"/><br>
</body>
</html>
此处可能会出现中文乱码,简单的一个过滤器即可解决
EncodeFilter.java:
package com.qianqian.practice.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = "EncodeFilter",value = "/*")
public class EncodeFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
chain.doFilter(req, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}
运行tomcat服务器,输入信息,点击提交,结果如下
由此可以体现出JavaBean在处理表单对象的便捷优势,我们可以将表单信息封装成对象,转发到servlet处理:
index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head>
<title>结果</title>
</head>
<body>
<%--实例化一个对象,id为对象标识,class为对象类地址--%>
<jsp:useBean id="user" class="com.qianqian.practice.entity.User"/>
<%--可从表单中自动获取对应实体的所有属性,完成实体类对象的构建--%>
<jsp:setProperty name="user" property="*"/>
<%
request.setAttribute("userInstance", user);
request.getRequestDispatcher("/test").forward(request, response);
%>
</body>
</html>
TestServlet.java:
package com.qianqian.practice.servlet;
import com.qianqian.practice.entity.User;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "TestServlet", value = "/test")
public class TestServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
User user = (User) request.getAttribute("userInstance");
System.out.println(user.toString());
}
}
点击提交,控制台输出如下:
说明对象成功传到Servlet中。