一、构建web项目
在选中的项目下建Module子模块
选中Module子模块双击“Shift”键,搜索Add Framework,点击图中所示选项。
勾选Web,点击ok,
展开子模块会发现多了一个web包,将web包拖动到src中的main文件夹下并改名为webapp
配置子模块的pom.xml文件,点击右上角“m”标志加载配置文件。
<dependencies>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
</dependencies>
注意:配置的Mysql的版本号要与你电脑上Mysql的大版本号一致(你的Mysql:8......,那么你配置的Mysql也应该是8......)
加载完毕后,在webapp包在建一个login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>用户登录系统</h3>
<form method="post" action="login">
账号:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
<input type="submit" value="登 录">
</form>
</body>
</html>
在main-->resourcse中建一个jdbc.properties文件
#mysql8??
//mysql 8要带cj
driverClass = com.mysql.cj.jdbc.Driver
#???
//数据库账号名
username = root
#?????
//密码
password = root
#???url
//路径以及编码格式
url = jdbc:mysql://localhost:3306/servlet?CharacterEncoding=UTF-8
在main-->java-->建一个com.by包-->建一个util包-->建一个Config类,配置jdbc
代码如下:
package com.by.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class Config {
private static String username;
private static String password;
private static String url;
private static String driverClass;
static{
//特殊Hashtable
Properties prop = new Properties();
try {
//读取类路径下的配置文件
InputStream is = Config.class.getClassLoader().getResourceAsStream("jdbc.properties");
//InputStream in = new FileInputStream("JavaDemo10/config/jdbc.properties");
//加载配置文件内容
prop.load(is);
// acquire the properties from file
username = prop.getProperty("username");
password = prop.getProperty("password");
url = prop.getProperty("url");
driverClass = prop.getProperty("driverClass");
// register the driver
if(driverClass != null && url != null && username != null && password != null){
//加载驱动
Class.forName(driverClass);
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
/**
* @description: 获取连接
* @param
* @return: java.sql.Connection
*/
public static Connection getConnection() throws SQLException {
Connection con = null;
try{
con = DriverManager.getConnection(url,username,password);
}catch (Exception e){
e.printStackTrace();
}
return con;
}
/**
* @description: 释放资源
* @param con
* @param stat
* @param res
*/
public static void close(Connection con, Statement stat , ResultSet res) throws SQLException {
if(con != null){
con.close();
}
if (stat != null) {
stat.close();
}
if (res != null) {
res.close();
}
}
}
com.by包-->建一个util包-->建一个JdbcUtil类
package com.by.util;
import java.sql.*;
/**
* @Description: jdbc封装工具类
* @Version: 1.0
*/
public class JdbcUtils {
private static Connection con = null;
private static Statement st = null;
private static ResultSet rs = null;
private static PreparedStatement ps = null;
/**
* @description: 通用更新封装
* @param sql sql语句
* @param params 传入多参,也可以以数组形式传入
* @return: java.sql.ResultSet
*/
public static int update(String sql,Object ...params) throws SQLException {
int flag = 0;
try {
con = Config.getConnection();
ps = con.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
ps.setObject(i+1,params[i]);
}
System.out.println(ps.toString());
//flag = ps.executeUpdate();
flag = ps.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
Config.close(con,ps,null);
}
return flag;
}
/**
* @description: 通用查询
* @param sql
* @param params
* @return: java.sql.ResultSet
*/
public static ResultSet query(String sql,Object ...params) throws SQLException {
try {
con = Config.getConnection();
ps = con.prepareStatement(sql);
for (int i = 0; i < params.length; i++) {
ps.setObject(i + 1, params[i]);
}
System.out.println(ps.toString());
rs = ps.executeQuery();
} catch (Exception e) {
e.printStackTrace();
}
return rs;
}
}
com.by包-->建一个PoJo包管理用户属性
package com.by.PoJo;
public class User {
private Integer id;
private String username;
private String password;
private String sex;
private Integer age;
private String address;
public User() {
}
public User(String username, String password, String sex, Integer age, String address) {
this.username = username;
this.password = password;
this.sex = sex;
this.age = age;
this.address = address;
}
public User(Integer id, String username, String password, String sex, Integer age, String address) {
this.id = id;
this.username = username;
this.password = password;
this.sex = sex;
this.age = age;
this.address = address;
}
}
com.by包-->建一个servlet包-->建一个LoginServlet类
LoginServlet类中代码:
package com.by.servlet;
import com.by.PoJo.User;
import com.by.service.UserService;
import com.by.service.impl.UserServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
private UserService userservice=new UserServiceImpl();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
//编码格式
req.setCharacterEncoding("UTF-8");
//获取前台数据
String username = req.getParameter("username");
String password = req.getParameter("password");
//创建user类对象
User user=userservice.login(username,password);
//判断用户对象是否正确 以及跳转页面
if (user!=null){
resp.sendRedirect("main.jsp");
}else {
resp.sendRedirect("login.jsp");
}
}catch (Exception e){
e.printStackTrace();
}
}
}
再配置web.xml文件
<servlet>
<servlet-name>login</servlet-name>
//servlet路径
<servlet-class>com.by.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
com.by包-->建一个service包-->UserService接口和impl包-->在impl包中实现接口
package com.by.service;
import com.by.PoJo.User;
import java.sql.SQLException;
public interface UserService {
User login(String username, String password) throws SQLException, Exception;
}
package com.by.service.impl;
import com.by.PoJo.User;
import com.by.dao.UserDao;
import com.by.dao.impl.UserDaoImpl;
import com.by.service.UserService;
import java.sql.SQLException;
/**
*
*/
public class UserServiceImpl implements UserService {
private UserDao userdao=new UserDaoImpl();
@Override
public User login(String username, String password) throws Exception {
//业务。。。。。。。。
return userdao.login(username,password);
}
}
com.by包-->建一个dao包-->UserDao接口和impl包-->在impl包中实现接口
package com.by.dao;
import com.by.PoJo.User;
import java.sql.SQLException;
public interface UserDao {
User login(String username, String password) throws SQLException, Exception;
}
package com.by.dao.impl;
import com.by.PoJo.User;
import com.by.dao.UserDao;
import com.by.util.JdbcUtils;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*
*/
public class UserDaoImpl implements UserDao {
@Override
public User login(String username, String password) throws Exception {
String sql="select * from user where username=? and password=?";
ResultSet rs = JdbcUtils.query(sql, username, password);
rs.next();
return new User(rs.getInt("id"),
rs.getString("username"),
rs.getString("password"),
rs.getNString("sex"),
rs.getInt("age"),
rs.getString("address"));
}
}
项目整体基本完成,运行即可。