`

Java Web快速入门——第8讲

阅读更多

1、删除功能设计

   1)V部分
   输入:可以在图书列表界面中添加一列,使用超链链接到删除功能,需要把将要删除的图书的编号传递过去。
   输出:删除成功或者失败的提示界面。

   2)M部分
   删除功能需要在BookBean添加一个删除的方法,方法需要参数来指定删除哪一本书。

   3)C部分
   4句话:从输入界面获取要删除的图书的编号;根据编号调用JavaBean的删除图书的方法;把删除成功或者失败的消息传递到界面(通过request);转向响应界面。

2、输入界面

   在books.jsp中的表格后面增加一列。
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ include file="header.jsp"%>

   <tr>
      <td>
          <table align="center" border="1">
             <tr>
                <td>图书编号</td><td>图书名称</td><td>作者</td><td>价格</td><td>出版社</td><td></td>
             </tr>
             <!--  c:forEach用于循环控制,items属性指出要循环遍历的集合,var定义一个循环变量,表示集合中的一个元素 -->
             <c:forEach var="book" items="${books}">
                <tr>
                    <td>${book.bookid}</td>
                    <td>${book.bookname}</td>
                    <td>${book.author}</td>
                    <td>${book.price}</td>
                    <td>${book.publisher}</td>
                    <td> <a href="deleteBook?bookid=${book.bookid}">删除</a> </td>
                </tr>
             </c:forEach>
          </table>
      </td>
   </tr>
</table>

3、输出界面
    把success.jsp作为输出界面。

4、M部分
    在BookBean中添加deleteBook方法,代码如下:
   // 根据编号删除图书
   public boolean deleteBook(String bookid){
      // 表示删除成功还是失败
      boolean success=true;
      // 编写SQL语句
      String sql = "delete from books where bookid=?";
      try{
         // 创建语句对象
         createStatement(sql);
         // 对SQL中的参数赋值
         stmt.setString(1,bookid);
         if( stmt.executeUpdate()>0 )
            success = true;
         else
            success = false;
      }catch(Exception e){
         success = false;
         System.out.println(e.toString());        
      }finally{
         close();
      }
      return success;
   }

5、C部分
   记住4句话即可。参考代码如下:
package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import bean.*;
import java.util.ArrayList;

public class DeleteBook extends HttpServlet
{
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
        // 第一句话:获取要删除的图书
        String bookid = request.getParameter("bookid");

        // 第二句话:调用JavaBean,创建对象、初始化、然后调用方法
        BookBean book = new BookBean();
        boolean success = book.deleteBook(bookid);

        // 第三句话:向页面传递信息,第一个参数是使用的名字,应该和显示时候使用的名字一致,第二个参数传递的值本身
        String info;
        if(success)
           info="删除成功!";
        else
           info="删除失败";
        request.setAttribute("info",info);

        // 第四句话:转向响应界面
        RequestDispatcher rd = request.getRequestDispatcher("success.jsp");
        rd.forward(request,response); // 完成跳转

  }

  public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
     doGet(request,response);
  }

}

在web.xml中添加配置,相关代码如下:
   <servlet>
      <servlet-name>deleteBook</servlet-name>
      <servlet-class>servlet.DeleteBook</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>deleteBook</servlet-name>
      <url-pattern>/deleteBook</url-pattern>
   </servlet-mapping>

6、图书信息修改功能设计

   用户操作过程:首先先显示要修改的图书信息,然后修改后提交更新数据库。
   首先考虑显示信息的过程:根据用户的选择显示相应图书的信息。
   采用MVC模式设计如下:
   V部分:输入可以采用与删除功能类似的方式,在图书列表之后增加一修改列。输出是修改界面。
   M部分:根据图书编号查询图书信息。需要在BookBean中添加一个根据编号查询图书的方法。
   C部分:4句话,获取图书编号;把编号作为参数调用JavaBean中查询图书的方法;把查询到的图书对象保存到request;转向修改界面。

7、输入界面
   修改books.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%@ include file="header.jsp"%>

   <tr>
      <td>
          <table align="center" border="1">
             <tr>
                <td>图书编号</td><td>图书名称</td><td>作者</td><td>价格</td><td>出版社</td><td></td><td></td>
             </tr>
             <!--  c:forEach用于循环控制,items属性指出要循环遍历的集合,var定义一个循环变量,表示集合中的一个元素 -->
             <c:forEach var="book" items="${books}">
                <tr>
                    <td>${book.bookid}</td>
                    <td>${book.bookname}</td>
                    <td>${book.author}</td>
                    <td>${book.price}</td>
                    <td>${book.publisher}</td>
                    <td> <a href="deleteBook?bookid=${book.bookid}">删除</a> </td>
                    <td> <a href="findBookByID?bookid=${book.bookid}">修改</a> </td>
                </tr>
             </c:forEach>
          </table>
      </td>
   </tr>
</table>

8、输出界面
  修改界面:显示从控制器传递过来的BookBean对象book。
<%@ page contentType="text/html;charset=gb2312"%>

<%@ include file="header.jsp"%>

   <tr>
      <td>
           <form action="updateBook" method="post" name="form1">
               <table align="center">
                  <tr>
                      <td>图书编号:</td>
                      <td><input type="hidden" name="bookid" value="${book.bookid}">${book.bookid}</td>
                  </tr>
                  <tr>
                      <td>图书名:</td>
                      <td><input type="text" name="bookname" value="${book.bookname}"></td>
                  </tr>
                  <tr>
                      <td>作者:</td>
                      <td><input type="text" name="author"  value="${book.author}"></td>
                  </tr>
                  <tr>
                      <td>价格:</td>
                      <td><input type="text" name="price"  value="${book.price}"></td>
                  </tr>
                  <tr>
                      <td>出版社:</td>
                      <td><input type="text" name="publisher"  value="${book.publisher}"></td>
                  </tr>
                  <tr>
                      <td><input type="submit" value="提交"></td>
                      <td><input type="reset" value="重写"></td>
                  </tr>
               </table>
           </form>
      </td>
   </tr>
</table>
9、编写根据ID查询图书的方法
    在BookBean中添加方法
   // 根据编号查询图书
   public BookBean findBookByID(String bookid){
      BookBean book=new BookBean();
      String sql = "select * from books where bookid=?";
      try{
         createStatement(sql);
         stmt.setString(1,bookid);
         rs = executeQuery();
         // 转换成对象
         rs.next();

         // 使用rs的getString方法,以字符串的形式获取第一列,参数也可以是列的名字
         // 可以得到当前记录的每一列
         String tempBookname = rs.getString(2);
         String tempAuthor = rs.getString(3);
         float tempPrice = rs.getFloat(4);
         String tempPublisher = rs.getString(5);

         // 创建图书对象
         book.setBookid(bookid);
         book.setBookname(tempBookname);
         book.setAuthor(tempAuthor);
         book.setPrice(tempPrice);
         book.setPublisher(tempPublisher);

      }catch(Exception e){
         System.out.println(e.toString());
      }finally{
         close();
      }
      return book;
   }
10、编写Servlet控制器
package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import bean.*;
import java.util.ArrayList;

public class FindBookByID extends HttpServlet
{
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
        // 第一句话:获取用户选择图书编号
        String bookid = request.getParameter("bookid");

        // 第二句话:调用JavaBean,创建对象、初始化、然后调用方法
        BookBean book = new BookBean();
        book = book.findBookByID(bookid);

        // 第三句话:向页面传递信息,第一个参数是使用的名字,应该和显示时候使用的名字一致,第二个参数传递的值本身
        request.setAttribute("book",book);

        // 第四句话:转向响应界面
        RequestDispatcher rd = request.getRequestDispatcher("updateBook.jsp");
        rd.forward(request,response); // 完成跳转

  }

  public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
     doGet(request,response);
  }

}

在web.xml中配置:
   <servlet>
      <servlet-name>findBookByID</servlet-name>
      <servlet-class>servlet.FindBookByID</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>findBookByID</servlet-name>
      <url-pattern>/findBookByID</url-pattern>
   </servlet-mapping>

11、修改功能的设计

    V部分:输入是修改界面不用修改,只要设置form的action属性为updateBook即可。输出可以采用success.jsp界面。
    M部分:在BookBean中添加修改方法。
    C部分:4句话,获取用户修改后的信息;调用JavaBean,包括初始化;把执行的结果传递到界面;转向界面。
12、修改BookBean中的代码
   增加update方法,代码如下:
   // 更新图书信息
   public boolean update(){
      boolean success = false;
      String sql = "update books set bookname=?,author=?,price=?,publisher=? where bookid=?";
      try{
         createStatement(sql);
         stmt.setString(1,bookname);
         stmt.setString(2,author);
         stmt.setFloat(3,price);
         stmt.setString(4,publisher);
         stmt.setString(5,bookid);
 
         int n = executeUpdate();
        
         if(n>0)
            success = true;
         else
            success = false;
      }catch(Exception e){
         success = false;    
         System.out.println(e.toString());
      }finally{
         close();
      }
      return success;
   }
13、编写控制器
    为了解决乱码,在控制器中获取信息之前,增加如下语句:
        request.setCharacterEncoding("gb2312");
    代码如下:
package servlet;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import bean.*;
import java.util.ArrayList;

public class UpdateBook extends HttpServlet
{
  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
        request.setCharacterEncoding("gb2312");
        // 第一句话:获取用户选择图书编号
        String bookid = request.getParameter("bookid");
        String bookname = request.getParameter("bookname");
        String price = request.getParameter("price");
        String author = request.getParameter("author");
        String publisher = request.getParameter("publisher");
  
        float fPrice = 0f;
        try{
           // 把字符串转换成浮点型变量
           fPrice = Float.parseFloat(price);
        }catch(Exception e){
        }

        // 第二句话:调用JavaBean,创建对象、初始化、然后调用方法
        BookBean book = new BookBean();
        book.setBookid(bookid);
        book.setBookname(bookname);
        book.setPrice(fPrice);
        book.setAuthor(author);
        book.setPublisher(publisher);

        boolean success = book.update();

        String info ;
        if(success)
           info = "修改成功!";
        else
           info = "修改失败";

        // 第三句话:向页面传递信息,第一个参数是使用的名字,应该和显示时候使用的名字一致,第二个参数传递的值本身
        request.setAttribute("info",info);

        // 第四句话:转向响应界面
        RequestDispatcher rd = request.getRequestDispatcher("success.jsp");
        rd.forward(request,response); // 完成跳转

  }

  public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
  {
     doGet(request,response);
  }
}

修改配置文件:
   <servlet>
      <servlet-name>updateBook</servlet-name>
      <servlet-class>servlet.UpdateBook</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>updateBook</servlet-name>
      <url-pattern>/updateBook</url-pattern>
   </servlet-mapping>

分享到:
评论

相关推荐

    JSP快速入门教程——全十讲

    **第八讲:MVC设计模式与JSP** MVC(Model-View-Controller)设计模式常用于Web应用开发。本讲将讨论如何在JSP中实现MVC,以及Struts、Spring MVC等框架的应用。 **第九讲:JSP与Servlet协同工作** 虽然JSP主要用于...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    第8章 浅尝辄止 ——初识Struts2 8.1 本章学习任务 8.1.1 本章知识体系 8.1.2 实例开发任务. 8.2 Struts2概述 8.2.1 理解MVC原理 8.2.2 Struts2框架的产生 8.2.3 Struts2的结构体系 8.3 Struts2入门 8.3.1 Struts2的...

    《Java高手真经:Java Web高级开发技术》读书笔记模板.pptx

    * 第8课:实体查询(JPQL和SQL查询) + Query查询对象API + JPQL查询语言 + SQL语句查询 Java Web高级开发技术 frameworks与开源技术 * 介绍了Java EE开发中的各种分布式与业务核心技术 * 涵盖了Java Web的各种...

    深入体验Java Web开发内幕

    7.4 Session  7.5 Session的典型案例  7.6 Session的持久化管理  7.7 思考与实践 第8章 JSP  8.1 JSP入门  8.2 JSP基本语法  8.3 JSP指令  8.4 out对象  8.5 pageContext对象...

    《java web编程宝典-十年典藏版》 源码

    《Java Web编程宝典——十年典藏版》是一本深入探讨Java Web开发的权威书籍,其源码提供了丰富的实例,帮助读者深入理解并实践相关技术。这本书覆盖了从基础到高级的Java Web开发各个方面,包括Servlet、JSP、Java...

    Java Web入门经典第八章源代码-by 南邮-陈杨

    第8章?使用表达式语言(EL) 165 ?视频讲解:72分钟8.1 EL概述 165 8.1.1 EL的基本语法 165 8.1.2 EL的特点 166 8.2 与低版本的环境兼容——禁用EL 166 8.2.1 使用斜杠符号“\” 166 8.2.2 使用page指令 166 ...

    重磅!《Go Web编程实战派从入门到精通》随书源码开源啦,Go语言-Web-goWebActualCombat.zip

    《Go Web编程实战派从入门到精通》是一本专注于Go语言在Web开发领域的专著,其开源的随书源码库名为"Go语言-Web-goWebActualCombat",压缩包内的主要内容是goWebActualCombat-master目录,这代表了一个完整的Go语言...

    云应用开发 ——Google App Engine & Google Web Toolkit入门指南

    ### 云应用开发 ——Google App Engine & Google Web Toolkit入门指南 #### 第1章 应该了解下 ##### 1.1 云基本知识 云计算是一种通过互联网提供按需计算资源和服务的方式,包括网络、服务器、存储、应用程序和...

    JAVA入门教程21天学通JAVA2第三版

    ### JAVA入门教程21天学通JAVA2第三版——关键知识点解析 #### 一、JAVA入门书籍推荐 - **《Java语言》**:适合初学者,全面覆盖Java基础语法及面向对象的基本概念。 - **《Thinking in Java》**:虽然内容深入且...

    Java基础入门教程

    还会介绍如何编写并运行第一个Java程序——经典的"Hello, World!"示例。 3. **JAVA基本程序实践**:在理论知识的基础上,这部分将深入到实际编程中,涵盖类和对象的概念,这是面向对象编程的基础。学习者会了解如何...

    从零开始——Java基础培训教程

    【Java基础培训教程】是为初学者设计的一套详尽的学习资源,涵盖了从入门到进阶的各个环节。在这个教程中,我们将深入理解Java语言的基本概念,掌握编程技巧,并熟悉常用的开发工具,如Eclipse、NetBeans和Struts。...

    java+web开发教程

    在“Java Web开发教程——入门与提高篇(JSP+Servlet)”这个教程中,你将系统学习这些知识点,逐步掌握如何使用Java进行Web开发,建立起从零到一的实战能力。无论是对HTTP协议的理解,还是对Java Web组件的运用,都...

    java基础知识详解 Java入门必看 Java面试题集锦

    这份资料集主要涵盖Java基础知识、初学者入门指南以及常见的Java面试题,旨在帮助学习者系统地理解和掌握Java的核心概念。 首先,Java基础知识是理解任何Java程序的基础。这包括: 1. **Java环境搭建**:学习如何...

    jsp2.0 技术手册

    本书图文并茂,以丰富的实例为引导,全面介绍了主流的Java Web开发技术——JSP 2.0,重点介绍Java在展示层的两项重要技术:Java Servlet与JavaServer Pages。它们是最重要的Java核心技术。对这两项技术的深入了解,...

    JSP 2.0技术手册 光盘

    本书图文并茂,以丰富的实例为引导,全面介绍了主流的Java Web开发技术——JSP 2.0,重点介绍Java在展示层的两项重要技术:Java Servlet与JavaServer Pages。它们是最重要的Java核心技术。对这两项技术的深入了解,...

    [Java程序设计入门教程].(.杜邦杰).(扫描版)

    **:介绍第一个Java程序——打印“Hello, World!”,这是所有编程语言的入门起点,用于熟悉基本的代码结构和编译执行流程。 4. **语法基础**: - **数据类型**:包括基本数据类型(如整型、浮点型、字符型和布尔型...

    JSP2.0技术手册part6

    本书图文并茂,以丰富的实例为引导,全面介绍了主流的Java Web开发技术——JSP2.0,重点介绍JAVA在展示层的两项重要技术:Java Servlet 与JavaServer Pages。它们是最重要的Java核心技术。对这两项技术的深入了解,...

    JSP2.0技术手册part5

    本书图文并茂,以丰富的实例为引导,全面介绍了主流的Java Web开发技术——JSP2.0,重点介绍JAVA在展示层的两项重要技术:Java Servlet 与JavaServer Pages。它们是最重要的Java核心技术。对这两项技术的深入了解,...

    JSP2.0技术手册part3

    本书图文并茂,以丰富的实例为引导,全面介绍了主流的Java Web开发技术——JSP2.0,重点介绍JAVA在展示层的两项重要技术:Java Servlet 与JavaServer Pages。它们是最重要的Java核心技术。对这两项技术的深入了解,...

Global site tag (gtag.js) - Google Analytics