最为经典jsp 实现Web 工程 第七周作业

  记住什么叫经典

使用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文件只需要调用他的功能就可以了而不是每次都要做一些链接数据库的重复事件,使用构造器在代码量和格局上更清晰,异常抛出更精确。  而且以后大项目都会通过这个途径保持项目的安全性,可靠性。所以你懂得找对方向才能走的更远。

时间: 2024-11-05 23:36:19

最为经典jsp 实现Web 工程 第七周作业的相关文章

2017-2018-2 1723《程序设计与数据结构》第七周作业 总结

作业地址 第七周作业:https://edu.cnblogs.com/campus/besti/CS-IMIS-1723/homework/1806 (本周博客直接在作业界面打了分,可供随时查看) 提交情况如图:(严域俊这次忘交,请下次注意) 作业要求 教材第9章 (1)阅读9.1-9.5章节 (2)代码托管到[email protected],参考一下使用开源中国托管代码 (3)完成课后自测题,并参考答案学习 (4)完成课后练习题 (5)完成程序设计项目:至少完成PP9.1.PP9.3. (6

C语言--第七周作业评分(5班)

作业链接:https://edu.cnblogs.com/campus/hljkj/CS2017-5/homework/1304 一.评分要求 要求1 完成PTA第七周所有题,总共两次题,每次12.5分.若存在抄袭现象,倒扣此题所有分数(25分). 要求2 2道题,每道题对应10分(总计20分). (1)实验代码(1分). (2)设计思路:算法描述(1分),流程图(2分). (3)调试过程中遇到的问题及解决办法(3分). (4)本题PTA提交列表(3分). 要求3 按照要求2将其他题目的代码.解

20179311《网络攻防实践》第七周作业

1.Windows操作系统的基本结构 分为运行于处理器特权模式的操作系统内核,以及运行在处理器非特权模式的用户空间代码.采用宏内核模式来进行构架,这使得任意的内核模块或设备驱动程序都可能破坏其他内核模块数据,这种宏内核机制也使得Windows操作系统容易遭受以驱动方式植入内核的Rootkit的危害,为了避免这类攻击,最新的Windows7缺省要求所以请求安装进入内核执行的设备驱动程序都需要经过数字签名,这能够有效地提升内核的安全性.同时,由于用户态程序对操作系统内核特权代码和数据没有直接访问的权

《网络攻防实践》第七周作业

MarkdownPad Document html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label

2017-2018-2 20179305《网络攻防技术》第七周作业

教材学习 windows系统架构 Windows操作系统内核的基本模块 Windows执行体 Windows内核体 设备驱动程序 硬件抽象层 Windows窗口与图形界面接口内核实现代码 系统支持进程 环境子系统服务进程 服务进程 用户应用软件 核心子系统DLL Windows的虚拟内存空间 系统核心内存区间 用户内存区间 Windows网络组件模块 各种网卡硬件的设备驱动程序 NDIS库及miniport驱动程序 TDI传输层,也称为网络协议驱动 网络API DLL及TDI客户端 网络应用程序

网络攻防第七周作业

教材第七章总结 01 知识要点总结 windows系统的基本架构 1.windows系统的发展与现状 2.windows系统的基本结构 windows系统的安全体系结构与机制 1.windows系统的安全体系结构概述 2.windows认证机制 3.windows系统访问与授权机制 4.windows系统安全审计机制 5.windows系统的其他安全机制 windows系统安全攻防技术 1.windows系统的安全漏洞 2.windows远程口令猜解 3.windows服务远程 4.手动实践:M

20179301《网络攻防实践》第七周作业

a.教材<网络攻防技术>第七章的学习    第七章Windouws操作系统安全攻防的内容进行学习.Windouws是目前市场上占统治地位的操作系统,到2010年,已经占据了百分之八十八的市场份额.基本结构分为运行于处理器特权模式的操作系统内核,已经运行在处理器非特权模式的用户空间代码,与UNIX一样,采用宏内核模式来进行架构,这也使得系统更容易遭受Rootkit的危害,为了应对这种攻击,采用数字签名的办法提高安全性.Windows操作系统中,有用户,用户组和计算机三大类,对于每个安全主体,空间

2017-2018-2 20179223《网络攻防技术》第七周作业

教材内容学习 一.Windows操作系统框架 1.Windows操作系统的发展与现状 Windows在桌面操作系统中占有非常高的市场份额,Windows XP系统在国内仍有大量的用户 2.Windows操作系统基本结构 (1)Windows操作系统内核基本模块 +Windows执行体:Windows内核核心文件ntoskrnl.exe的上层接口 +Windows内核体:Windows内核核心文件ntoskrnl.exe中函数实现与硬件体系结构支持代码,实现底层的操作系统功能 +设备驱动程序:包括

第七周作业

最近的项目让我多了解了一些关于MVC模式,把系统分为三个部分:模型(Model).视图(View)和控制器(Controller). 其中: Model(模型)是应用程序中用于处理应用程序数据逻辑的部分.比如项目中的用户模型的建立,以及基于用户模型建立的Action类,还有一些对数据库的操作DAO类等. View(视图)是应用程序中处理数据显示的部分.注册登录JSP,首页等,只有视图上数据的采集和处理,以及用户的请求. Controller(控制器)是应用程序中处理用户交互的部分.通过servl