Servlet学习之用户登录Demo——ServletLoginDemo(一)

实现的功能和目的:

  • 用Servlet实现从页面到数据库存储的增删改查,并做到不断调优。
  • 运用MVC的分层设计思想,做到学以致用
  1. 添加mysql-connector-java-3.1.7-bin.jar(MySql)ojdbc14.jar(Oracle)包到项目的WEB-INF的lib目录下
  2. 登录表单为index.jsp

MyEclipse布局如下:

创建数据库脚本:

  1. MySql数据库脚本

create table users(
    id INT auto_increment primary key COMMENT '设置主键自增',
    username VARCHAR(12) comment '姓名' ,
    password VARCHAR(8) comment '密码'
) comment '用户表';

         2.Oracle数据库脚本

drop table users;
create table users(
      id integer,
      username varchar2(10),
      password varchar2(10),
      constraint PK_USR primary key (id)   
);
comment on table users is
'用户表';
comment on column users.id is
'序号';
comment on column users.username is
'姓名';
comment on column users.password is
'密码';
create sequence seq_usr minvalue 1 start with 1 increment by 1;

create or replace trigger tr_tb_user
  before insert on users
  for each row
begin
select seq_usr.nextval into :new.id from dual;
end;
表的实体如下:

package com.lijy.user.model;
/**
 * @description: 实体类
 * 
 * @author : lijy
 * @date : 2017-3-18
 */
public class LoginUser {
	/**
	 * 用户名
	 */
	private String username;
	/**
	 * 密码
	 */
	private String password;
	
	//getters And setters
}
连接数据库的工具类:

package com.lijy.user.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
 * @description: 数据库工具类
 * 
 * @author : lijy
 * @date : 2017-3-18
 */
public class DBUtil {

    private static final String URL = "jdbc:mysql://localhost/imooc";
    private static final String USER = "root";
    private static final String PASSWORD = "root";

    private static Connection conn = null;
    static {
	try {
		Class.forName("com.mysql.jdbc.Driver");
		conn = DriverManager.getConnection(URL, USER, PASSWORD);
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	} catch (SQLException e) {
		e.printStackTrace();
	}
    }

    public static Connection getConnection() {
	return conn;
    }	
}
DAO层:

package com.lijy.user.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import com.lijy.user.model.LoginUser;
import com.lijy.user.util.DBUtil;
/**
 * @description: DAO层
 * 
 * @author : lijy
 * @date : 2017-3-18
 */
public class LoginUserDao {
	/**
	 * 增加用户
	 */
	public static void addUser(LoginUser lu) {
		Connection conn = DBUtil.getConnection();
		String sql = "" + "insert into users" + "(username,password)"
				+ "values(" + "?,?)";
		try {
			PreparedStatement ptmt = conn.prepareStatement(sql);
			ptmt.setString(1, lu.getUsername());
			ptmt.setString(2, lu.getPassword());
			ptmt.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
Service层(处理业务):

package com.lijy.user.service;

import com.lijy.user.dao.LoginUserDao;
import com.lijy.user.model.LoginUser;
/**
 * @description: 业务处理层
 * 
 * @author : lijy
 * @date : 2017-3-18
 */
public class LoginUserService {
	public static void addUser(LoginUser lu){
		LoginUserDao.addUser(lu);
	}
}

servlet层(控制器)

package com.lijy.user.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 com.lijy.user.model.LoginUser;
import com.lijy.user.service.LoginUserService;
/**
 * @description: 控制层
 * 
 * @author : lijy
 * @date : 2017-3-18
 */
public class LoginServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		LoginUser lu = new LoginUser();
		
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		System.out.println(username);
		System.out.println(password);
		lu.setUsername(username);
		lu.setPassword(password);
		LoginUserService.addUser(lu);
		
	}
}

web.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>LoginServlet</servlet-name>
  	<servlet-class>com.lijy.servlet.user.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>LoginServlet</servlet-name>
  	<url-pattern>/loginServlet</url-pattern>
  </servlet-mapping>
</web-app>

登录界面(index.jsp):

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>登录表单</title>
  </head>
  
  <body>
    <h2>登录表单</h2>
    <form action="loginServlet" method="post">
    	<label>用户名:</label>
    	<input type="text" name="username" value=""/>
    	<label>密码</label>
    	<input type="password" name="password" value=""/>
    	<label><input type="submit" value="登录"/></label>
    </form>
  </body>
</html>
番外篇:读取properties文件

package com.lijy.user.util;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
 * @description: 读取数据库配置工具类
 * 
 * @author : lijy
 * @date : 2017-3-18
 */
public class PropertiesUtil {
	private static Properties mConfig;
	public static String DRIVER;
	public static String URL;
	public static String USR;
	public static String PASSWORD;
	static{
		mConfig = new Properties();
		try {
			Class configClass = Class.forName("com.lijy.util.PropertiesUtil");
			InputStream is = configClass.getResourceAsStream("/jdbc.properties");
//			InputStream is = configClass.getResourceAsStream("jdbc.properties");在包内
			mConfig.load(is);
			System.out.println("加载JDBC文件成功!");
			DRIVER = mConfig.getProperty("jdbc.driver");
			URL = mConfig.getProperty("jdbc.url");
			USR = mConfig.getProperty("jdbc.usr");
			PASSWORD = mConfig.getProperty("jdbc.password");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}	
	}
	public static void main(String[] args) {
//		String driver = mConfig.getProperty("jdbc.driver");
		System.out.println(DRIVER);
		System.out.println(URL);
		System.out.println(USR);
		System.out.println(PASSWORD);
	}
}

jdbc.prpperties:

#---- MySQL数据库配置 ------#
#jdbc.driver=com.mysql.jdbc.Driver
#jdbc.url=jdbc:mysql://localhost/imooc
#jdbc.usr=root
#jdbc.password=root

#-----Oracle数据库配置 -----#
jdbc.driver=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:ORCL
jdbc.usr=scott
jdbc.password=root


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值