JSP的JavaBean标签用法(IDEA)

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中。

发布了59 篇原创文章 · 获赞 76 · 访问量 6909

猜你喜欢

转载自blog.csdn.net/qq_42013035/article/details/104076748