• java web开发小记(2)


    刚开始接触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());
    }
    }
    复制代码
     
     
  • 相关阅读:
    解决:Google代码achartengine曲线代码报错问题(转)
    操作SQLite数据库
    让服务器iis支持.apk文件下载的设置方法
    怎么在手机上查看sqlite db
    Android 3D滑动菜单完全解析,实现推拉门式的立体特效
    android自动更新程序,安装完以后就什么都没有了,没有出现安装成功的界面的问题
    那些年不错的Android开源项目
    PL/SQL Developer 连接新数据库
    Oracle 连接 Visual Studio 的工具
    利用SQLiteOpenHelper来管理SQLite数据库 (转)
  • 原文地址:https://www.cnblogs.com/jiangnanyanyuchen/p/8192395.html
Copyright © 2020-2023  润新知