从0到1使用汤姆猫(tomcat)和servlet实现登录和注册
——Javee
注:这里使用的编辑器是idea
这里我之前创建了一个空的项目,所以直接点解添加模块即可:
这里选择Java EE的web应用,点击下一步
这里名字自己取,然后下一步
这里选择依赖,再点右边的+,再选择第一个Jars或目录
这里选择自己汤姆猫(tomcat)和ojdbc即可,最后点击确定即可
我们先在web目录下新建两个文件reg.html(注册)和login.html(登录)
代码如下:
<!--login.html-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登录</title>
</head>
<body>
<div id="background" style="width: 400px; height: 700px; margin: auto; padding-top: 100px;">
<form action="login.do" method="post">
<input type="text" name="name" placeholder="用户名"
style="width: 300px; height:40px; border-radius: 5px; margin:auto; font-size: 20px;" />
<input type="text" name="pass" placeholder="密码"
style="width: 300px; height:40px; border-radius: 5px; margin:auto; font-size: 20px;" />
<input type="submit" value="登录"
style="padding: 10px 20px; color:white; background-color: #0084FF; border-radius: 5px; border:none; margin:0 110px; font-size: 20px;" />
</form>
</div>
</body>
</html>
<!--reg.html-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>注册</title>
</head>
<body>
<div id="background" style="width: 400px; height: 700px; margin: auto; padding-top: 100px;">
<form action="reg.do" method="post">
<input type="text" name="name" placeholder="用户名"
style="width: 300px; height:40px; border-radius: 5px; margin:auto; font-size: 20px;" />
<input type="text" name="pass" placeholder="密码"
style="width: 300px; height:40px; border-radius: 5px; margin:auto; font-size: 20px;" />
<input type="submit" value="注册"
style="padding: 10px 20px; color:white; background-color: #0084FF; border-radius: 5px; border:none; margin:0 110px; font-size: 20px;" />
</form>
</div>
</body>
</html>
接着在src目录创建三个包dao、model、util
编写文件dao->Operate.java
//Operate.java
package dao;
import model.User;
import util.DBLink;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* @Author Javee
* @Date 2019/9/3 19:27
* @Description 对用户提交的数据进行响应
*/
public class Operate extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponse res)
throws UnsupportedEncodingException {
//System.out.println("service ok...");
req.setCharacterEncoding("utf-8");
res.setContentType("text/html;charset=utf-8");
String uri = req.getRequestURI();
uri = uri.substring(uri.lastIndexOf("/"), uri.lastIndexOf("."));
if(uri.equals("/reg")){
String name = req.getParameter("name");
String pass = req.getParameter("pass");
User user = new User();
user.setName(name);
user.setPass(pass);
Connection con = null;
try {
con = DBLink.getCon();
String sql = "insert into t_user values (seq_t_user.nextval, ?, ?, to_date(sysdate))";
PreparedStatement ps = con.prepareStatement(sql);
ps.setObject(1, user.getName());
ps.setObject(2, user.getPass());
ps.executeUpdate();
ps.close();
DBLink.close(con);
PrintWriter o = res.getWriter();
o.println("注册成功!");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
DBLink.close(con);
} catch (Exception e) {
e.printStackTrace();
}
}
}else if(uri.equals("/login")){
Connection con = null;
String name = req.getParameter("name");
String pass = req.getParameter("pass");
User user = new User();
user.setName(name);
user.setPass(pass);
try {
con = DBLink.getCon();
String sql = "select count(1) num from t_user where name = ? and pass = ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setObject(1, user.getName());
ps.setObject(2, user.getPass());
ResultSet rs = ps.executeQuery();
PrintWriter o = res.getWriter();
while(rs.next()){
if(rs.getInt("num") == 1){
o.println("登录成功!");
}else{
o.println("用户名或密码错误!");
}
}
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
编写model->User.java
//User.java
package model;
/**
* @Author Javee
* @Date 2019/9/3 19:29
* @Description
*/
public class User {
int id;
String name;
String pass;
String Date;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getDate() {
return Date;
}
public void setDate(String date) {
Date = date;
}
}
编写util->DBLink.java
//DBLink.java
package util;
import java.sql.Connection;
import java.sql.DriverManager;
/**
* @Author Javee
* @Date 2019/9/3 19:29
* @Description
*/
public class DBLink {
public static Connection getCon() throws Exception {
Connection con = null;
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "Javee", "123456");
return con;
}
public static void close(Connection con) throws Exception {
if(con != null){
con.close();
}
}
}
修改web->WEB-INF->web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>user</servlet-name>
<servlet-class>dao.Operate</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>user</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
在Oracle创建表
CREATE TABLE t_user
(
ID NUMBER(4),
NAME VARCHAR2(20),
pass VARCHAR2(20),
regdate DATE
);
CREATE SEQUENCE seq_t_user;
编辑配置
名称自己取或者默认就可以,点击修复,在点击确定,然后点击云心给,就可以啦~
在浏览器操作就可以啦~
点击提交就可以注册或者登录了~
到这里我们今天的项目就完成啦~
具体代码见顶部下载链接~~~~~~~~~~~~~