• 对教师的评价以及加分项


           大二上这一学期收获不小,可以说在大一时就听说了王老师的独特教学方式,更是听闻过“极限测试”。在暑假时我就领略到王老师的“威力”,暑假自学java与每日写博客园。

    可以说暑假前半个阶段是由好好学java的,跟着讲解视频一步步走,每天有个一个小时在学java。但是到了后半阶段尤其是块开学的时候惰性越来越大,学习也不自主了,但是

    好歹用了一个暑假将java的讲解视频看完了,里面的代码案例也敲过了。

            到了开学上了王老师的课我才知道了什么是软件工程,王老师强调我们实战与自主学习,王老师基本不讲课,我们要通过现有的资源达到王老师的目标。王老师常说一句话:

    我只要结果,不要过程。我们必须想尽一切方法达到王老师的要求。虽然一开始并不习惯王老师的方式,老师什么也不讲,全让自学,为何还要老师呢?王老师也说过这个问题,

    老师只是一个引路人,修行全靠自己,况且计算机专业技术日新月异,要是没有自主学习技术的能力,我们将来只能被淘汰。渐渐的我适应了王老师的讲课方式,也确实在大二

    上学期中学到了不少只是,上级时间比大一一年的时间都多,也体验到打代码的快乐,解决一个bug的惊喜,完成一个项目的自豪。

            但是这门课程对我来说也有很多问题,在自学过程中,尤其是开启一个全新技术时,有一种茫然感,面对如山网课视频无从下手。有时也会遇到,看了不合适的视频,而浪费

    了时间,有时还会因为,视频中讲解不细,导致一些技术的关键地方忽略掉,程序出错,需要很长的时间来解决。还有由于是自学的知识体系没有构件成一个整体,比较零散,所以

    希望王老师可以在我们自学差不多时,可以用一节课系统的讲解一下新知识以及易出错的地方。

    自己的加分项:利用课余时间自己做了一个简单的,小小的网上购物系统,综合利用了servlet+HTML+CSS+JQuery的技术,求加个小小的1分。

    项目目录结构:

    ①实现不同角色登录,将登陆分为三层,

    第一层为LoginServlet实现用户数据与后台的交互,并调用loginservice的login方法。代码部分

    String idstr=req.getParameter("id");
            Integer id=Integer.parseInt(idstr);
            String passwordstr=req.getParameter("password");
            Integer password=Integer.parseInt(passwordstr);
            String flag=req.getParameter("flag");
            Object object=loginservice.Login(flag,id,password);
            if(object!=null)
            {
                HttpSession session=req.getSession();
                switch(flag.charAt(0))
                {
                case 'm':
                    ManData mandata=(ManData) object;
                    session.setAttribute("mandata",mandata);
                    req.getRequestDispatcher("mandata.jsp").forward(req, resp);
                    break;
                case 'b':
                    BusinessManData businessmandata=(BusinessManData) object;
                    session.setAttribute("businessmandata",businessmandata);
                    req.getRequestDispatcher("businessmandata.jsp").forward(req, resp);
                    break;
                }
            }
            else
            {
                req.setAttribute("message", "用户名或密码错误!");
                req.getRequestDispatcher("index.jsp").forward(req, resp);
            }

    利用了object类实现多态简化代码易于维护。

    第二层为LoginService层比较简单对不同用户调用不同的Dao方法,调用想用用户的数据库,第三层就是Dao层对数据库进行相应的操作。代码部分:

        public Object Login(String flag, Integer id, Integer password) {
            // TODO Auto-generated method stub
            Object object=null;
            switch(flag.charAt(0))
            {
            case 'm':
                object=manrepository.Login(id,password);
                break;
            case 'b':
                object=businessrepository.Login(id, password);
                break;
            }
            return object;
        }

    jsp部分主要代码:

     <body>
      <%
        String mess=(String)request.getAttribute("message");
        if( mess==null){
        }
         
     else{%>
        <script type="text/javascript">
            alert("<%=mess%>");
        </script>
    <%  request.setAttribute("message", null); }%>
         <h1 >Login</h1>   
           <form method="post" action="/BuyIII/Login">
              <table align="center">  
                <tr>
                  <td>
                    <input type="text" required="required" placeholder="用户名" name="id"></input>
                  </td>
                </tr>  
                <tr>
                  <td>
                    <input type="password" required="required" placeholder="密码" name="password"></input>
                  </td>
                </tr>
                <tr>
                  <td>
                    <input name="flag" list="people" required="required" placeholder="用户类型"/>
                    <datalist id="people">
                    <option value="man">
                    <option value="businessman">
                    </datalist>
                  </td>
                </tr>
                <tr>
                  <td>
                    <button class="but" type="submit">登录</button>
                  </td>
                </tr>
                <tr>
                  <td>
                    <button class="but" onclick="window.location.href='register.jsp'">注册</button>
                </tr>
              </table>  
           </form><br>
      </body>

    效果截图:

    ②实现不同用户的注册:利用ajax异步请求的方式实现form表单数据传送给servlet层,servlet在调用Dao函数,实现用户的注册。并会对数据进行简单的验证,如两次密码不一样,数据为空。

    jsp主要代码:

    <script type="text/javascript" src="./js/jquery-1.7.2.min.js"></script>
      <script type="text/javascript">
        $(function(){
            $("#buttonid").click(function(){
                $.getJSON("/BuyIII/RegisterServlet","method=additems&"+$("#form1").serialize(),function(data){
                     {
                        // var jsonobj=JSON.parse(data);
                         alert(data);
                     }
                });
            });
        })  
      </script>
      <body>
        <h1 >Login</h1>
        <form id="form1">
            <table align="center">
                <tr>
                    <td>用户名:  <input type="text" name="manid" ></td>
                </tr>
                <tr>
                    <td>用户姓名:<input type="text" name="manname"></td>
                </tr>
                <tr>
                    <td>用户密码:<input type="password" name="password"></td>
                </tr>
                <tr>
                    <td>确认密码:<input type="password" name="password2"></td>
                </tr>
                <tr>
                    <td>
                                用户类型:<input name="flag" list="people"/>
                    <datalist id="people">
                    <option value="man">
                    <option value="businessman">
                    </datalist>
                    </td>
                </tr>
            </table>
        </form>
        <table align="center"> 
                <tr>
                    <td><button class="but" id="buttonid">注册</button></td>
                </tr>
                <tr>
                    <td><button class="but" onclick="window.location.href='index.jsp'">返回</button></td>
                </tr>
        </table><br>
      </body>

    效果截图:

    ③用户部分:两个选项浏览商品与浏览购物车:浏览商品时可以点击查看详细信息,加入购物车。浏览购物车时可以实现结算与购物车清零。

    加入购物车与购物车清零会实现商品数目的实时更新。

    1.浏览界面:

    2. 详情:

    加入购物车:

    浏览界面jsp代码:

      <body>
      <%
        String mess=(String)request.getAttribute("message");
        if( mess==null){
        }
         
     else{%>
        <script type="text/javascript">
            alert("<%=mess%>");
        </script>
    <%  request.setAttribute("message", null); }%>
         <h1 align="center">商品浏览</h1>
          <table align="center" border="1">
           <tr>
              <th>商品编号</th>
              <th>商品名</th>
              <th>商品价格</th>
              <th>商品数目</th>
              <th>商家编号</th>
              <th>商家名</th>
              <th>操作1</th>
              <th>操作2</th>
           </tr>
           <c:forEach items="${listitems}" var="listitems" >
             <tr>
               <td>${listitems.itemid}</td>
               <td>${listitems.itemname}</td>
               <td>${listitems.itemprice}</td>
               <td>${listitems.itemnum}</td>
               <td>${listitems.businessid}</td>
               <td>${listitems.businessname}</td>
               <td><a href="/BuyIII/ItemsServlet?method=detail&itemid=${listitems.itemid }&itemname=${listitems.itemname}&itemprice=${listitems.itemprice}&itemnum=${listitems.itemnum}&businessid=${listitems.businessid}&businessname=${listitems.businessname}">详情</a></td>
               <td><a href="/BuyIII/ItemCarServlet?method=aDdcar&itemid=${listitems.itemid}&itemname=${listitems.itemname}&itemprice=${listitems.itemprice}&manid=${mandata.manid}&manname=${mandata.manname}">加入购物车</a></td>
             </tr>
          </c:forEach>
          </table>
          <table align="center">
            <tr>
              <td><button class="but" onclick="window.location.href='mandata.jsp'">返回</button></td>
            </tr>
          </table>
      </body>

    详情部分jsp代码:

    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'lookdetail.jsp' starting page</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
        <link rel="stylesheet" type="text/css" href="styles.css">
        -->
        <link rel="stylesheet" type="text/css" href="CSS/NewFile.css"/> 
        <style type="text/css">
           div{
              float:left;
              margin-left: 30px;
              margin-right:30px;
              margin-top: 5px;
              margin-bottom: 5px;
           }
           div dd{
              margin:0px;
              font-size:10pt;
           }
           div dd.dd_name
           {
              color:blue;
           }
           div dd.dd_city
           {
              color:#000;
           }
        </style>
      </head>
      
      <body>
      <%
        String mess=(String)request.getAttribute("message");
        if( mess==null){
        }
         
     else{%>
        <script type="text/javascript">
            alert("<%=mess%>");
        </script>
    <%  request.setAttribute("message", null); }%>
        <h1>商品详情</h1>
        <hr>
        <center>
        <table width="750" height="60" cellpadding="0" cellspacing="0" border="0"> <br>
           <tr>
             <td width="70%" valign="top">
                <table>
                   <tr>
                      <td rowspan="4"><img src="images/${items.itemid}.jpg" width="200" height="160"></td>
                   </tr>
                   <tr>
                      <td><B>${items.itemname}</B></td>
                   </tr>
                   <tr>
                      <td>商品价格:${items.itemprice}¥</td>
                   </tr>
                   <tr>
                      <td>商品数目:${items.itemnum}</td>
                   </tr>
                   <tr>
                      <td>商品编号:${items.itemid}</td>
                   </tr>
                   <tr>
                      <td>商家编号:${items.businessid}</td>
                   </tr>
                   <tr>
                      <td>商家名:${items.businessname}</td>
                   </tr>
                </table>
             </td>
          </tr>   
        </table>
        <table>
          <tr>
            <td>
              <button class="but" onclick="window.location.href='/BuyIII/ItemCarServlet?method=addcar&itemid=${items.itemid}&itemname=${items.itemname}&itemprice=${items.itemprice }&manid=${mandata.manid}&manname=${mandata.manname}'">加入购物车</button>
            </td>
          </tr>
          <tr>
            <td>
              <button class="but" onclick="window.location.href='/BuyIII/ManServlet?method=lookallitems'"/>返回</td>
            </td>
          </tr>
        </table>
        </center> <br>
      </body>
    </html>

    3.购物车界面:

    jsp代码:

    <%
        String mess=(String)request.getAttribute("message");
        if( mess==null){
        }
         
     else{%>
        <script type="text/javascript">
            alert("<%=mess%>");
        </script>
    <%  request.setAttribute("message", null); }%>
        <h1 align="center">购物车</h1>
          <table align="center" border="1">
           <tr>
              <th>商品编号</th>
              <th>商品名</th>
              <th>商品价格</th>
           </tr>
           <c:forEach items="${listitemcar}" var="listitemcar" >
             <tr>
               <td>${listitemcar.itemid}</td>
               <td>${listitemcar.itemname}</td>
               <td>${listitemcar.itemprice}</td>
             </tr>
           </c:forEach>
          </table><br>
          <table align="center">
            <tr><td> <h1>¥${allprice}</h1><button class="but" onclick="window.location.href='/BuyIII/ItemCarServlet?method=endprice'"/>结算</td></tr>
            <tr><td><button class="but" onclick="window.location.href='/BuyIII/ItemCarServlet?method=deleteprice'"/>清空购物车</td></tr>
          </table>
          <table align="center">
            <tr>
              <td><button class="but" onclick="window.location.href='mandata.jsp'">返回</button></td>
            </tr>
          </table>

    ④商家可以增添商品和修改商品:

    商家界面

    1.添加商品:可以添加商品的基本属性与照片,照片会存放在项目目录下的额images里面。

    上传文件并将照片放到images文件夹的servlet层代码:

    resp.setCharacterEncoding("utf-8"); 
            try {
                DiskFileItemFactory fileitem=new DiskFileItemFactory();
                ServletFileUpload servletfile=new ServletFileUpload(fileitem);
                List<FileItem> list;
                list=servletfile.parseRequest(req);
                for(FileItem fileItem:list)
                {
                    InputStream inputStream =fileItem.getInputStream();
                    OutputStream outputStream=new FileOutputStream("C://Users//lenovo//Workspaces//MyEclipse 10//BuyIII//WebRoot//images//"+fileItem.getName());
                    int temp=0;
                    while((temp=inputStream.read())!=-1)
                    {
                        outputStream.write(temp);
                    }    
                    outputStream.close();
                    inputStream.close();
                }
            } catch (FileUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            HttpSession session=req.getSession();
            session.setAttribute("message","图片提交成功!");
            req.getRequestDispatcher("additems.jsp").forward(req, resp);

    2.修改商品:首先会到修改的基本页面:列出商家的上架商品,上架有两个操作:删除与修改,删除会直接将商品删除,修改会进入修改页面进行修改

    效果截图:

    修改页面:

    删除页面的jsp代码:

    <%
        String mess=(String)request.getAttribute("message");
        if( mess==null){
        }
         
     else{%>
        <script type="text/javascript">
            alert("<%=mess%>");
        </script>
    <%  request.setAttribute("message", null); }%>
        <h1 align="center">已上架的商品</h1>
          <table align="center" border="1">
           <tr>
              <th>商品编号</th>
              <th>商品名</th>
              <th>商品价格</th>
              <th>商品数目</th>
              <th>操作1</th>
              <th>操作2</th>
           </tr>
           <c:forEach items="${listitems}" var="listitems" >
             <tr>
               <td>${listitems.itemid}</td>
               <td>${listitems.itemname}</td>
               <td>${listitems.itemprice}</td>
               <td>${listitems.itemnum}</td>
               <td><a href="updateitems.jsp?itemid=${listitems.itemid }&itemname=${listitems.itemname}&itemprice=${listitems.itemprice}&itemnum=${listitems.itemnum}&businessid=${listitems.businessid}&businessname=${listitems.businessname}">修改</a></td>
               <td><a href="/BuyIII/BusinessManServlet?method=delete&itemid=${listitems.itemid}&businessid=${listitems.businessid}">删除</a></td>
             </tr>
          </c:forEach>
          </table>
          <table align="center">
            <tr>
              <td><button class="but" onclick="window.location.href='businessmandata.jsp'">返回</button></td>
            </tr>
          </table>

    修改部分jsp代码:

    <script type="text/javascript" src="./js/jquery-1.7.2.min.js"></script>
      <script type="text/javascript">
        $(function(){
            $("#buttonid").click(function(){
                $.getJSON("/BuyIII/BusinessManServlet","method=update&"+$("#form1").serialize(),function(data){
                     {
                        // var jsonobj=JSON.parse(data);
                         alert(data);
                     }
                });
            });
        })  
      </script>
      <body>
     <form id="form1">
           <table align="center">
                <tr>
                    <td>商品编号</td>
                    <td><input type="text" name="itemid" value="${param.itemid}" readonly></td>
                </tr>
                <tr>
                    <td>商品名</td>
                    <%
                     String itemname=new String(request.getParameter("itemname").getBytes("ISO-8859-1"),"utf-8");
                     %>
                    <td><input type="text" name="itemname" value="<%=itemname%>" ></td>
                </tr>
                <tr>
                    <td>商品价格</td>
                    <td><input type="text" name="itemprice" value="${param.itemprice}"></td>
                </tr>
                <tr>
                    <td>商品数目</td>
                    <td><input type="text" name="itemnum" value="${param.itemnum}"></td>
                </tr>
           </table>
         </form>
        <table align="center">
         <tr>
           <td><button id="buttonid" class="but">确认修改</button></td>
         </tr>
         <tr>
            <td>
              <button class="but" onclick="window.location.href='businessmandata.jsp'"/>返回</td>
            </td>
          </tr>
        </table><br>
      </body>
  • 相关阅读:
    RTP 控制协议
    非关系型数据库
    关系型数据库
    处理海量数据
    处理大并发
    C++ 模板偏特化-来自STL的思考
    C++详解new/delete
    二分算法来相会
    计算机网络知识点总结
    C++字符串类型转换
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/14166992.html
Copyright © 2020-2023  润新知