2.点击next,填写项目名,最好不要使用默认的,最后点击finish,项目就创建完成。
3.为方便理清逻辑,在src下建立一个packge,笔者命名com.lc,
在此packge下建立五个packge
dao:与数据库有直接的操作
model:定义实体类
service:负责处理业务逻辑
servlet:拦截业务请求
util:工具类
注意:此处建立packge时会有一点小问题,如图一
图一
此时直接建立另一个包,将名字中的model删掉
4.考虑到要实现的demo要求,在web/WEB-INF下建立一个directory,取名libs
5.在libs中添加两个jia包,添加后,右击jar包,选择“add as library”,使其可以展开
6.添加完毕后,打开file=》project structure,在artifacts里面可以看到添加成功的两个包,截图如下,若没有正常出现,界面下方会有信息提示,选择“Fix”,选择“add…to artifacts”即可
7.首先编写数据库连接函数及关闭函数,此部分在util工具类中进行(此部分可参考笔者写的 “创建JDBC应用程序及其简易封装” 一文,网址:https://blog.csdn.net/lcscy/article/details/107468053):
代码如下:
public class DBUtil {
public static Connection getConnetion() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/dis?useSSL=false",
"root","999");
return connection;
}
public static void closeAll(ResultSet rs, Statement stat, Connection conn) throws SQLException {
if(rs!=null)
rs.close();
if(stat!=null)
stat.close();
if(conn!=null)
conn.close();
}
}
8.Model目录下的实体类设计
对于我们所要实现的登陆界面来说,首先必要的就是user,每一个user都包括了id、name、password,age等基本属性,在设置时,设置其为私有,因此需要添加getter and setter函数,方便之后进行调用(可用快捷键进行添加,windows是alt+insert,macOS是command+N)
public class User {
private String name;
private int id;
private String password;
private String age;
public void setName(String name) {
this.name = name;
}
public void setId(int id) {
this.id = id;
}
public void setPassword(String password) {
this.password = password;
}
public void setAge(String age) {
this.age = age;
}
public String getAge() {
return age;
}
public String getPassword() {
return password;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", id=" + id +
", password='" + password + '\'' +
", age='" + age + '\'' +
'}';
}
}
9.因为要实现login功能,所以在dao中实现数据库操作,搜寻用户输入的用户名在数据库中是否存在,并比对密码是否正确(此处数据库操作也可参考笔者写的 “创建JDBC应用程序及其简易封装” 一文,网址:https://blog.csdn.net/lcscy/article/details/107468053))
代码如下:
public class UserDao {
public User selectByName(String name){
ResultSet rs=null;
Connection conn=null;
PreparedStatement pstmt=null;
DBUtil util=new DBUtil();
User user = new User();
try{
conn = util.getConnetion();
pstmt=conn.prepareStatement("select * from user where name = ?");
pstmt.setString(1,name);
rs=pstmt.executeQuery();
while (rs.next()){
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setAge(rs.getString("age"));
user.setPassword(rs.getString("password"));
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try{
util.closeAll(rs,pstmt,conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
}
10.完成数据库操作后,就可以开始写业务逻辑部分了,在service处,创建UserService类
代码如下:
public class UserService {
UserDao userDao=new UserDao();
public User selectByName(String name){
return userDao.selectByName(name);
}
}
11.index.jsp中实现对界面进行简单的设计,包括了两个输入框,以及提交按钮:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>登录界面</h1>
<form action="/login" method="post">
name:<input name="name" type="text">
password:<input name="password" type="password">
<input type="submit" value="登录">
</form>
</body>
</html>
12.在serlvet目录处,新建类LoginServlet,servlet有两种实现方式,笔者使用继承HttpServlet类,其中的数据,有界面传输过去
代码如下:
public class LoginServlet extends HttpServlet {
UserService userService=new UserService();
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String password = req.getParameter("password");
User user = userService.selectByName(name);
if(password.equals(user.getPassword())){
resp.getWriter().write("success");
System.out.println("success");
}else{
resp.getWriter().write("failed");
System.out.println("failed");
}
}
}
13.接下来配置web.xml,其中包括了请求路径
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.lc.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
完成后就可以运行了,会自动弹出登录界面,填写对应数据后点击登录即可
注意:在数据库的表中需要填上与dao中User类相应的列,否则数据库查询时会出问题。