JSPJDBC增删改查

前言:什么是JDBC
  维基百科的简介:

Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。

简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。通过封装,可以使开发人员使用纯Java API完成SQL的执行。

在这里插入图片描述
在这里插入图片描述

login.jsp

<body>
<!-- 读取cookie -->
<%
String username="";
String password="";
Cookie[] cookies=request.getCookies();
for(Cookie cookie:cookies){
	if("username".equals(cookie.getName())){
		username=cookie.getValue();
	}
	if("password".equals(cookie.getName())){
		password=cookie.getValue();
	}
}
%>
<form action="after.jsp"  method="get" > 
<div id="box" style="height:300px; width:400px; margin:auto; text-align:center">
	用户名:<input type="text"  name="username" value="<%=username %>"/><br><br>
	密码:<input type="password"   name="password" value="<%=password %>"/><br><br>
	<br><input type="submit" value="登录"/>
	<input type="reset" value="取消"/>
	</div>

 
</form>

</body>

after.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="java.sql.*" %>
<%@page import="com.soft1.dao.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head> 
<body>
<%
/* 处理post方式提交的中文乱码 */
//1.获取用户输入的用户名密码
	request.setCharacterEncoding("utf-8");
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    System.out.print("aaa"+username);
    /*万能密码 111'or'1'='1 */
   // 2.访问数据库,查询用户名密码
   //使用JavaBean访问数据库,
   	UserDao userDao=new UserDao();
   boolean t=userDao.login(username, password);
   if(t){
	 	/* 第一步:创建cookie对象 */
   	Cookie cookie1=new Cookie("username",username);
   	Cookie cookie2=new Cookie("password",password);
   	/* 第二部 设置有效期 */
   	cookie1.setMaxAge(60*60);
   	response.addCookie(cookie1);
   	response.addCookie(cookie2);
   	session.setAttribute("username", username);
   	session.setMaxInactiveInterval(1);/* 单位秒 */
     
 %>
 <jsp:forward page="success.jsp">
    <jsp:param name="username" value="<%=username%>"/>
 </jsp:forward>
 <%
  }
  else {
 %>
 <jsp:forward page="fail.jsp"/>
 <%
  }
   %>
   <% 
   /*  //遍历结果集
   while(rs.next()){
	   System.out.print(rs.getString("username"));
	   System.out.print(rs.getString("password"));
	   System.out.println();
   } */
  
   %>
  </body>
</html>

success.jsp

<body>
  <%
  request.setCharacterEncoding("utf-8");
  /*  String name = request.getParameter("username");  */
   String nam=(String)session.getAttribute("username");  
   out.println("欢迎你:" + nam);
  %>
</body>

fail.jsp

<body>
<form action="login.jsp" method="post">
<h1>登录失败!点击按钮重新登录!</h1>
<input type="submit" value="重新登录" >

</body>
  • com.soft1.dao(以类似网址倒叙命名)
    UserDao.java
package com.soft1.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import com.soft1.bean.User;

/*
 * 访问数据库的JavaBean
 * 实现了某种,我们称功能Bean
 */
public class UserDao {
	//成员变量

	//成员方法:方法定义的三要素:方法名,参数,返回值
	public boolean login(String username,String password) {
	
		   // 2.访问数据库,查询用户名密码
		   //(1).加载数据库驱动
		 ResultSet rs=null;
			Connection conn=null;
			boolean t=false;
			 PreparedStatement pt=null;
		   try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		   //(2).创建连接
		try {
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_shop","root","root");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		   //(3).创建语句容器
		   try {
			Statement st=conn.createStatement();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		   
		   //执行sql语句
		  /*  ResultSet  rs=st.executeQuery("select * from admin_info"); */
		/*    ResultSet sql=st.executeQuery("select * from admin_info where name='"+username+"' and pwd='"+password+"'");
		   System.out.println(sql);
		   ResultSet rs=st.executeQuery(sql); */
		   
		   //解决sql注入的方法,利用Pre..预处理的语句容器
		   //PreparedStatement允许在sql语句中使用占位符?
		  /* PreparedStatement优点;
		   1.解决sql注入
		   2.提高程序的可读性和可维护性
		   3.执行效率高 */
		   String sql="select * from admin_info where name=? and pwd=?";
		  
		try {
			pt = conn.prepareStatement(sql);

			   //执行sql语句之前需要给参数赋值
			   pt.setString(1, username);
			   pt.setString(2, password);
			   //执行sql语句
			    rs=pt.executeQuery();
			    if(rs.next()) {
			    	t=true;
			    }
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();			
		}
		 
		  
		 //关闭数据库的连接
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		 if(pt!=null) {
			 try {
				pt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		 }  
		  if(conn!=null) {
			  try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		  }
		  
		return t;
	}
	public ArrayList<User> queryAll() {
		// 2.访问数据库,查询用户名密码
		//(1).加载数据库驱动
		ResultSet rs=null;
		Statement st=null;
		Connection conn=null;
		ArrayList<User> users= new ArrayList<User>();
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//(2).创建连接
		
		try {
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_shop","root","root");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//(3).创建语句容器
		
		try {
			st = conn.createStatement();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//执行sql语句
		try {
			rs = st.executeQuery("select * from admin_info");
			//遍历结果集转存到users中
			while(rs.next()) {
				//一条记录对应一个User对象
				User  user=new User();
				user.setId(rs.getInt("id"));
				user.setUsername(rs.getString("name"));
				user.setPassword(rs.getString("pwd"));
				//需要把每个user添加到Usera中
				users.add(user);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		 //关闭数据库的连接
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		 if(st!=null) {
			 try {
				st.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		 }  
		  if(conn!=null) {
			  try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		  }
		
		return users;
	}
}


  • com.soft1.bean
    User.java
package com.soft1.bean;

import java.io.Serializable;

/*
 * 表示数据的JavaBean
 * 成员变量必须私有
 * 提供公开的set和get方法
 */
public class User implements Serializable{
	/**
	 *  成员变量根据表中的字段确定
	 */
	private static final long serialVersionUID = 109786136096189804L;
	private int id;
	private String username;
	private String password;
	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 getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: servlet、jspjdbc是Java Web开发中常用的技术。其中,servlet是Java Web应用程序中的一种Java类,用于处理HTTP请求和响应;jsp是Java Server Pages的缩写,是一种动态网页技术,可以将Java代码嵌入到HTML页面中;jdbc是Java数据库连接的缩写,用于连接和操作数据库。 增删改查是数据库操作中的四种基本操作,分别是插入数据、删除数据、更新数据和查询数据。在Java Web开发中,可以使用servlet、jspjdbc来实现这些操作,例如使用servlet处理HTTP请求,使用jsp生成动态网页,使用jdbc连接数据库并执行增删改查操作。 ### 回答2: Servlet, JSPJDBC是Java Web开发必须了解的三个核心技术。其中Servlet和JSP是基于服务端的技术,为用户提供服务,而JDBC是用于与数据库进行交互。 Servlet是一个Java类,用于处理来自客户端的HTTP请求并返回响应。Servlet通常用于构建Web应用程序,如登录、注册、上传文件、发送邮件等。Servlet允许开发人员创建动态Web页面并在浏览器和服务器之间传输数据。在Servlet中进行增删改查操作,需要使用JDBC连接数据库执行SQL语句。 JSP是一种用于创建动态Web页面的Java标准技术。与Servlet相比,JSP更注重于前端展示,可以将HTML、CSS、JavaScript、Java代码和数据源混合在一起构建Web页面。在JSP中进行增删改查操作,需要使用JDBC连接数据库执行SQL语句。 JDBC是Java语言连接数据库的基础。JDBC API提供了一组接口和类,用于连接和访问数据库。用JDBC进行数据库操作时,需要以下步骤:1.加载JDBC驱动程序;2.创建数据库连接;3.执行SQL语句;4.处理查询结果;5.关闭数据库连接。JDBC可以方便地完成数据库的增删改查等操作。 例如,在一个Java Web应用程序中,可以使用Servlet接收用户上传的文件,然后使用JDBC将文件信息保存到数据库中。在JSP中,可以编写界面,通过调用JavaBean和JDBC获取数据库中的数据并显示到页面上。通过学习Servlet、JSPJDBC,可以轻松构建Java Web应用程序。 ### 回答3: Servlet、JSPJDBC是Java Web开发中必不可少的三种技术,它们可以实现对数据库的增删改查操作。 首先,Servlet是一种Java技术,它能够处理来自客户端的HTTP请求并返回动态的HTML页面。Servlet通常会与JSP一起使用,完成数据的持久化操作。在MySQL等关系型数据库中,通过JDBC连接数据库、获取数据并将其封装在JavaBean中,然后将数据传输到JSP页面中进行渲染。 增加操作通常使用SQL的INSERT语句,通过JDBC实现将数据存储到数据库中。在Servlet中,将表单数据封装为JavaBean,然后通过JDBC将数据插入到数据库中。 删除操作通常使用SQL的DELETE语句,通过JDBC实现将指定数据从数据库中删除。在Servlet中,根据用户请求的数据查询数据库并删除数据。 修改操作通常使用SQL的UPDATE语句,通过JDBC实现对数据库中指定数据的修改。在Servlet中,根据用户请求的数据查询数据库并更新数据。 查询操作通常使用SQL的SELECT语句,通过JDBC实现对数据库中数据的查询。在Servlet中,根据用户请求的数据查询数据库并返回数据给JSP页面进行渲染。 总之,Servlet、JSPJDBC是Java Web开发中必备的技术,它们能够实现对关系型数据库的增删改查操作,为Web应用程序的开发提供了很大的便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值