关于servlet+java+mysql的一些

以下是我做的一个图书馆小项目。涉及的功能有用户的登录和注册,以及书本信息的增删改查。大概的组成就是:mysql+java+servlet.

1.先创建数据库,数据库有用户表,书本信息表,书本类型表。这里会涉及到主外键的关联,级联删除,这个在百度上面都可以查的到,就不写出来了。

2.创建javaweb项目。

先创建实体类

public class User {
private int id;
private String userName;
private String userPassword;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}

然后创建jdbc的工具类,



/**
 * 数据库连接工具类
 * @author z061419
 *
 */
public class DBUtil {
private static String USER="root";//数据库用户名
private static String PASSWORD="root";//数据库密码
private static String DB_URL="jdbc:mysql://localhost:3306/Theone"//数据库的路径
private static String DB_DRIVER="com.mysql.jdbc.Driver";//驱动
private static Connection conn=null;


public static Connection getConnection(){//获取connection连接对象
try {
Class.forName(DB_DRIVER);//获得数据库驱动
try {
conn=DriverManager.getConnection(DB_URL, USER, PASSWORD);//连接数据库
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("数据库连接异常");
e.printStackTrace();
}
return conn;



}

public static void closeConnection(Connection conn){//关闭数据库连接
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


}

再然后创建接口,这里我没有写接口的实现类,直接把sql语句写在了接口的方法里面,

/**
 * 用户接口类
 * @author z061419
 *
 */
public class UserDao {
User user=null;

private String sql="";
public User login(String userName,String userPassword){

String sql=" select * from user where userName= ? and userPassword= ?";
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;

try {
conn=DBUtil.getConnection();//获取数据库连接
pstmt=conn.prepareStatement(sql);//pstmt预处理对象处理sql语句
pstmt.setString(1, userName);//设置sql语句的第一个问号的值
pstmt.setString(2, userPassword);//设置第二个问号
rs=pstmt.executeQuery();//得到查询出的数据的结果集
if(rs.next()){//如果结果集里有数据
user=new User();//创建一个用户类对象,
user.setUserName(rs.getString("userName"));//把结果集的数据用户名保存在用户类对象里面
user.setUserPassword(rs.getString("userPassword"));

}
conn.close();
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return user;//这个方法返回的是用户对象

}
//删除用户
public int delete(int id){
int delete =0;
PreparedStatement pstmt=null;
Connection conn=null;

String sql="delete from user where id=?";

try {
conn=DBUtil.getConnection();
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, id);
delete=pstmt.executeUpdate();//sql语句执行后对数据库影响的行数


} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}



return delete;//返回的是对数据库影响的行数

}
}

最后创建一个servlet类,来处理界面传过来的数据。这里是传递的方式是post,

package com.accp.servlet;


import java.io.IOException;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import com.accp.dao.UserDao;


import com.accp.entity.User;


public class UserServlet extends HttpServlet{


@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(req, resp);
}


@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//获取界面的输入的数据
String userName=req.getParameter("userName");
String userPassword=req.getParameter("userPassword");

UserDao userDao=new UserDao();//创建接口类对象,

User user=userDao.login(userName, userPassword);//调用接口类的查询用户方法,参数是上面获得的界面输入的数据
if(user!=null){//上面的方法得到的用户对象不为空,说明数据库有该用户,则说明登录成功
req.getRequestDispatcher("show.jsp").forward(req, resp);//页面跳转到成功页面
}else{
req.getRequestDispatcher("login.jsp").forward(req, resp);//
}


}

}

这是登录界面

<h3>用户登陆</h3>
    <form action="UserServlet" method="post">
    <table >
    <tr>
    <td>用户名:</td>
    <td><input type="text" name="userName"/></td>
   
    </tr>
    <tr>
    <td>密码:</td>
    <td><input type="password" name="userPassword"/></td>
    </tr>
    <tr>
    <td><input type="submit" values="登陆"/></td>
   
    </tr>
   
   
    </table>
    
    </form>

这是web.xml配置文件

<servlet>
  <servlet-name>login</servlet-name>//名字随便取,和下面的名字一致就行
  <servlet-class>com.accp.servlet.UserServlet</servlet-class>//处理数据的类的位置,ctrl+鼠标,点击可跳转则正确
  </servlet>
  <servlet-mapping>
  <servlet-name>login</servlet-name>
  <url-pattern>/UserServlet</url-pattern>//访问的路径
  </servlet-mapping>

最后的最后说一下,还要导入数据库连接的jar包,这个网上可以下载。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值