欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > JavaWeb开发(十六)实战-生鲜后台管理系统(三)BeanUtils介绍、Servlet的抽取

JavaWeb开发(十六)实战-生鲜后台管理系统(三)BeanUtils介绍、Servlet的抽取

2025/5/22 2:26:46 来源:https://blog.csdn.net/qq_36158551/article/details/145266377  浏览:    关键词:JavaWeb开发(十六)实战-生鲜后台管理系统(三)BeanUtils介绍、Servlet的抽取

1. 生鲜后台管理系统-BeanUtils的使用

1.1. BeanUtils介绍

在这里插入图片描述

   BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。使用第三方工具,需要导入jar包。
  (1)下载BeanUtils的jar :commons-beanutils 、commons-logging,需要同时下载两个jar包。(BeanUtils依赖Logging的jar包 )
  (2)将beanutils和logging的 jar包复制 工程/WebContent/WEB-INF/lib
在这里插入图片描述

BeanUtils.setProperty(bean, name,value);

  其中bean是指你将要设置的对象,name指的是将要设置的属性(写成”属性名”),value(从配置文件中读取到到的字符串值)。

BeanUtils.copyProperties(bean,name,value);

和上面的方法是完全一样的。使用哪个都可以ConvertUtils.register(Converter converter,…;,当需要将String数据转换成引用数据类型(自定义数据类型时),需要使用此方法实现转换。

BeanUtils.populate(bean, Map);

  其中Map中的key必须与目标对象中的属性名相同,否则不能实现拷贝。BeanUtils.copyProperties(newObject,old0bject),实现对象的拷贝。

1.1. BeanUtils下载地址

  (1)commons-beanutils-1.9.2.jar
  下载地址:http://commons.apache.org/proper/commons-beanutils/download beanutils.cgi
  (2)commons-logging.jar
  下载地址:https://comons.apache.org/proper/commons-logging/download logging.cgi

1.2. 步骤

  RegisterServlet

        String id = request.getParameter("id");String name = request.getParameter("name");String password = request.getParameter("password");String email = request.getParameter("email");User user=new User();//方式1:分别将属性设置到对象中//user.setName(name);//user.setPassword(password);//user.setEmail(email);try {//方式2:BeanUtils分别将属性设置到对象中//(BeanUtils.setProperty(bean, name,value);// 其中bean是指你将要设置的对象,name指的是将要设置的属性// (写成”属性名”),value(从配置文件中读取到到的字符串值)。BeanUtils.setProperty(user,name,name);//方式3:BeanUtils将属性的map集合封装到对象中//其中Map中的key必须与目标对象中的属性名相同,否则不能实现拷贝。//BeanUtils.copyProperties(newObject,old0bject),实现对象的拷贝Map<String,String[]> parameterMap =request.getParameterMap();BeanUtils.populate(user,parameterMap);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}UserService userService=new UserService();boolean register = userService.register(user);if (register) {response.sendRedirect(request.getContextPath()+"/login.jsp");}else {response.setContentType("text/html;charset=utf-8");response.getWriter().write("注册失败");}
package com.zzs.szsd.web;import com.zzs.szsd.bean.User;
import com.zzs.szsd.service.UserService;
import org.apache.commons.beanutils.BeanUtils;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;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;@WebServlet(name = "RegisterServlet",urlPatterns = "/register")
public class RegisterServlet extends HttpServlet {protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String id = request.getParameter("id");String name = request.getParameter("name");String password = request.getParameter("password");String email = request.getParameter("email");User user=new User();//方式1:分别将属性设置到对象中//user.setName(name);//user.setPassword(password);//user.setEmail(email);try {//方式2:BeanUtils分别将属性设置到对象中//(BeanUtils.setProperty(bean, name,value);// 其中bean是指你将要设置的对象,name指的是将要设置的属性// (写成”属性名”),value(从配置文件中读取到到的字符串值)。BeanUtils.setProperty(user,name,name);//方式3:BeanUtils将属性的map集合封装到对象中//其中Map中的key必须与目标对象中的属性名相同,否则不能实现拷贝。//BeanUtils.copyProperties(newObject,old0bject),实现对象的拷贝Map<String,String[]> parameterMap =request.getParameterMap();BeanUtils.populate(user,parameterMap);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}UserService userService=new UserService();boolean register = userService.register(user);if (register) {response.sendRedirect(request.getContextPath()+"/login.jsp");}else {response.setContentType("text/html;charset=utf-8");response.getWriter().write("注册失败");}}protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {}
}

2. 生鲜后台管理系统-Servlet的抽取

2.1. Servlet的抽取

  (1)创建UserServlet
在这里插入图片描述

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html lang="en">
<head><meta charset="UTF-8"/><title>Document</title><script type="text/javascript" src="static/js/jquery-1.9.0.min.js"></script><script type="text/javascript" src="static/js/login.js"></script><link href="static/css/login2.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h1>生鲜管理系统<sup>V2017</sup>
</h1><div class="login" style="margin-top: 50px;"><div class="header"><div class="switch" id="switch"><a class="switch_btn_focus" id="switch_qlogin"href="javascript:void(0);" tabindex="7">快速登录</a> <aclass="switch_btn" id="switch_login" href="javascript:void(0);"tabindex="8">快速注册</a><div class="switch_bottom" id="switch_bottom"style="position: absolute; width: 64px; left: 0px;"></div></div></div><div class="web_qr_login" id="web_qr_login"style="display: block; height: 235px;"><!--登录--><div class="web_login" id="web_login"><div class="login-box"><div class="login_form"><form action="user"accept-charset="utf-8" id="login_form" class="loginForm"method="post"><input type="hidden" name="method" value="login"/><input type="hidden" name="did" value="0"/> <input type="hidden"name="to" value="log"/><div class="uinArea" id="uinArea"><label class="input-tips" for="u">帐号:</label><div class="inputOuter" id="uArea"><input type="text" id="u" name="name" value="${cookie.name.value}" class="inputstyle"/></div></div><div class="pwdArea" id="pwdArea"><label class="input-tips" for="p">密码:</label><div class="inputOuter" id="pArea"><input type="password" id="p" name="password" value="${cookie.password.value}" class="inputstyle"/></div></div><div style="margin-left: 45px;margin-top: 10px"><input style="vertical-align: middle;" type="checkbox" value="yes" name="remember">记住密码<br/></div><div style="padding-left: 50px; margin-top: 20px;"><input type="submit" value="登 录" style="width: 150px;"class="button_blue"/></div></form></div></div></div><!--登录end--></div><!--注册--><div class="qlogin" id="qlogin" style="display: none;"><div class="web_login"><form name="form2" id="regUser" accept-charset="utf-8"action="register" method="post"><input type="hidden" name="method" value="regeister"/><input type="hidden" name="to" value="reg"/><input type="hidden" name="did" value="0"/><ul class="reg_form" id="reg-ul"><div id="userCue" class="cue">快速注册请注意格式</div><li><label for="user" class="input-tips2">用户名:</label><div class="inputOuter2"><input type="text" id="user" name="name" maxlength="16"class="inputstyle2"/></div></li><li><label for="passwd" class="input-tips2">密码:</label><div class="inputOuter2"><input type="password" id="passwd" name="password" maxlength="16"class="inputstyle2"/></div></li><li><label for="passwd2" class="input-tips2">确认密码:</label><div class="inputOuter2"><input type="password" id="passwd2" name="password2" maxlength="16"class="inputstyle2"/></div></li><li><label for="email" class="input-tips2">邮箱:</label><div class="inputOuter2"><input type="email" id="email" name="email" class="inputstyle2"/></div></li><li><div class="inputArea"><input type="submit" id="reg"style="margin-top: 10px; margin-left: 85px;"class="button_blue" value="同意协议并注册"/> <a href="#" class="zcxy"target="_blank.">注册协议</a></div></li><div class="cl"></div></ul></form></div></div><!--注册end-->
</div>
</body>
</body>
</html>

  (2)创建UserServlet(封装注册、登录)

package com.zzs.szsd.web;import com.zzs.szsd.bean.User;
import com.zzs.szsd.service.UserService;
import org.apache.commons.beanutils.BeanUtils;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Map;@WebServlet(name = "UserServlet",urlPatterns = "/user")
public class UserServlet 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 {String method = request.getParameter("method");if ("login".equals(method)){login(request,response);}else if("register".equals(method)){register(request,response);}}public void login(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String name = request.getParameter("name");String password = request.getParameter("password");UserService userService=new UserService();User user=null;try {//调用service中登录方法user = userService.login(name, password);} catch (SQLException e) {e.printStackTrace();}if (user!=null){//登录成功后我们再获取是否保存密码的信息,如果失败了保存密码就没有意义了String remember = request.getParameter("remember");if (remember!=null&&remember.equals("yes")){// 将用户名和密码加入到cookie中Cookie nameCookie = new Cookie("name", name);Cookie passwordCookie = new Cookie("password", password);//设置cookie的有效期 防止销毁nameCookie.setMaxAge(60*10);passwordCookie.setMaxAge(60*10);//将cookie发送给客户端保存response.addCookie(nameCookie);response.addCookie(passwordCookie);}request.getSession().setAttribute("user",user);//登录成功跳转生鲜种类列表界面response.sendRedirect(request.getContextPath()+"/category?method=getCategoryList&currentPage=1&currentCount=10");}else {//登录失败提示response.setContentType("text/html;charset=utf-8");response.getWriter().write("用户登录失败");}}public void register(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String id = request.getParameter("id");String name = request.getParameter("name");String password = request.getParameter("password");String email = request.getParameter("email");User user=new User();//方式1:分别将属性设置到对象中//user.setName(name);//user.setPassword(password);//user.setEmail(email);try {//方式2:BeanUtils分别将属性设置到对象中//(BeanUtils.setProperty(bean, name,value);// 其中bean是指你将要设置的对象,name指的是将要设置的属性// (写成”属性名”),value(从配置文件中读取到到的字符串值)。BeanUtils.setProperty(user,name,name);//方式3:BeanUtils将属性的map集合封装到对象中//其中Map中的key必须与目标对象中的属性名相同,否则不能实现拷贝。//BeanUtils.copyProperties(newObject,old0bject),实现对象的拷贝Map<String,String[]> parameterMap =request.getParameterMap();BeanUtils.populate(user,parameterMap);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}UserService userService=new UserService();boolean register = userService.register(user);if (register) {response.sendRedirect(request.getContextPath()+"/login.jsp");}else {response.setContentType("text/html;charset=utf-8");response.getWriter().write("注册失败");}}
}

2.2. Servlet的抽取-创建基类

  (1)创建BaseServlet基类

package com.zzs.szsd.web;
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;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
@WebServlet(name = "BaseServlet")
public class BaseServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req,HttpServletResponse resp)throws ServletException, IOException {req.setCharacterEncoding("utf-8");try {// 1 获取方法名字String method = req.getParameter("method");// 2 获取到当前对象的字节码文件Class clazz=this.getClass();// 3 拿到字节码对象中的方法Method clazzMethod = clazz.getMethod(method,HttpServletRequest.class, HttpServletResponse.class);// 4 执行方法clazzMethod.invoke(this,req,resp);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}}
}

  (2)修改UserServlet继承BaseServlet

package com.zzs.szsd.web;import com.zzs.szsd.bean.User;
import com.zzs.szsd.service.UserService;
import org.apache.commons.beanutils.BeanUtils;import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Map;@WebServlet(name = "UserServlet",urlPatterns = "/user")
public class UserServlet extends BaseServlet {
//    protected void doPost(HttpServletRequest request,
//                          HttpServletResponse response)
//            throws ServletException, IOException {
//        doGet(request,response);
//    }
//
//    protected void doGet(HttpServletRequest request,
//                         HttpServletResponse response)
//            throws ServletException, IOException {
//        String method = request.getParameter("method");
//        if ("login".equals(method)){
//            login(request,response);
//        }else if("register".equals(method)){
//            register(request,response);
//        }
//    }public void login(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String name = request.getParameter("name");String password = request.getParameter("password");UserService userService=new UserService();User user=null;try {//调用service中登录方法user = userService.login(name, password);} catch (SQLException e) {e.printStackTrace();}if (user!=null){response.sendRedirect(request.getContextPath()+"/category-list.jsp");}else {//登录失败提示response.setContentType("text/html;charset=utf-8");response.getWriter().write("用户登录失败");}}public void register(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {String id = request.getParameter("id");String name = request.getParameter("name");String password = request.getParameter("password");String email = request.getParameter("email");User user=new User();//方式1:分别将属性设置到对象中//user.setName(name);//user.setPassword(password);//user.setEmail(email);try {//方式2:BeanUtils分别将属性设置到对象中//(BeanUtils.setProperty(bean, name,value);// 其中bean是指你将要设置的对象,name指的是将要设置的属性// (写成”属性名”),value(从配置文件中读取到到的字符串值)。BeanUtils.setProperty(user,name,name);//方式3:BeanUtils将属性的map集合封装到对象中//其中Map中的key必须与目标对象中的属性名相同,否则不能实现拷贝。//BeanUtils.copyProperties(newObject,old0bject),实现对象的拷贝Map<String,String[]> parameterMap =request.getParameterMap();BeanUtils.populate(user,parameterMap);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}UserService userService=new UserService();boolean register = userService.register(user);if (register) {response.sendRedirect(request.getContextPath()+"/login.jsp");}else {response.setContentType("text/html;charset=utf-8");response.getWriter().write("注册失败");}}}

在这里插入图片描述
  JavaWeb开发实战-生鲜后台管理系统-BeanUtils介绍、Servlet的抽取

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词