zoukankan      html  css  js  c++  java
  • JavaEE使用三层架构(显示层、业务逻辑层、数据访问层)实现数据的增删改查

    实例:

    1、功能描述

    实现一个简易新闻发布系统,包括查看、添加、修改和删除新闻等基本功能

    2、具体要求

    (1) 创建数据库 newssystem,创建表 news,要求如下:

    (2) 程序运行时,显示‘发布新闻’页面(如图 1),输入相关内容,单击‘提交’按钮,将新闻内容添加到数据库

    (3) 单击图 1 中的‘查看’按钮,显示‘查看新闻’页面(如图 2),增加‘修改’和‘删除’链接

    (4) 单击图 2 中的‘update’链接,显示‘修改新闻’页面(如图 3),修改后单击‘修改’按钮确认,单击‘查看’按钮显示‘查看新闻’页面(如图 2)查看修改结果

    (5) 单击图 2 中的‘delete’链接,删除该条新闻,并显示‘查看新闻’页面显示删除后的内容(如图 4)

    思路:三层架构剖析

    显示层:

    都为jsp格式的文件,网页中显示多少个页面就有多少个jsp文件

    本实例有图1、图2、图3共3个页面,故要建立3个jsp文件

    业务逻辑层:

    servlet来放置,对数据库表里的数据进行增删改查

    数据访问层:

    bean和dao两个包来放置

    解题:按题目具体要求逐步推进

    (1)略

    (2)用户输入内容到图1所示页面,并执行添加操作

    运行顺序为:AddNews--add.jsp--InsertNews

    核心代码(本例中出现的均为核心代码):

    AddNews

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            request.getRequestDispatcher("add.jsp").forward(request, response);
        }

    add.jsp

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h1>发布新闻</h1>
    <form action="insert" method="post">
    标题:<input type="text" name="title"><br>
    作者:<input type="text" name="author"><br>
    来源:<input type="text" name="source"><br>
    内容:<textarea name="content"></textarea><br>
    
    <input type="submit" value="提交">
    <a href="show">查看</a>
    </form>
    </body>
    </html>

    InsertNews

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取参数(add.jsp中用户输入的内容)
            request.setCharacterEncoding("utf-8");
            News data=new News();
    
            data.setTitle(request.getParameter("title"));
            data.setAuthor(request.getParameter("author"));
            data.setSource(request.getParameter("source"));
            data.setContent(request.getParameter("content"));
            Date d=new Date();
            data.setTime(d);
            
            //处理数据(将新内容添加到数据库)
            try {
                new NewsDao().insert(data);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
            //跳转(添加数据完毕后返回到add.jsp界面)
            response.sendRedirect("add");
        }

    (3)运行顺序为:

    Show--show.jsp

    Show

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取参数(没有参数获取)
        
            //处理数据(把数据库表中所有内容查询出来)
            ArrayList<News> list=new ArrayList<News>();
            try {
                list=new NewsDao().select();
            } catch (Exception e) {
                
                e.printStackTrace();
            }
            request.setAttribute("data", list);//将查询到的内容装到一个数据包里,数据包的名字叫data
            
            //跳转(转到图2所示页面)
            request.getRequestDispatcher("show.jsp").forward(request, response);
        }

    show.jsp

    <body>
    <h1>新闻显示</h1>
    <table border="1">
    <%
    ArrayList<News> list = (ArrayList<News>)request.getAttribute("data");//将Show中装到数据包data里的数据取出来
    for(News data : list){//用for循环遍历
    %>
    <tr>
    <td><%=data.getNewsid() %></td>
    <td><%=data.getTitle() %></td>
    <td><%=data.getAuthor() %></td>
    <td><%=data.getSource() %></td>
    <td><%=data.getTime() %></td>
    <td><a href="edit?id=<%=data.getNewsid()%>">修改</a></td>//指向EditNews(名为edit),带有id的值
    <td><a href="delete?id=<%=data.getNewsid()%>" onclick="return confirm('确认要删除<%=data.getTitle()%>吗?')">删除</a></td>//指向DeleteNews(名为delete),带有id的值
    </tr> 
    <%
    } 
    %>
    </table> 
    </body>

    (4)图3由两部分组成,一部分是表单,另一部分是文本框里的内容,因此要先查找到文本框里的内容,再把这些内容传到表单里。手动修改文本框里内容以后再通过UpdateNews修改数据库表中的内容

    运行顺序为:EditNews--edit.jsp--UpdateNews

    EditNews

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取参数(获取show.jsp中传来的id值)
            String key=request.getParameter("id");
            //处理数据
            News data;
            try {
                data = new NewsDao().select(key);
                request.setAttribute("news", data);            
            //跳转
              request.getRequestDispatcher("edit.jsp").forward(request, response);        
            } catch (Exception e) {            
                e.printStackTrace();
            }                         
        }    

    edit.jsp

    <body>
    <form method="post" action="update">
    <h1>修改新闻</h1>
    <%
    News data = (News)request.getAttribute("news");
    if(data != null){
    %>
    <input type="hidden" name="newsid" value="<%=data.getNewsid() %>">
    标题:<input type="text" name="title" value="<%=data.getTitle() %>"><br>
    作者:<input type="text" name="author" value="<%=data.getAuthor() %>"><br>
    来源:<input type="text" name="source" value="<%=data.getSource() %>"><br>
    内容:<textarea name="content" ><%=data.getContent() %></textarea><br>
    <input type="submit" value="提交">
    <a href="show">查看</a>
    <%
    }
    %>
    </form>
    </body>

    UpdateNews

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            //获取参数
            News data=new News();
            data.setNewsid(Integer.parseInt(request.getParameter("newsid")));
            data.setTitle(request.getParameter("title"));
            data.setAuthor(request.getParameter("author"));
            data.setSource(request.getParameter("source"));
            data.setContent(request.getParameter("content"));
            data.setTime(new Date(request.getParameter("time")));
            //处理数据
            try {
                new NewsDao().update(data);
            } catch (Exception e) {
                
                e.printStackTrace();
            }
            //跳转
            response.sendRedirect("show");
        }

    (5)获得该行数据的id值,并从数据库表里删除带有该id值的行

    运行顺序为:DeleteNews(只执行一个文件)

    DeleteNews

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取参数(show.jsp传来的id)
            int newsid=Integer.parseInt(request.getParameter("id"));
            //处理数据
            try {
                new NewsDao().delete(newsid);
            } catch (Exception e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
            //跳转(跳转到图2,通过Show间接跳转到show.jsp)
            request.getRequestDispatcher("show").forward(request, response);
        }
  • 相关阅读:
    001-nginx基础配置-location、Rewrite、return 直接返回码、全局变量
    001-Spring Cloud Edgware.SR3 升级最新 Finchley.SR1,spring boot 1.5.9.RELEASE 升级2.0.4.RELEASE注意问题点
    004-读书记录
    007-ant design 对象属性赋值,双向绑定
    006-ant design -结合echart-地址map市
    005-ant design -结合echart
    002-Spring Framework-Core-01-IoC容器
    003-驾照考试,总结
    006-markdown基础语法
    java-mybaits-010-mybatis-spring-使用 SqlSession、注入映射器
  • 原文地址:https://www.cnblogs.com/jonsnow/p/6361344.html
Copyright © 2011-2022 走看看