实现的功能和目的:
- 用Servlet实现从页面到数据库存储的增删改查,并做到不断调优。
- 运用MVC的分层设计思想,做到学以致用
MyEclipse布局如下:
创建数据库脚本:
- 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