1、DAO模式 分包:依次建立

entity:实体包,放的是跟oracle数据库中表结构相对应的对象的属性,也就是这个对象有什么

dao:增删改查接口,实现增删改查的具体方法

service:同dao,也是一个接口,一个接口的实现类,方法什么的都跟dao差不多

servlet:新建servlet类,继承HttpServlet类,一个方法建立一个servlet类,根据不同的方法选择使用doGet()、doPost()方法 、services()既包含doGet 又包含doPost

新建jsp页面

这些都是新建web项目

2、save方法,对应sql语句insert into

数据原型是干啥使的,当用户要存入一条新纪录时,用户在jsp页面输入,在servlet获得,存入实体对象,调用service层的save方法,service层再return给dao层

,再往数据库插入

3、update更新数据方法跟add差不多。比add还要简单多了,直接拿到id调用update方法,就会返回一个完整的实体对象,把实体对象存到作用域,转发给edit.jsp;

不同点:在jsp页面需要回填数据到表单    用el表达式


分页查询功能

java中万物皆对象,在util包中新建个pageBean对象,包含pageIndex页号、List  results 查询结果集、rowCount总行数/pageSize每页行数=pageCount总页数

在dao层写接口。也叫find方法,传参pageIndex页号(在servlet层给出初始值,在jsp层需要用户传入)、pageSize每页行数(在servlet层给规定每页显示几个)、  模糊查询搜索字段名(表中的)(需要用户给)

写实现类。先连接数据库,先执行查询所有记录数的sql语句,得到总页数与首尾行号

如果为true则再执行分页的sql语句,从结果集中取出来封装到book实体类,再封装pageBean对象

dao层负责想方设法从数据库得到数据;servlet层负责从jsp拿到数据,转发或重定向到jsp

下面来说说servlet层:先考虑是doGet还是doPost,doGet是想查询数据,搜索框,所以得先解决中文乱码,先设pageIndex=1,pageSize=2,判断浏览器是否传页号

a、数据分页查询

b、数据分页显示

复习步骤先从数据库开始,sql语句,jdbc将java程序与数据库连接起来,可以使java程序操作数据库中的数据

由底层开始,层层往上,最后一直到jsp显示层

1、sql语句

count()聚合函数    计总行数

row_number() over (partition by deptno order by sal desc)分区子句按部门编号分区,把查询结果分为不同的组,类似于group by;排序子句,将每个分区排序。为查询结果分配行号

order by desc 降序/ asc 升序 默认

select * from  book  查询book表中 的所有列

select 结果分配行号,book表中的所有列 from book where title like ?

select row_number() over (order by id desc) as rnbook表中的所有列 from book  b where title like ?

列名起别名是as 名字   表名起别名 是直接名字即可

把表中所有列查询结果都分配行号,id降序,模糊查询

select t.*
from(select  ROW_NUMBER() OVER(order by id desc) as rn,b.*
        from book  b
        where title like '%a%') t
where t.rn between 2 and 14;

按照查询条件把我想要的所有行显示出来了,但是我想分页显示,就要设置每一页显示的首尾行号,这样就能确保每一页准确无误的显示了

查询步骤

1、先获得符合查询条件的总行数

select count(*) as count from Book where title like '%a%';

把sql语句where like 查询条件变成一个搜索栏,新建一个pageBean对象用来显示分页情况

先和数据库建立连接,执行sql语句,得到总行数,求出总页数,pageIndex 和pageSize servlet层会先给个默认值的

设置每页首尾行号

2、再执行一次sql语句

开始分页了

从数据库里把数据取出来(结果集)DAO----->Entity放到对象中啊,集合中啊         service层返回DAO层           service----->servlet<-----jsp

3、servlet层

在list页面调用分页查询方法

因为需要用户传参,所以就得先做非空判断

在servlet层,只要转发就写的是xxx.jsp

只要重定向就是“list”  response.sendRedirect("list");

4、index.jsp

搜索栏

URL开头的斜线总结

1.在HTML标签中设置src属性、href属性时
开头的"/"代表服务器根目录(web-apps)   Tomcat目录结构,web应用发布目录

2.在配置Servlet或进行转发时
开头的"/"代表项目的WebRoot目录

3.在重定向时,开头的"/"代表服务器根目录(web-apps)

转发重定向时的路径问题:

转发时的路径,基本都是xxx.jsp页面,因为有数据要转发到页面然后显示给用户看

重定向时路径有两种情况:a.退出登陆直接重定向到login.jsp页面;注册成功后重定向到login.jsp页面;路径都是同一级的

b.登陆成功后要访问后台background/list;添加成功后要

web项目总结——通过jsp+servlet实现对oracle的增删改查功能的更多相关文章

  1. JSP+Servlet+JavaBean实现数据库的增删改查

    基本思想:JSP文件显示页面,使用form或href超链接传值到Servlet中方法,在Servlet方法中调用Dao层的类对象,实现对数据库里的数据的增删改查,之后重新返回到JSP输出操作完的结果. ...

  2. Android 利用xUtils框架实现对sqllite的增删改查

    首先下载xUtils,下载地址:https://github.com/wyouflf/xUtils  把下载好的文件压缩,把里面的jar包拷进项目中如图所示: 这里新建一个User类进行测试增删改查 ...

  3. Javaweb实现对mongodb的增删改查(附带源代码)

    运行截图: 删除后的信息 项目源代码:https://www.cnblogs.com/post/readauth?url=/zyt-bg/p/9807396.html

  4. 在Salesforce中实现对Object的增删改查操作

    1): Insert Statement    http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#CSHID=ap ...

  5. 实现对sqlite数据库增删改查

    package com.example.db.dao;import java.util.ArrayList;import java.util.List;import android.content.C ...

  6. Java实现对cookie的增删改查

    原文地址:http://blog.csdn.net/k21325/article/details/54377830 @RequestMapping(value="meeting/addGua ...

  7. mvc模式jsp+servel+dbutils oracle基本增删改查demo

    mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址

  8. mvc模式jsp+servel+jdbc oracle基本增删改查demo

    mvc模式jsp+servel+jdbc oracle基本增删改查demo 下载地址

  9. python web.py操作mysql数据库,实现对数据库的增删改查操作

    使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...

随机推荐

  1. jQuery初始化加载的实现

    与jQuery事件模块的其他事件不同,其他事件是通过数据缓存实现的,而初始化事件,jQuery.ready则是通过回调函数列表实现的.$()的参数如果是函数就向回调函数列表中添加回调函数,同时为DOM ...

  2. Nodes “-1” are listed in ADOP_VALID_NODES table but not in FND_NODES table

    While trying to apply patches to upgrade to 12.2.4, adop failed due to the below errors. Validating ...

  3. DIY PIXHAWK APM等飞控用的PPM转接板

    需要的硬件 一块arduino pro mini(推荐这个,比较小,当然如果你没有USB转转口的烧写工具买个ardunio nano板也是不错的,直接用USB线连接电脑就可以,用nano板要注意.它的 ...

  4. $.Callbacks()

    <script> var cb = $.Callbacks(); //Callbacks(option) 有4个参数,可以多个参数写一起,空格分隔开 //once 多个fire() 只触发 ...

  5. link和@import的区别、及各自的应用

    面试的过程中遇到的问题,当时自己回答的感觉自己心里还是很满意的,但是回来百度查看后才知道自己回答的有多么的糟糕: 下面我这这个知识点做一些总结的书面说明,为了少走点弯路,多涨点见识吧. 首先我们要了解 ...

  6. [原] VS新添加WebApplication项目,无法运行,请求帮助,问题如何解决

    最近在WIN10 Pro上安装运行VS2012(安装顺利),新建WebApplication项目,无法运行,编译都无法通过,但都是警告. 症状: 1.新建项目无法编译: 2.新建后,默认引用全部感叹号 ...

  7. DKIM对发送邮件的好处及使用方法

    关于DKIM: What is DKIM? 简单的来说dkim有益于增加邮件服务供应商中的反垃圾邮件系统评分,减少邮件内容被评为垃圾邮件的概率. 但使用它不等同于不会被评为垃圾邮件.另外,邮件的发送次 ...

  8. href="javascript:function()" 和onclick的区别

    href='javascript:function()'和onclick能起到同样的效果,一般来说,如果要调用脚本还是在onclick事件里面写代码,而不推荐在href='javascript:fun ...

  9. 简明外贸报价单(Price List)范本

    简明外贸报价单(Price List)范本 简明外贸报价单(Price List)范本 报价单 Price List 报价日期:年 月   日 Supplier Address 供应商 公司地址 Co ...

  10. Logstash学习-配置语法

    区段(section) Logstash 用{}来定义区域.区域内可以包括插件区域定义,你可以在一个区域定义多个插件,插件区域内则可以定义键值对设置. 数据类型 Logstash支持少量的数据值类型: ...