java crud_完整的CRUD——javaweb

本文详细介绍了使用Java进行CRUD操作的实现,包括基于Servlet和JDBC的数据库连接、分页展示、增删改查功能。核心代码展示了如何处理用户请求、数据库连接、预编译SQL语句以及数据的展示。通过DbManager类封装数据库操作,Pagination类处理分页信息,实现了完整的CRUD功能。
摘要由CSDN通过智能技术生成

1,总体架构

index是进去的页面,

可以跳转Insert的增加页面,operatePerson是根据传进来的URI来判断增删改查的页面,

DbManager.java是封装的数据库操作类, Pagination.java是页脚的信息栏

2,index页面

final int pageSize = 5;//一页显示多少纪录

int pageNum = 1;//当前页数

int pageCount = 1;//总页数

int recordCount = 0;//总记录数

for(; resultSet.next();){

out.println("

");Stringname=resultSet.getString("name");

out.println("

" +name+ "");

out.println("

" +resultSet.getString("age")+ "");

out.println("

" +resultSet.getString("sex")+ "");

out.println("

删除");

out.println("

修改");

out.println("

");

}%>

, recordCount, request.getRequestURI())%>

画出表,包括页脚,(上面的form其实没有什么用

分页技术使用数据库的 select * from person limit ?,?   ----意思是从哪条开始(不包括这一条)的 n条记录

问号使用preparedStatement语句来实现

代码:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

My JSP 'index.jsp' starting page

final int pageSize = 5;//一页显示多少纪录

int pageNum = 1;//当前页数

int pageCount = 1;//总页数

int recordCount = 0;try{//当前页数

pageNum = Integer.parseInt(request.getParameter("pageNum"));

System.out.println("0000:" +pageNum);

}catch(Exception e){}

String sql= null;

Connection con= null;

PreparedStatement preparedStatement= null;

ResultSet resultSet= null;try{

sql= "select count(*) from person";

recordCount=DbManager.getCount(sql);

pageCount= (recordCount + pageSize - 1) /pageSize;int startRecord = (pageNum - 1) *pageSize;

sql= "select * from person limit ?,?";

con=DbManager.getConnection();

preparedStatement=con.prepareStatement(sql);

DbManager.setParams(preparedStatement, startRecord, pageSize);

resultSet=preparedStatement.executeQuery();%>

新建一个

for(; resultSet.next();){

out.println("

");

String name= resultSet.getString("name");

out.println("

" + name + "");

out.println("

" + resultSet.getString("age") + "");

out.println("

" + resultSet.getString("sex") + "");

out.println("

删除");

out.println("

修改");

out.println("

");

}%>

, recordCount, request.getRequestURI())%>

out.println("0001" +e1.getMessage());

}finally{if (resultSet != null)

resultSet.close();if (preparedStatement != null)

preparedStatement.close();if (con != null)

con.close();

}%>

View Code

2,operatePerson.jsp页面

我写的时候没有使用DbManager类,在里面的增删改都用了原始的操作

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");//一定要

String action = request.getParameter("action");//先接受是什么操作

增:request.getPararmeter("name...")通过这个方法来获得表传进来的数据

删:request.getPararmeter("name")通过这个方法来获得uri传进来的paramer

改:request.getPararmeter("name")通过这个方法来获得uri传进来的paramer,(我设计的时候没有完善好,默认他们不能有同名,所以不能改名字

request.setAttribute("name", resultSet.getString("name")//把传进来的参数穿进去request里面,用forward转向到insert的页面在,那样insert可以从request里面提取数据(同时也把"save"信息传过去),和真正的插入有了区别

在insert会判断是save的传递,把数据传回来operate页面,做真正的修改

3,insert页面

会根据传过来的action判断是插入还是修改,以此来修改uri,form表给的提交方式要改为post ,因为这样表格的内容就不能形象uri的传递,

value="${name}"的时候,在修改的时候会显示值,注意:el表达式,${name}或者${requestScope.name}而不是${request.name}

4,Pagination.java

页脚,用StringBuffer类,append字符串

5,DbManager.java

数据库管理类

public static Connection getConnection(String dbName, String userName,String password)

public static Connection getConnection()                          //获得con对象

public static void setParams(PreparedStatement preparedStatement,Object... params)     //把preparedStatement放进去,发若干个参数,preparedStatement.setInt.....之类的

public static int executeUpdate(String sql)

public static int executeUpdate(String sql, Object... params)               //对上面方法的封装,穿进去sql的字符串就行了

源码:

DbManager

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagetestPackage;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.sql.Types;public classDbManager {public static Connection getConnection() throwsSQLException,

ClassNotFoundException {return getConnection("test", "kooing", "");

}public staticConnection getConnection(String dbName, String userName,

String password)throwsSQLException, ClassNotFoundException {

String url= "jdbc:mysql://localhost:3306/" +dbName;

Class.forName("com.mysql.jdbc.Driver");

Connection con=DriverManager.getConnection(url);returncon;

}public static voidsetParams(PreparedStatement preparedStatement,

Object... params)throwsSQLException {for (int i = 1; i <= params.length; i++) {

Object param= params[i - 1];if (param == null) {

preparedStatement.setNull(i, Types.NULL);

}else if (param instanceofInteger) {

preparedStatement.setInt(i, (Integer) param);

}else if (param instanceofString) {

preparedStatement.setString(i, (String) param);

}

}

}public static int executeUpdate(String sql) throwsSQLException,

ClassNotFoundException {return executeUpdate(sql, newObject[] {});

}public static intexecuteUpdate(String sql, Object... params)throwsSQLException, ClassNotFoundException {

Connection con= null;

PreparedStatement preparedStatement= null;try{

con=getConnection();

preparedStatement=con.prepareStatement(sql);

setParams(preparedStatement, params);returnpreparedStatement.executeUpdate();

}finally{if (preparedStatement != null)

preparedStatement.close();if (con != null)

con.close();

}

}public static int getCount(String sql) throwsSQLException,

ClassNotFoundException {

Connection con= null;

Statement statement= null;

ResultSet rs= null;try{

con=getConnection();

statement=con.createStatement();

rs=statement.executeQuery(sql);

rs.next();return rs.getInt(1);

}finally{if (rs != null)

rs.close();if (statement != null)

statement.close();if (con != null)

con.close();

}

}

}

View Code

Pagination

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagetestPackage;public classPagination {public static String getPagination(int pageNum, intpageCount,intrecordCount, String pageUrl) {

String url= pageUrl.contains("?") ? pageUrl : pageUrl + "?";if (!url.endsWith("?") && !url.endsWith("&")) {

url+= "&";

}

StringBuffer buffer= newStringBuffer();

buffer.append("第 " + pageNum + "/" + pageCount + "页,共" +recordCount+ "纪录。");

buffer.append(pageNum== 1 ? "第一页" : "第一页");//buffer.append(pageNum == 1 ? "第一页" : "第一页");

buffer.append(pageNum== 1 ? "上一页" : "上一页");

buffer.append(pageNum== pageCount ? "下一页" : "下一页");

buffer.append(pageNum== pageCount ? "最后一页" : "最后一页");returnbuffer.toString();

}

}

View Code

index

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

My JSP 'index.jsp' starting page

final int pageSize = 5;//一页显示多少纪录

int pageNum = 1;//当前页数

int pageCount = 1;//总页数

int recordCount = 0;try{//当前页数

pageNum = Integer.parseInt(request.getParameter("pageNum"));

System.out.println("0000:" +pageNum);

}catch(Exception e){}

String sql= null;

Connection con= null;

PreparedStatement preparedStatement= null;

ResultSet resultSet= null;try{

sql= "select count(*) from person";

recordCount=DbManager.getCount(sql);

pageCount= (recordCount + pageSize - 1) /pageSize;int startRecord = (pageNum - 1) *pageSize;

sql= "select * from person limit ?,?";

con=DbManager.getConnection();

preparedStatement=con.prepareStatement(sql);

DbManager.setParams(preparedStatement, startRecord, pageSize);

resultSet=preparedStatement.executeQuery();%>

新建一个

for(; resultSet.next();){

out.println("

");

String name= resultSet.getString("name");

out.println("

" + name + "");

out.println("

" + resultSet.getString("age") + "");

out.println("

" + resultSet.getString("sex") + "");

out.println("

删除");

out.println("

修改");

out.println("

");

}%>

, recordCount, request.getRequestURI())%>

out.println("0001" +e1.getMessage());

}finally{if (resultSet != null)

resultSet.close();if (preparedStatement != null)

preparedStatement.close();if (con != null)

con.close();

}%>

View Code

operate

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

String basePath= request.getScheme() + "://"

+ request.getServerName() + ":" +request.getServerPort()+ path + "/";%>

response.setCharacterEncoding("UTF-8");

String action= request.getParameter("action");

String sql= null;if ("add".equals(action)) {

String name= request.getParameter("name");int age = Integer.parseInt(request.getParameter("age"));

String sex= request.getParameter("sex");

sql= "insert into person values('" + name + "','" +age+ "','" + sex + "')";try{

Class.forName("com.mysql.jdbc.Driver");

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "kooing", "");

Statement sm=con.createStatement();int resultSet =sm.executeUpdate(sql);

out.println(sql);

}catch(Exception e) {

}

}if ("delete".equals(action)) {

String name= request.getParameter("name");

System.out.println(name);

sql= "delete from person where name = '" + name + "'";try{

Class.forName("com.mysql.jdbc.Driver");

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "kooing", "");

Statement sm=con.createStatement();int resultSet =sm.executeUpdate(sql);

out.println(sql);

}catch(Exception e) {

}

}if ("edit".equals(action)) {try{

String name= request.getParameter("name");

sql= "select * from person where name ='" + name + "'";

Class.forName("com.mysql.jdbc.Driver");

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "kooing", "");

Statement sm=con.createStatement();

ResultSet resultSet=sm.executeQuery(sql);

out.println(sql);

resultSet.next();

request.setAttribute("name", resultSet.getString("name"));

request.setAttribute("age", resultSet.getString("age"));

request.setAttribute("sex", resultSet.getString("sex"));

request.setAttribute("action", action);

request.getRequestDispatcher("Insert.jsp").forward(request,

response);

}catch(Exception e) {

}

}if("save".equals(action)){

String name= request.getParameter("name");int age = Integer.parseInt(request.getParameter("age"));

String sex= request.getParameter("sex");

sql= "update person set "

+ "name='" +name+ "',age='" +age+ "',sex='" + sex + "' where name ='" + name +"'";

System.out.println(sql);

Class.forName("com.mysql.jdbc.Driver");

Connection con= DriverManager.getConnection("jdbc:mysql://localhost:3306/test","kooing", "");

Statement sm=con.createStatement();int result =sm.executeUpdate(sql);

}%>

My JSP 'operatePerson.jsp' starting page

主页

View Code

insert

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

My JSP 'Insert.jsp' starting page

myAction= myAction == null? "add" : "save";

System.out.println(myAction);

System.out.println(request.getAttribute("name"));

System.out.println(request.getAttribute("age"));

System.out.println(request.getAttribute("sex"));%>

姓名
年龄
性别

View Code

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值