java web开发小记(2)

it2022-05-05  112

刚开始接触web开发感觉很难,别人的工程中N多jsp,还有servlet,xml文件。无从下手,其实,web很简单,简单到只有一个jsp。

1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <%@ page import="java.sql.*"%> 10 <body> 11 <% 12 Connection conn = null; 13 try { 14 Class.forName("com.mysql.jdbc.Driver"); // 加载数据库驱动,注册到驱动管理器 15 String url = "jdbc:mysql://localhost:3306/test_cal"; // 数据库连接字符串,前几项是固定的(对于本地服务器), //最后一项test_cal是数据库名,要与数据库对应。 16 String username = "root"; // 数据库用户名 17 String password = "123"; // 数据库密码, 安装mysql时自己设置的 18 conn = DriverManager.getConnection(url, username, password); 19 // 创建Connection连接 20 // 判断数据库连接是否为空 21 if (conn != null) { 22 out.println("数据库连接成功!"); // 输出连接信息 23 conn.close(); // 关闭数据库连接 24 } else { 25 out.println("数据库连接失败!"); // 输出连接信息 26 } 27 } catch (ClassNotFoundException e) { 28 e.printStackTrace(); 29 } catch (SQLException e) { 30 e.printStackTrace(); 31 } 32 %> 33 </body> 34 </html>

数据库就连好了(要先建数据库,这里是mysql)

之所以别人的有很多页,是因为基于功能分离的思想,比如这段代码,只能用一次,下次再用必须全部重写,一个项目肯定要多次链接数据库,因此将它封装到一个.java文件中·,留一个返回值作为接口,如:

package com.tuangou.dao; import java.sql.Connection; import java.sql.DriverManager; public class DBConnection { public static Connection getCon(){ Connection conn = null; try{ Class.forName("com.mysql.jdbc.Driver"); // 加载数据库驱动,注册到驱动管理器 String url = "jdbc:mysql://localhost:3306/test_cal"; // 数据库连接字符串 String username = "root"; // 数据库用户名 String password = "123"; // 数据库密码 conn = DriverManager.getConnection(url, username, password); }catch(Exception e){ e.printStackTrace(); } return conn; } }

,这样,每次要链接数据库,直接

     Connection conn = DBConnection.getCon();就可以省去重写的麻烦了。

此外,新手阶段web. xml不需要配置的,知道大致内容就行,你新建一个servlet,eclipse会自动配置。

数据库具体增删查改排推荐参考https://www.cnblogs.com/zilong882008/archive/2011/11/12/2246521.html

为了防止页面丢失,这里转载一下,以下是转载内容(如侵权,请联删)

JDBC 笔记1 利用Statement对数据库进行增删改查

 

准备工作

  1新建po类:User

  private int id; private String name; private String pwd;         set,get方法省略

   

 2  新建UserDao类,存放增删改查的相关方法,并且定义链接数据库的相关性信息(链接地址,用户名,密码);

public class UserDao { private static String jdbcDriver = "com.mysql.jdbc.Driver"; private static String jdbcUrl="jdbc:mysql://localhost:3306/homework"; private static String jdbcuser="root"; private static String jdbcpwd="123"; public boolean ChaRu(User user){ //插入数据 boolean flag=true; return flag; } public boolean XiuGai(User user){ //修改数据 boolean flag=true; return flag; } public boolean ShanChu(int id){ //删除数据 boolean flag=true; return flag; } public List<User> ChanZhao(){ // 查找数据 List<User> list= new ArrayList<User>(); return list; }}

      3 在数据库中创建表user,表中设置,id    int

                                                      name varchar(20)

                                                      pwd  varchar(20)

1 插入数据

在进行增删改查操作结束之后,一定要关闭conn,st,rs(仅查找时用到此对象)对象。

public boolean ChaRu(User user){ boolean flag=true; Connection conn= null; Statement st=null; String sql="insert into user(name,pwd) values('"+user.getName()+"','"+user.getPwd()+"')"; //插入数据的SQL语句 try { Class.forName(jdbcDriver); // 加载驱动器 conn=DriverManager.getConnection(jdbcUrl, jdbcuser, jdbcpwd); // 驱动利用驱动地址,数据库用户名,密码创建连接 st=conn.createStatement(); // 连接创建数据库操作对象,Statement是执行数据库的重要方法 int i=st.executeUpdate(sql); // Statement 对象利用executeUpdate()方法执行sql。 if(i==0){ flag=false; // 后面测试用到flag变量,前面执行sql语句,如果成功i不为0,true代表执行成功,false代表失败。 } } catch (ClassNotFoundException e) { //加载驱动器失败异常 // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { //创建链接失败异常 // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(conn!=null){ // 最后关闭连接 try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(st!=null){ //关闭Statement try { st.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return flag; // 返回flag }

 

 

public static void main(String[] args) { User user=new User(); //初始化 User类 对象user可以调用set,get方法设置或者获得数据。 UserDao userDao = new UserDao(); //初始化UserDao 类,可以调用增删改差的各种方法。 user.setName("lbzz"); // 设置姓名 user.setPwd("123"); // 设置密码 boolean flag=userDao.ChaRu(user); //执行插入操作,返回值赋给flag if(flag){ //根据flag判断执行是否成功。 System.out.println("插入成功"); }else{ System.out.println("插入失败"); } }

 

 

2 修改数据

public boolean XiuGai(User user){ boolean flag=true; Connection conn= null; Statement st= null; String sql= "update user set pwd='"+user.getPwd()+"' where name='"+user.getName()+"'"; System.out.println(sql); try { Class.forName(jdbcDriver); conn=DriverManager.getConnection(jdbcUrl, jdbcuser, jdbcpwd); st=conn.createStatement(); int i=st.executeUpdate(sql); if(i==0){ flag=false; } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(conn!=null){ try { conn.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(); } } } return flag; }

 

测试

public static void main(String[] args) { User user= new User(); UserDao userDao= new UserDao(); user.setName("lbzz"); user.setPwd("lbzz"); boolean flag=userDao.XiuGai(user); if(flag){ System.out.println("修改成功"); }else{ System.out.println("修改失败"); } }

 

3 删除记录

public boolean ShanChu(int id){ boolean flag=true; Connection conn= null; Statement st= null; String sql="delete from user where id="+id; try { Class.forName(jdbcDriver); conn=DriverManager.getConnection(jdbcUrl, jdbcuser, jdbcpwd); st=conn.createStatement(); int i=st.executeUpdate(sql); if(i==0){ flag=false; } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(conn!=null){ try { conn.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(); } } } return flag; }

测试

public static void main(String[] args) { UserDao userDao = new UserDao(); boolean flag= userDao.ShanChu(1); if(flag){ System.out.println("删除成功"); }else{ System.out.println("删除失败"); } }

 

4 查找数据

前面增删改,程序除了sql语句不同外,其余相差无几,查找与前三个程序略有不同。

public List<User> ChanZhao(){ // 查询出来的数据不止一条,所以使用集合 List<User> list= new ArrayList<User>(); // 对集合进行初始化 Connection conn= null; Statement st=null; ResultSet rs=null; // ResultSet 返回的是一个结果集 String sql="select * from user"; try { Class.forName(jdbcDriver); conn= DriverManager.getConnection(jdbcUrl, jdbcuser, jdbcpwd); st=conn.createStatement(); rs=st.executeQuery(sql); // 查询时使用 executeQuery()方法 while(rs.next()){ // 对结果集进行遍历 User user = new User(); user.setName(rs.getString("name")); // 需要查询什么就要像这样设置什么 list.add(user); //添加到集合 } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace();     }finally{ 关闭conn,st,rs     } return list; //返回list }

测试

public static void main(String[] args) { UserDao userDao = new UserDao(); List<User> list=userDao.ChanZhao(); for(User user:list){ System.out.println(user.getName()); } }    

转载于:https://www.cnblogs.com/jiangnanyanyuchen/p/8192395.html


最新回复(0)