【javaweb:Servlet】采用BeanUtils进行网站注册的Servlet

package indi.register;

import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.dbutils.QueryRunner;

import indi.domain.User;
import indi.utils.DataSourceUtils;

public class RegisterServletTest extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置request的解码方式为UTF-8,但是这只能针对post请求方式。如果是get请求方式请采用最基本的操作的方式(可同时用于get和post)
		//这操作方式就是
		//String str=new String(string.getBytes("iso8859-1"),"UTF-8");string假设是一个从request中获取的某个原本是中文的参数。
		//因为request默认是用iso8959-1进行解码,那么我们就用sio8859-1进行编码,再用UTF-8进行解码就可以获取网页端的中文字符!
		request.setCharacterEncoding("UTF-8");
		//1.从请求体中获取注册的信息
		Map<String, String[]> parameterMap = request.getParameterMap();
		
		//2.将注册的信息的Map集合运用BeanUtils进行封装打包成User对象。
		//BeanUtils工作原理:将Map中的数据根据key与实体的属性的对应关系进行封装
		//只要key的名字与实体的属性的名字一样,就自动封装到实体中。
		User user=new User();
		try {
			BeanUtils.populate(user, parameterMap);
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
		//3.还差个uid,所以手动封装一个uid,UUID的这个方法可以参数一个32位的随机数,然后中间有空格,最终形成了36位。
		user.setUid(UUID.randomUUID().toString());
		//4.将参数传递给一个业务处理方法
		try {
			regist(user);
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
		//5、认为注册成功跳转到登录页面
		//request.getContextPath()获取web应用的名称,便于修改工程名称后这个位置的名称不受影响。
		response.sendRedirect(request.getContextPath()+"/login.jsp");
	}
	
	public void regist(User user) throws SQLException {
		//1.创建QueryRuner对象
		QueryRunner qr=new QueryRunner(DataSourceUtils.getDataSource());
		//2.创建sql语句
		String sql="insert into user values(?,?,?,?,?,?,?,?,?,?)";
		//3.运用QueryRunner对象的update方法。
		Object[] object= {user.getUid(),user.getUsername(),user.getPassword(),user.getName(),user.getEmail(),
				null,user.getBirthday(),user.getSex(),null,null};
		qr.update(sql,object);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值