前几天写了简单的从页面对数据库进行的操作,下面对该功能进行升级,操作两张相关联的表;上次是对新闻类型的修改,我在这里就不重复了,可以查看我之前的博客,

首先从页面说起:

页面部分:

页面部分我用了10个JSP完成的如图:

也就是比上次的多了几个news后缀的几根文件

1、添加新闻内容

addnews,代码如下

request.setCharacterEncoding("UTF-8");

String title=request.getParameter("title");//获取文本框输入的值

String contain=request.getParameter("contain");//获取文本框输入的值

String autor=request.getParameter("autor");//获取文本框输入的值

String typeid=request.getParameter("typeid");//获取文本框输入的值

if(title!=null){

//新建构造函数里面的对象

news n=new news(title,contain,autor,Integer.parseInt(typeid));

//新建Servlet层对象

NewsServlet ns=new NewsServlet();

int a=ns.addnews(n);//注意里面的参数,是news里面的参数,传news对象

if(a>0){

//添加成功跳到show界面

response.sendRedirect("shownews.jsp"); //添加成功转到查看页面

}else{

//添加失败在本界面界面

response.sendRedirect("addnews.jsp"); //添加成功转到查看页面

}

}

%>

这是添加新闻内容界面

标题:

内容:

作者:

类型:

//servlet对象//遍历寻找类型

Type_NewsServlet tn=new Type_NewsServlet();

List list=tn.selectall();//调用其中的查看全部的方法

for(int i=0;i

type_news tpn=list.get(i);

%>

}

%>

shownews.jsp(用来查看页面)

代码如下:

function delete_(id){

var f=confirm("是否确定删除?");

if(f){

location.href="shownews.jsp?ids="+id;

}else{

alert("您取消删除");

}

}

function update(id){

location.href="updatenews.jsp?ids="+id;

}

String id=request.getParameter("ids");

if(id!=null){

NewsServlet ns=new NewsServlet();

int a =ns.delete(Integer.parseInt(id)); // us.deleten(Integer.parseInt(id));

response.sendRedirect("shownews.jsp");

}

%>

这是展示界面

编号 标题 内容 作者 类型 操作

//调用Servlet取到数据

NewsServlet ns=new NewsServlet();

List list =new ArrayList();

list=ns.selectall(null);

for(int i=0;i

news n=list.get(i);

%>

)" value="修改"/>

)" value="删除"/>

}

%>

updatenews.jsp(更新)

代码如下:

request.setCharacterEncoding("UTF-8");

String id=request.getParameter("ids");

NewsServlet tsl=new NewsServlet(); //导包

news ts=new news();//导包

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

if(type!=null){

String id1=request.getParameter("id");

String title=request.getParameter("title");//从下面的输入取值

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

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

ts.setId(Integer.parseInt(id1));//强转

ts.setTitle(title);

ts.setContain(contain);

ts.setAutor(autor);

int a=tsl.update(ts);

response.sendRedirect("shownews.jsp");

}else{

if(id!=null){

ts=tsl.selectone(Integer.parseInt(id));

}

}

%>

修改新闻界面


标题:

内容:

作者:

接下来是后台程序:

servlet层:

代码如下:

public class NewsServlet {

//新建后面层的对象,方便调用方法

NewsService ns=new NewsServiceImp();

/**********添加新闻内容***************************************************/

public int addnews(news n){

int a=0;

a=ns.addnews(n);

return a;

}

/**********查看新闻内容***************************************************/

public List selectall(news n){

List list=ns.selectall(null);

return list;

}

/**********删除新闻内容***************************************************/

public int delete(int id){

int a=0;

a=ns.delete(id);

return a;

}

/**********查找一个新闻内容***************************************************/

public news selectone(int id){

news nn=ns.selectone(id);

return nn;

}

/**********更新新闻内容***************************************************/

public int update(news s){

int a=0;

a=ns.update(s);

return a;

}

}

service层:

代码如下:

public interface NewsService {

public int addnews(news n);

public List selectall(news n);

public int delete(int id);

public news selectone(int id);

public int update(news s);

}

ServiceImp程序:

public class NewsServiceImp implements NewsService{//接口

//新建后面层的对象,方便调用方法

NewsDao nd=new NewsDaoImp();

/**********添加新闻内容***************************************************/

public int addnews(news n) {

int a=0;

a=nd.addnews(n);

return a;

}

/**********查看新闻内容***************************************************/

public List selectall(news n) {

List list=nd.selectall(n);

return list;

}

/**********删除新闻内容***************************************************/

public int delete(int id) {

int a=0;

a=nd.delete(id);

return a;

}

/**********查找一个新闻内容***************************************************/

public news selectone(int id){

news nn=nd.selectone(id);

return nn;

}

/**********更新新闻内容***************************************************/

public int update(news s) {

int a=0;

a=nd.update(s);

return a;

}

}

Dao层:

public interface NewsDao {

public int addnews(news n);

public List selectall(news n);

public int delete(int id);

public news selectone(int id);

public int update(news s);

}

DaoImp程序:

public class NewsDaoImp implements NewsDao{//接口

Connection conn=null;

ResultSet rs=null;

PreparedStatement ps=null;

/**********添加新闻内容***************************************************/

public int addnews(news n) {

int a=0;

//连接数据库

try {

conn=shujuku.conn();

String sql="insert into news values(?,?,?,?)";

ps=conn.prepareStatement(sql);

ps.setString(1, n.getTitle());

ps.setString(2, n.getContain());

ps.setString(3, n.getAutor());

ps.setInt(4, n.getTypeid());

a=ps.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

return a;

}

/**********查看新闻内容***************************************************/

public List selectall(news n) {

List list=new ArrayList();

try {

conn=shujuku.conn();

String sql="select n.id,n.title,n.contain,n.autor,ts.typename " +

"from news as n " +

"inner join types as ts " +

"on n.typeid=ts.id";

ps=conn.prepareStatement(sql);

rs=ps.executeQuery();

while(rs.next()){

//另一个构造函数

news ty=new news(rs.getInt("id"), rs.getString("title"),

rs.getString("contain"),rs.getString("autor"),rs.getString("typename"));

list.add(ty);

}

} catch (SQLException e) {

e.printStackTrace();

}

return list;

}

/**********删除新闻内容***************************************************/

public int delete(int id) {

int a=0;

try {

conn=shujuku.conn();

String sql="delete from news where id="+id;

ps=conn.prepareStatement(sql);

a=ps.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

return a;

}

/**********查找一个新闻内容***************************************************/

public news selectone(int id) {

news nn=new news();//还要有一个空的构造方法3

try {

conn=shujuku.conn();

String sql="select*from news where id="+id;

ps=conn.prepareStatement(sql);

rs=ps.executeQuery();

if(rs.next()){

nn.setId(rs.getInt("id"));

nn.setTitle(rs.getString("title"));

nn.setContain(rs.getString("contain"));

nn.setAutor(rs.getString("title"));

nn.setTypeid(rs.getInt("typeid"));

}

} catch (SQLException e) {

e.printStackTrace();

}

return nn;

}

/**********更新新闻内容***************************************************/

public int update(news s) {

int a=0;

try {

conn=shujuku.conn();

String sql="update news set title=?,contain=?,autor=? where id=?";

ps=conn.prepareStatement(sql);

ps.setString(1, s.getTitle());

ps.setString(2, s.getContain());

ps.setString(3, s.getAutor());

ps.setInt(4, s.getId());

a=ps.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return a;

}

}

数据库的表:

主外键关系:

之后还有对这篇文章的改进加入了C标签把页面的脚本都去掉:http://blog..net/qq_34178998/article/details/77579408

代码就这么多:最后来看下运行效果吧:

后期加功能再继续更新。。。。。。

也欢迎转载!!!也欢迎转载!!!也欢迎转载!!!

java后台两个表关联查询_简单界面+JAVA后台+数据库实现页面对数据库的两张关联表操作...相关推荐

  1. java的栈区 堆区存放什么_简单整理java中的栈内存, 堆内存是什么?

    上一篇文章简单整理了栈(stack), 堆(heap), 队列(queue)的结构 这一篇继续整理java中的 占内存,堆内存. Java把内存划分成两种:一种是栈内存,一种是堆内存. 这里需要解释一 ...

  2. B站黑马测试第二篇P206视频数据库SQL语句‘关联查询_数据准备‘代码

    drop table if exists category; create table category( id int unsigned primary key auto_increment, ty ...

  3. java jpa自身关联查询_使用JPA进行数据查询和关联查询

    使用JPA进行数据查询和关联查询 在开发中经常会使用mybatis.jpa等框架来解决O/R映射技术实现数据访问.本文主要介绍使用JPA实现数据访问. 通常在关联查询的时候,表与表之前存在的关系有 O ...

  4. Java学习日志Day41_过滤器Filter 接口_项目更新:后台管理/前台统一处理全局乱码and用户列表---删除以及分页功能

    一.过滤器Filter 接口 1.导包: <groupId>com.qf</groupId> <artifactId>FilterAndJquery</art ...

  5. 使用python对学生表的查询_多表组合查询——Python操作Mysql数据库

    前面我们介绍了单张表的查询,包括模糊查询.分组.排序.各种筛选条件等等操作,在实际应用中,查询的数据往往不止局限在一张表里,通常需要多张表在一起进行组合查询,今天我们将会对Mysql当中的多张有关联的 ...

  6. postgres sql 多表联合查询_从零学会SQL-多表查询

    之前学习的内容几乎针对单个表进行简单操作,实际工作中可没有这么简单,复杂的表结构和多表数据关联进行分析,这时候需要我们掌握多表查询方法,一如既往,我们先看一下这篇的主要内容: 表的加法 表的联结 联结 ...

  7. mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析

    推荐学习 重识SSM,"超高频面试点+源码解析+实战PDF",一次性干掉全拿走 全网独家的"MySQL高级知识"集合,骨灰级收藏,手慢则无 "吃&qu ...

  8. mysql 关联查询_响应时间长?MySQL查询优化教程来了!

    - 点击上方"爱数据学习社"关注我们吧! - 为什么查询会慢?--响应时间过长. 如果把查询看做是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询, ...

  9. mycat 分表子查询_还不懂MyCat?一文带你深入剖析,实现MySQL读写分离

    前言 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Myca ...

最新文章

  1. win10远程计算机管理,Win10系统下实现批量远程桌面管理的具体方法
  2. Linux疑难杂症解决方案100篇(十五)-万字长文带你深入Linux 内核学习:环境搭建和内核编译
  3. Netstars CTO陈斌:架构师的成长之路
  4. MyBatis基本例子-实现增删改查
  5. Hadoop平台优化综述(一)
  6. 记一次虚拟机共享文件夹的采坑之旅
  7. Gerry。沙漠苦旅。
  8. 计算机网络_实验5_集线器与交换机对比
  9. 常用DOS命令(三)--RD命令
  10. Linux DMA驱动构架分析
  11. VMware vSphere理论
  12. 《区块链技术与应用》读书笔记
  13. 从输入 URL 开始,聊一聊浏览器、网络等相关的知识
  14. excel自定义功能区图标_将您自己的图标添加到Excel自定义功能区选项卡
  15. 2种js动态绑定事件方法
  16. 算法的时间与空间复杂度介绍
  17. css实现仿element ui配色的小圆圈状态标记
  18. 小远qq1611532647淘宝主图设计
  19. 你的Ubuntu还可以这么美(转自知乎 @知一)
  20. 我与微笑哥以及 Java 极客技术的前世今生

热门文章

  1. pta函数统计素数并求和_关于求和的4种函数公式,此文讲透了,尤其是第4种,绝对的高效...
  2. 1273: 夫妻 -stack的运用
  3. radio button html5,Tkinter Radiobutton单选框的用法
  4. 虚幻四人行 Epic公司四创始人发展史(下)
  5. 游戏开发者需要注意的4个内存使用问题
  6. LNMP单机高并发的简单优化
  7. 弈剑行:几经曲折却遇开服宕机,克服困难单机上线,他们不妥协
  8. idea查看过期时间
  9. 在以阶段划分的编译过程中,判断程序语句的形式是否正确属于()阶段的工作。
  10. linux打开ftp功能的方法