java web开发小记(2)

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

 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

之因此别人的有不少页,是由于基于功能分离的思想,好比这段代码,只能用一次,下次再用必须所有重写,一个项目确定要屡次连接数据库,所以将它封装到一个.java文件中·,留一个返回值做为接口,如:mysql

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; } }

,这样,每次要连接数据库,直接web

     Connection conn = DBConnection.getCon();就能够省去重写的麻烦了。sql

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

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

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

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

 

准备工做post

  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());
}
}
复制代码
相关文章
相关标签/搜索