jsp实现登录功能并且将数据传到数据库

1.新建一个Dynamic Web Project项目,导入要用的jar包,整体的框架如图所示:




2.新建一个数据库,并且创建一个表和几个字段。



3.UserDao.java代码:

package dao;

import java.sql.SQLException;

import domain.User;

public interface UserDao {

	void regist(User user) throws SQLException;

}

4.UserDaoImpl.java代码:

package dao;

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;

import utils.JdbcUtils;
import domain.User;

public class UserDaoImpl implements UserDao {

	@Override
	public void regist(User user) throws SQLException {
		QueryRunner queryRunner = new QueryRunner(JdbcUtils.getDataSource());
		String sql = "insert into user values (?,?,?,?,?,?,?)";
		Object[] params = { user.getUid(), user.getUsername(),
				user.getPassword(), user.getNickname(), user.getEmail(),
				user.getState(), user.getCode() };
		queryRunner.update(sql, params);
	}

}

5.User.java代码:

package domain;

public class User {

	private Integer uid;
	private String username;
	private String password;
	private String nickname;
	private String email;
	private Integer state;
	private String code;

	public Integer getUid() {
		return uid;
	}

	public void setUid(Integer uid) {
		this.uid = uid;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getNickname() {
		return nickname;
	}

	public void setNickname(String nickname) {
		this.nickname = nickname;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Integer getState() {
		return state;
	}

	public void setState(Integer state) {
		this.state = state;
	}

	public String getCode() {
		return code;
	}

	public void setCode(String code) {
		this.code = code;
	}

}

6.UserService.java代码:

package service;

import java.sql.SQLException;

import domain.User;

public interface UserService {

	void regist(User user) throws SQLException;

}

7.UserServiceImpl.java代码:

package service;

import java.sql.SQLException;

import dao.UserDao;
import dao.UserDaoImpl;
import domain.User;

public class UserServiceImpl implements UserService {

	@Override
	public void regist(User user) throws SQLException {
		UserDao userDao = new UserDaoImpl();
		userDao.regist(user);
	}

}

8.RegistServlet.java代码:

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import service.UserService;
import service.UserServiceImpl;
import utils.UUIDUtils;
import domain.User;

public class RegistServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;

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

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			request.setCharacterEncoding("utf-8"); 
			String username = request.getParameter("username");
			String password = request.getParameter("password");
			String nickname = request.getParameter("nickname");
			String email = request.getParameter("email");
			User user = new User();
			user.setUsername(username);
			user.setPassword(password);
			user.setNickname(nickname);
			user.setEmail(email);
			user.setState(0);
			String code = UUIDUtils.getUUID() + UUIDUtils.getUUID();
			user.setCode(code);
			UserService userService = new UserServiceImpl();
			userService.regist(user);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException();
		}
	}

}

9.JdbcUtils.java代码:

package utils;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JdbcUtils {

	private static DataSource ds = new ComboPooledDataSource();
	private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

	public static DataSource getDataSource() {
		return ds;
	}

	public static Connection getConnection() throws SQLException {
		Connection con = tl.get();
		if (con != null)
			return con;
		return ds.getConnection();
	}

	public static void beginTransaction() throws SQLException {
		Connection con = tl.get();
		if (con != null)
			throw new SQLException("已经开启了事务,不能重复开启!");
		con = ds.getConnection();
		con.setAutoCommit(false);
		tl.set(con);
	}

	public static void commitTransaction() throws SQLException {
		Connection con = tl.get();// 获取当前线程的事务连接
		if (con == null)
			throw new SQLException("没有事务不能提交!");
		con.commit();
		con.close();
		con = null;
		tl.remove();
	}

	public static void rollbackTransaction() throws SQLException {
		Connection con = tl.get();
		if (con == null)
			throw new SQLException("没有事务不能回滚!");
		con.rollback();
		con.close();
		con = null;
		tl.remove();
	}

	public static void releaseConnection(Connection connection)
			throws SQLException {
		Connection con = tl.get();
		if (connection != con) {
			if (connection != null && !connection.isClosed()) {
				connection.close();
			}
		}
	}
}

10.UUIDUtils.java代码:

package utils;

import java.util.UUID;

public class UUIDUtils {

	public static String getUUID() {
		return UUID.randomUUID().toString().replace("-", "");
	}

}

11.c3p0-config.xml代码:

<c3p0-config>  
    <default-config>  
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/regist_web  
        </property>  
        <property name="driverClass">com.mysql.jdbc.Driver</property>  
        <property name="user">root</property>  
        <property name="password">root</property>  
  
        <property name="checkoutTimeout">30000</property>  
        <property name="idleConnectionTestPeriod">30</property>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>  
    </default-config>  
</c3p0-config>  

12.web.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">
	<display-name>regist</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list>
	<servlet>
		<servlet-name>RegistServlet</servlet-name>
		<servlet-class>servlet.RegistServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>RegistServlet</servlet-name>
		<url-pattern>/RegistServlet</url-pattern>
	</servlet-mapping>
</web-app>

13.regist.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>用户注册的界面</h1>
	<form action="RegistServlet" method="post">
		<table width="600" border="1">
			<tr>
				<td>用户名:</td>
				<td><input type="text" name="username"/></td>
			</tr>
			<tr>
				<td>密码:</td>
				<td><input type="password" name="password"/></td>
			</tr>
			<tr>
				<td>昵称:</td>
				<td><input type="text" name="nickname"/></td>
			</tr>
			<tr>
				<td>邮箱:</td>
				<td><input type="text" name="email"/></td>
			</tr>
			<tr>
				<td colspan="2"><input type="submit" value="注册"/></td>
			</tr>
		</table>
	</form>
</body>
</html>

14.在浏览器输入http://localhost:8080/regist/regist.jsp运行得到:



  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值