工具:1.开发工具 IDEA
2.几个Jar包
链接:https://pan.baidu.com/s/1jvEQ4zVAVzoxZGHweGgWxA
提取码:o9rk
一、定个小目标:
servlet:我所理解的,其是一个前端界面和后台服务器交互的中间媒介,不管准确不准确,我暂时只需要知道这么多,这个小项目,其实要做成的效果是比较单纯的:
1.做一个前端界面,用户实现注册与登录的功能,用到【用户名、密码】仅此而已;
2.本地创建一个数据库,可以是mysql,新建的数据库可以事先存放一些数据,用于验证“登录”的功能。粗外,可以通过前端输入新的【用户名、密码】,输入完成之后,可以到数据库查看,是否已经存入了数据库,如果存入了,则“注册”功能已经实现,否则,该功能就实现失败了。
二.准备工作:
新建一个Java Enterprise项目 ,选择Web Application ,同时点选下方的web.xml, 自己命名;
WEB-INF是一个受保护的文件夹,不能直接访问。
1.我们在这个目录下新建(补充)一个lib 文件夹(存放所需文件、所需第三方jar包),文件夹指的是 directory;
2.一个classes 文件夹(用于确认当前整个项目的java文件输出编译之后的class文件所放位置),文件夹指的是 directory;
3.配置输出路径、依赖路径:
点击File - Project Structure - Modules - 会看到【Soueces Paths Dependencies】
配置路径:将path路径定位到刚才上面新建的classes文件夹中;
配置依赖路径:点击右上角 "+",选择 JARS or directories,之后将路径定位到我们上面新建的lib文件夹。
之后会出来一个页面让让选择内容,我们点选 Jar Directory.
4.将上面的文件提取之后,将lib压缩包解压,把里面五个文件夹复制一下,粘贴到上面我们刚建立好的lib文件夹中。
5.将提取到的文件utils解压,把解压后的lib文件夹直接复制到【src】目录下
到目前,项目的准备工作已完毕。
三.准备servlet内容
在【src】下,1.新建一个pacakge,命名为 com.qfedu.a_servlet
2.在com.qfedu.a_servlet下面新建一个 java class ,名命名为TestServlet ,回车,写代码:对应登录功能
package com.qfedu.a_servlet;
import util.BaseDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
/*
1. 继承HttpServlet
2. 使用注解 @WebServlet 告知Tomcat服务器,当前程序是一个Servlet程序
同时会设计一些属性
当前Servlet程序对应资源名 TestServlet
*/
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 1. 修改请求对象的编码集
req.setCharacterEncoding("UTF-8");
// 2. 通过指定的请求属性名,获取对应数据
String name = req.getParameter("name");
String password = req.getParameter("password");
// 3. 展示数据过程
System.out.println("Name:" + name);
System.out.println("Password:" + password);
// 4. 准备SQL语句
String sql = "select * from javaee1911.user where name = ? and password = ?";
Object[] params = {name, password};
/*
5. BaseDao数据库工具类, 得到一个数组
{id=1, name="骚磊", password="123456"}
*/
Object[] query = new BaseDao().query(sql, params);
if (query.length != 0) {
resp.sendRedirect("success.html");
} else {
resp.sendRedirect("index.html");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
在【src】下,
1.新建一个pacakge,命名为 com.qfedu.a_servlet
2.在com.qfedu.a_servlet下面新建一个 java class ,命名为RegisterServlet ,回车,写代码:对应注册功能
package com.qfedu.a_servlet;
import util.BaseDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1. 修改请求编码集
req.setCharacterEncoding("utf-8");
// 2. 从HTML页面中获取对应提交的数据
String name = req.getParameter("name");
String password = req.getParameter("password");
// 3. 准备SQL语句
String sql = "insert into user(name, password) value(?, ?)";
Object[] params = {name, password};
// 4. 执行SQL语句
int update = new BaseDao().update(sql, params);
System.out.println("Affected Rows : " + update);
// 5. 重定向!浏览器完成一个重新加载页面过程
if (1 == update) {
// 注册成功,回主页
resp.sendRedirect("index.html");
} else {
// 注册失败,回到注册页面
resp.sendRedirect("register.html");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
四.实现一个老老实实、朴实无华的前端界面
因为我们不要求太精美的前端界面,所以呢,这里只要求能满足基本的功能需要就行,至于精美、绚丽,那就交给UI和前端工程师去弄吧。
在【Web】目录下,注意不是WEB-INF目录下,新建一个html文件,命名为 login.html ,这是实现登录功能界面
写入代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>登陆</title>
</head>
<body>
<form action="TestServlet" method="post">
<span>姓名:</span><input type="text" name="name"> <br>
<span>密码:</span><input type="password" name="password"> <br>
<input type="submit" value="提交">
</form>
</body>
</html>
在【Web】目录下,注意不是WEB-INF目录下,新建一个html文件,命名为 register.html ,这是实现注册功能界面
写入代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="RegisterServlet" method="post">
<span>姓名:</span><input type="text" name="name"> <br>
<span>密码:</span><input type="password" name="password"> <br>
<input type="submit" value="提交">
</form>
</body>
</html>
五.数据库层面:
打开mysql,新建立一个需要用到的数据库:
数据库的名字自己名命,我的数据库名字是【hpu_test】,表名是【user】
表项分别是【id】【name】【password】
事先写入一条信息,用于验证“登录”功能,也即如果用户在前端界面输入的用户名和密码能够和数据库的信息进行匹配,那么就表明此次登录成功。我这里的信息图下:
下面会用到上面提取到的文件的第二个c3p0-config.xml,
将c3p0-config.xml复制一下,粘贴到【src】目录下面,并且按照要求修改自己的数据库信息:
重点是数据库的用户名、密码、以及自己新建数据库的名字。
确保上面步骤操作完全正确之后,就可以跑起来这个项目,进行验证了。
-----------------------------------------------------
后续我如果有新的发现,新的改进,会通过分割线,进行补充完善,共勉。