信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 阳光
打印 上一主题 下一主题

【分享】JSP快速入门教程---全十讲(好文章啊)-

  [复制链接]
  • TA的每日心情
    开心
    2016-1-24 12:54
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    11
     楼主| 发表于 2008-11-15 20:07:06 | 只看该作者
    第九讲(参考《Java Web程序设计基础教程》第14章)
    1、在JSP中如何存储信息

        前面介绍过的:在数据库中存储信息;在request对象中存储信息。
        分为两类:内存 和持久存储
        内存中如何组织数据:
        pageContext对象,存储当前页面的信息;请求涉及多少个文件,就会创建多少个pageContext对象。
        request对象,一次请求会创建一个request对象,如果希望在同一次请求的多个文件之间共享信息,可以保存在request中。
        session对象,每个客户端对应一个session,session中用于存储在用户的整个访问过程中要使用的信息。最典型的应用把用户的登录信息保存在session中,这样在后续的页面中使用登录信息。
        application对象,整个网站对应这样一个对象,访问网站的所有用户在访问所有网页的时候都可以使用。典型的应用是公有的聊天室,聊天信息所有人都可以看到,这时候就应该使用application对象。

        持久存储:
        数据库,通过JDBC访问。
        文件,通过IO进行操作。
        Cookie,信息存储在客户端。如果使用数据库和文件,信息都存在服务器端。

    2、网上购物车的基本功能
      
       浏览图书信息;
       把图书添加到购物车中;
       对购物车中的物品进行管理;
       查看购物车的信息;
       生成订单。

    3、如何保存在购物过程中选择的物品?
       关心购物车中有哪些类型的物品,每种类型的物品有多少。物品的种类数量不确定。每次请求只能选择某一种物品。根据这些特点,应该设计购物车的存储结构如下:
       1)需要把购物车放到session中,这样才能进行多个页面之间的共享;
       2)因为物品种类不确定,所以一般选择ArrayList来存储物品种类以及数量;
       3)对于每一种物品,包含物品本身的信息以及物品的购买数量,通常使用订单项来表示,里面包含了物品对象及其数量。

    4、完成向购物车中添加图书的功能
       V部分:输入,是选择物品向购物车添加的界面,使用物品信息查看界面;
              输出,显示购物车信息的页面。
       M部分:把选择的物品添加到购物车中,需要知道原来购物车中有什么信息,购物车在session中保存,所以需要对session进行操作。
       C部分:第一句话,获取信息,从输入界面获取要添加的图书,从session中获取原有的购物车信息。
              第二句话,调用M部分的添加购物车功能。
              第三句话,保存信息,把修改后的购物车重新写入session中。
              第四句话,转向显示购物车信息的页面。
    5、构建订单项类
    package bean;

    // 表示购物项
    public class Item{
       private BookBean book;
       private int quantity;
       public void setBook(BookBean book){
          this.book = book;
       }
       public BookBean getBook(){
          return book;
       }

       public void setQuantity(int quantity){
          this.quantity = quantity;
       }
       public int getQuantity(){
          return quantity;
       }
    }

    6、输入界面
      
       在books.jsp中的图书列表后增加“添加到购物车”这样的超链接。
    7、删除功能、修改购物车信息
       界面:
       删除的代码:
       <form action="deleteItem" method="post">
          <input type="hidden" name="bookid" value="${item.book.bookid}">
          <input type="submit" value="删除">
       </form>
       修改的:
       <form action="updateCart" method="post">
          <input type="text" name="quantity" value="${item.quantity}">
          <input type="hidden" name="bookid" value="${item.book.bookid}">
          <input type="submit" value="修改">
       </form>

       M部分:
       从ArrayList对象cart中删除Item对象item:cart.remove(item)   cart.remove(i)
       修改功能:在添加过程中如果要添加的图书已经存在,就相当于修改。

       C部分:与添加功能中的代码非常类似。
  • TA的每日心情
    开心
    2016-1-24 12:54
  • 签到天数: 28 天

    [LV.4]偶尔看看III

    12
     楼主| 发表于 2008-11-15 20:07:58 | 只看该作者
    第十讲
    1、MVC模式分析

       对任何功能来说,首先考虑人如何来使用这个功能。如何把人的请求发送给系统,系统如何把处理的结果返回给用户,实际上就是输入和输出。输入MVC模式中的V部分。
       输入:用户发送请求,通过超链接,通过浏览器的地址栏,通过表单提交。请求时候如何要提交数据,在超链接中以及地址栏中可以通过?的形式来传递值,表单方式通过表单元素提交信息。非常典型的应用,隐藏域,用于在多个页面之间传递信息。注意:输入一定要进行客户端的格式验证。
       输出:主要服务器得到的信息显示给用户。输出提示信息:${info}  输出对象信息:在更新界面中显示信息${book.bookid}  输出多个对象的信息:
                <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>
                        <td> <a href="addToCart?bookid=${book.bookid}">添加到购物车</a> </td>
                    </tr>
                 </c:forEach>
        功能(M部分):通常转换成方法。因为Java是面向对象的语言,方法应该输入某个类的。所以通常需要创建JavaBean(比较特殊的类),然后在JavaBean中添加这个方法。方法的实现主要依赖你的Java基本功。
        控制器(C部分):通常使用Servlet来实现。对于控制器需要记住4句话:获取信息;调用JavaBean;保存信息;响应。
            获取信息:
                获取请求信息request.getParameter(paraname)  request.getParameterValues(paraname)
                获取session中信息  session.getAttribute(属性名)  注意:获取到之后需要进行强制类型转换
                获取Cookie中信息  request.getCookies()  返回的是Cookie数组
                获取请求头信息
                获取Servlet的配置信息
                通过其他的JavaBean来获取一些信息
            调用JavaBean的方法:
                实例化,使用new加上构造方法来实例化,如果要调用的方法是静态方法,不需要实例化。
                初始化,可能需要使用上面获取的信息来对JavaBean进行初始化。
                调用方法,可以通过参数传递需要的信息
            保存信息(主要为后续的页面和处理服务的):
                保存到session中,session.setAttribute(属性名,要保存的对象),供用户后续的所有访问过程使用。
                保存到request中,request.setAttribute(属性名,要保存的对象),供后续页面使用(页面与当前的Servlet属于同一次请求)
                保存到cookie,Cookie cookie = new Cookie("name","value"); response.addCookie(cookie);  ,供客户端在以后的时间访问
            响应:
                直接输出:
                   response.setContentType("text/html;charset=gb2312");
                   PrintWriter out = response.getWriter();
                   out.println("欢迎学习JSP!");
                使用专门的文件进行响应:
                   方式一:
                       RequestDispatcher rd = request.getRequestDispatcher(目标文件);
                       rd.forward(request,response); // 完成跳转
                   方式二:
                       response.sendRedirect(目标文件);
                   注意:如果当前功能完成的是对数据库的插入操作,如果用户刷新就会产生错误。要避免错误,不能使用RequestDispatcher,可以使用方式二。如果使用方式二,就不能在当前文件和目标文件之间通过request共享信息了。如果要共享可以session,使用session的时候,用完之后一定要删除这个对象session.removeAttribute(属性名)。

    2、如何使用其他的数据库管理系统
       准备工作:
       1)安装数据库;创建表。(这个过程通常是由数据库管理员完成的,对于变成人员来说需要知道数据库的IP地址、端口、数据库名字、用户名、口令)。
       2)要得到数据库的JDBC驱动程序,通常是压缩包,可以从响应的数据库提供商的网站上下载。需要把驱动程序放在:C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib 或者应用的WEB-INF/lib下面。
       在程序中使用:
       与现在使用JDBC-ODBC桥方式基本相同,不同点在于:驱动程序的名字;URL(通常包含IP地址、端口、数据库名字)的格式不同(与驱动程序有关);用户名和口令。
       常见的错误:
       1)ClassNotFoundException   通常是因为JDBC驱动程序加载失败,找不到。确认JDBC驱动程序在正确的位置以及版本是否正确。
       2)没有合适的驱动程序 Not a suitable driver  通常是因为URL的格式不正确。
       3)连接不能被创建,数据库服务器没有正常运行获取主机、端口、数据库名有误。
       4)Access Denied  用户名和口令错误
       5)java.sql.SQLException 通常SQL语句错误。
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

    小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

    GMT+8, 2025-7-5 18:00

    Software by Discuz! X3.2

    © 2001-2013 SKIN BY DSVUE

    快速回复 返回顶部 返回列表