记住什么叫经典
使用jsp开发web项目,无疑是凭借其java安全性高而被大家认可,但是我们要实现java的另外一大特点:类与构造器的使用则可以使我们的web开发过程结构更加清晰,代码量更加减少。
简单的拿知识树的数据抽调来说一说怎么从数据流中抽调数据:
先要确认文件配置完成:在我的上一篇博客有详细介绍,所以我们这里直接做代码部分。
总共分为四个步骤:一.DBHelper类设计 util包下的 DBHelper.java
二.创建实体类 entity包下的 Items.java
三.创建业务逻辑 dao包下的ItemsDAO.java
四.创建页面层: WEB-INF下的index.jsp
顺带提醒一下:看看最后我给的意见 ,你会少走点弯路。
一.DBHelper类设计:
主要用于创建数据库连接对象并进行异常排除,注意要仔细看代码的注释
package util; import java.sql.Connection; import java.sql.DriverManager; public class DBHelper { private static final String driver = "com.mysql.jdbc.Driver"; //数据库驱动 //连接数据库的URL地址 private static final String url="jdbc:mysql://localhost:3306/knowledgetree?useUnicode=true&characterEncoding=UTF-8"; private static final String username="root";//数据库的用户名 private static final String password="1234";//数据库的密码 private static Connection conn=null; //静态代码块负责加载驱动 static { try { Class.forName(driver); } catch(Exception ex) { ex.printStackTrace(); } } //单例模式返回数据库连接对象 public static Connection getConnection() throws Exception { if(conn==null) { conn = DriverManager.getConnection(url, username, password); return conn; } return conn; } public static void main(String[] args) { try { Connection conn = DBHelper.getConnection(); if(conn!=null) { System.out.println("数据库连接正常!"); } else { System.out.println("数据库连接异常!"); } } catch(Exception ex) { ex.printStackTrace(); } } }
二.Items.java:创建实体类 items要对应数据库中的表名 创建的代码最好和数据库相应表中的属性名保持一致;
先看看数据库(为了让大家快速入手,数据库相当简单)
接上来是相对应的实体类,
package entity; //商品类 public class Items { private int id; private String book; // 商品编号 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getBook() { return book; } public void setBook(String book) { this.book = book; }
三.创建业务逻辑 ItemsDAO.java(又叫 导包 就是导入数据的啦)
package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import util.DBHelper; import entity.Items; //商品的业务逻辑类 public class ItemsDAO { // 获得所有的商品信息 public ArrayList<Items> getAllItems() { Connection conn = null; PreparedStatement stmt = null; ResultSet rs = null; ArrayList<Items> list = new ArrayList<Items>(); // 商品集合 try { conn = DBHelper.getConnection(); String sql = "select * from items;"; // SQL语句 stmt = conn.prepareStatement(sql); rs = stmt.executeQuery(); while (rs.next()) { Items item = new Items(); item.setId(rs.getInt("id")); item.setBook(rs.getString("book")); list.add(item);// 把一个商品加入集合 } return list; // 返回集合。 } catch (Exception ex) { ex.printStackTrace(); return null; } finally { // 释放数据集对象 if (rs != null) { try { rs.close(); rs = null; } catch (Exception ex) { ex.printStackTrace(); } } // 释放语句对象 if (stmt != null) { try { stmt.close(); stmt = null; } catch (Exception ex) { ex.printStackTrace(); } } } } }
四.创建页面层: WEB-INF下的index.jsp
万事俱全,只欠输出信息啦
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <%@ page import="entity.Items"%> <%@ page import="dao.ItemsDAO"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP ‘index.jsp‘ starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <% ItemsDAO itemsDao = new ItemsDAO(); ArrayList<Items> list = itemsDao.getAllItems(); Items item1=list.get(0); Items item2=list.get(1); %> <%=item1.getId() %> <%=item1.getBook() %> <br> <%=item2.getId() %> <%=item2.getBook() %> </body> </html>
看看效果;
哈哈哈哈是不是很无语 做了那么多工作才芥末点东西,,,是不是觉得我有点傻,,,直接在jsp文件里面写java代码不是写的更少吗;
来我给你详细说说,普通的动态网页都是将所有的代码放在html文件下,如果工作量很小还无所谓,但是你想想业务逻辑要是特别多,你能看出来吗?你能分清楚结构吗?你能快速查询bug? 不能,按照这种经典的模型我们才能更清楚的设置各个板块,jsp文件只需要调用他的功能就可以了而不是每次都要做一些链接数据库的重复事件,使用构造器在代码量和格局上更清晰,异常抛出更精确。 而且以后大项目都会通过这个途径保持项目的安全性,可靠性。所以你懂得找对方向才能走的更远。