文章目录
- 前言
- 一、创建web工程
- 1.创建Web
- 2.已经有java项目,(修改成web项目)
- 二、添加依赖
- 三、创建实体类
- 四、创建mysql连接
- 四、创建jsp页面
- 四、servlet重写dopost
- 五、Dao层写查询方法
- 六、完成第四步
- 七、创建main.jsp
- 八、运行该工程
- 总结
- 下一篇链接,点击传送
前言
本次涉及到的技术jsp+MySQL+servlet ,我是按照执行顺序来的,熟练忽视顺序
一、创建web工程
1.创建Web
修改自己的jdk,并选中web工程!
起工程名字并指定保存路径,点击finsh完成创建
2.已经有java项目,(修改成web项目)
右键java项目,点击图中按键
选中web
成功添加
二、添加依赖
添加mysql依赖,换位置了,然后
我从之前的文章拿来的图,(懒得截屏,算了,原话拿过来吧)
完成这步jar包是不会依赖的。需要添加到工程,选中lib目录,找到下图的选项
三、创建实体类
好,这个时候该写实体类了,看看数据库的表;
创建实体类,(保存在bean的包中,java类一多,不分的话,自己就看不懂了,还找不到)
定义不要出错
生成无参函数,有参函数,get ,set方法。
无参函数
有参函数(这个应该叫全参了吧)
get set方法
四、创建mysql连接
书写Dao层
先把连接数据库的代码写了,这里是增删改查代码的公共部分,之后调用方法就行了。
package com.zy.Dao;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 类名:Conn
* 读书破万卷,下笔如有神
* 代码反行之,算法记于心
* 作者:劫恋李
* 日期:2021/7/5 12:32
* 版本:V1.0
*/
public class Conn{
public static String DRIVER="com.mysql.jdbc.Driver";
public static String URL="jdbc:mysql://localhost:3306/dsy";
public static String USERNAME="root";
public static String PASSWORD="root";
//获取数据库连接方法
//二
public static java.sql.Connection getcoon() throws ClassNotFoundException, SQLException {
Class.forName(DRIVER);
System.out.println("1.加载数据库成功!!");
java.sql.Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
System.out.println("2.连接数据库成功!!");
return connection;
}
//三
public static void close(java.sql.Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) throws SQLException {
if(resultSet!=null){
resultSet.close();
System.out.println("resultSet关闭成功");
}
if(preparedStatement!=null){
preparedStatement.close();
System.out.println("preparedStatement关闭成功");
}
if(connection!=null){
connection.close();
System.out.println("connection关闭成功");
}
}
}
这篇实现增删改的时候好多重复代码,精简一下,浓缩一下精华
四、创建jsp页面
在这里注意用到的是form表单,post方法,跳转链接是login
四、servlet重写dopost
jsp点击登录跳转到这里执行dopost方法,写到这,我发现写不下去了,我该执行sql语句了(调用查询方法),先把用户名和密码获取到。。。
@WebServlet("/Login")
public class login extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String tname = req.getParameter("aname");
String tpass = req.getParameter("apass");
System.out.println("用户名:" + tname + " 密码:" + tpass);
}
}
五、Dao层写查询方法
package com.zy.Dao;
import com.zy.bean.Users;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 类名:UserDao
* 读书破万卷,下笔如有神
* 代码反行之,算法记于心
* 作者:劫恋李
* 日期:2021/7/5 22:51
* 版本:V1.0
*/
public class UserDao {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
public Users selectU(String aname, String apass) throws SQLException, ClassNotFoundException {
Users users = null;
connection=Conn.getcoon();
String sql = "select * from users where uname=? and upassword=?";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, aname);
preparedStatement.setString(2, apass);
resultSet = preparedStatement.executeQuery();
while (resultSet != null && resultSet.next()) {
users = new Users(resultSet.getInt("uid"),
resultSet.getString("uname"),
resultSet.getString("upassword"),
resultSet.getString("usex"),
resultSet.getInt("uage"));
}
Conn.close(connection,preparedStatement,resultSet);
return users;
}
}
六、完成第四步
package com.zy.servlet;
import com.zy.Dao.UserDao;
import com.zy.bean.Users;
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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
/**
* 类名:login
* 读书破万卷,下笔如有神
* 代码反行之,算法记于心
* 作者:劫恋李
* 日期:2021/7/5 22:40
* 版本:V1.0
*/
@WebServlet("/Login")
public class login extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//运行后发现的错,乱码了,导致登录时候一直报错
req.setCharacterEncoding("utf-8");
String aname = req.getParameter("aname");
String apass = req.getParameter("apass");
System.out.println("用户名:" + aname + " 密码:" + apass);
Users users=new Users();
UserDao userDao=new UserDao();
try {
users = userDao.selectU(aname, apass);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
if (users == null) {
//登录失败
resp.setContentType("text/html;charset=gbk");
PrintWriter writer = resp.getWriter();
writer.write("<script>alert('用户名或密码错误');</script>");
//主要是这句,跳转login.jsp
writer.write("<script>window.location.href='login.jsp'</script>");
} else {
//登录成功
HttpSession session = req.getSession();
//存储在session
session.setAttribute("nowusers",users);
resp.sendRedirect("main.jsp");
}
}
}
失败跳转回原来的login.jsp
成功跳转到main.jsp
七、创建main.jsp
就写个成功看看成不成功!
八、运行该工程
总结
登录的执行顺序表,这个代码写的顺序不用按照图来,执行顺序是图的这样。
下一篇链接,点击传送