web项目总结——通过jsp+servlet实现对oracle的增删改查功能
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 rn,book表中的所有列 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的增删改查功能的更多相关文章
- JSP+Servlet+JavaBean实现数据库的增删改查
基本思想:JSP文件显示页面,使用form或href超链接传值到Servlet中方法,在Servlet方法中调用Dao层的类对象,实现对数据库里的数据的增删改查,之后重新返回到JSP输出操作完的结果. ...
- Android 利用xUtils框架实现对sqllite的增删改查
首先下载xUtils,下载地址:https://github.com/wyouflf/xUtils 把下载好的文件压缩,把里面的jar包拷进项目中如图所示: 这里新建一个User类进行测试增删改查 ...
- Javaweb实现对mongodb的增删改查(附带源代码)
运行截图: 删除后的信息 项目源代码:https://www.cnblogs.com/post/readauth?url=/zyt-bg/p/9807396.html
- 在Salesforce中实现对Object的增删改查操作
1): Insert Statement http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#CSHID=ap ...
- 实现对sqlite数据库增删改查
package com.example.db.dao;import java.util.ArrayList;import java.util.List;import android.content.C ...
- Java实现对cookie的增删改查
原文地址:http://blog.csdn.net/k21325/article/details/54377830 @RequestMapping(value="meeting/addGua ...
- mvc模式jsp+servel+dbutils oracle基本增删改查demo
mvc模式jsp+servel+dbutils oracle基本增删改查demo 下载地址
- mvc模式jsp+servel+jdbc oracle基本增删改查demo
mvc模式jsp+servel+jdbc oracle基本增删改查demo 下载地址
- python web.py操作mysql数据库,实现对数据库的增删改查操作
使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...
随机推荐
- python gevent 协程
简介 没有切换开销.因为子程序切换不是线程切换,而是由程序自身控制,没有线程切换的开销,因此执行效率高, 不需要锁机制.因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断 ...
- C# ASP.NET MVC 图片盗链 加水印 的问题
ImageClass using System; using System.Collections; using System.IO; using System.Drawing; using Syst ...
- 在html中引用分享的链接
怎么说呢,其实我自己本身也不是很懂,这些到网上一搜也是有很多详解的,我就是水水的来~~ 附带:smarty 的 tpl 里面 要直接写 javascript 或 style 要用 literal 标签 ...
- TCPL 札记
1.函数原型符合设计要求,函数定义符合认知规律,做到见名知义,最少词汇量包含最大的信息量. 2.合理运用空行提高代码的可读性.从框架上来说有: 变量定义 初始化变量 处理 输出 返回值 3.采用伪码的 ...
- sync_object not in ('TBL_Territory')
sync_objec 不包含TBL_Territory这个字段
- 解决web浏览器与servlet之间传输数据时出现的乱码问题
1.使用getParam等方法获取请求参数时遇到乱码 浏览器发送的请求参数使用的编码就是打开网页时使用的编码.如果服务器端获取到发过来的请求参数,默认使用ISO8859-1进行解码操作,中文一定会有乱 ...
- Leetcode: Sort Transformed Array
Given a sorted array of integers nums and integer values a, b and c. Apply a function of the form f( ...
- css3(border-radius)边框圆角详解
传统的圆角生成方案,必须使用多张图片作为背景图案.CSS3的出现,使得我们再也不必浪费时间去制作这些图片了,只需要border-radius属性,支持浏览器IE 9.Opera 10.5.Safari ...
- OpenCV 轮廓基本特征
http://blog.csdn.net/tiemaxiaosu/article/details/51360499 OpenCV 轮廓基本特征 2016-05-10 10:26 556人阅读 评论( ...
- 记得初学JS时候练个九九乘法表都写的要死要活
还记得当初刚接触JS时候,看到视频中老师写了个九九乘法表,觉得好神奇,可是自己在下面动手写了半天还是有各种问题,甚是懊恼啊.今又看到园子里有关于乘法表的博文,出于对过去的不舍与缅怀,遂重写一遍. &l ...