课设要求:

自己的备忘录想法

部分预览图:





1、思维导图

2、表结构设计
2.1、User


2.2、w1200

2.3、bck5

2.4、order

3、核心代码
3.1、JSP中修改的代码
index.jsp :

1.   <div class="w1200">
2.      <ul class="bck3_ul1">
3.      <% List<Dish> dlist = (List<Dish>)session.getAttribute("dList"); %>
4.      <%
5.
6.          Date d = new Date();
7.          SimpleDateFormat df = new SimpleDateFormat("d");
8.          String now = df.format(d);
9.          int tang = Integer.valueOf(now);
10.         int num = tang+3;
11.         for(int i = tang ; i < dlist.size() ; i ++) {
12.         if(i < num) {
13.     %>
14.         <li class="bck3_ul1_li1">
15.             <img class="dish" id="img1" src="<%=dlist.get(i+tang).getlSrc() %>">
16.             <div class="bck3_ul1_div">
17.                 <p class="bck3_ul1_div_p1"><%=dlist.get(i+tang).getlName() %></p>
18.                 <p class="bck3_ul1_div_p2"><%=dlist.get(i+tang).getlContent() %></p>
19.                 <p class="bck3_ul1_div_p3">
20.                     <span class="bck3_ul1_div_p3_span1">¥<%=dlist.get(i+tang).getlPrice1() %></span>
21.                     <span class="bck3_ul1_div_p3_span2">原价¥<%=dlist.get(i+tang).getlPrice2() %></span>
22.                 </p>
23.             </div>
24.         </li>
25.     <%    }
26.     } %>
27.
28.         <!-- 固定三个 -->
29.         <%for(int i = 0 ; i < dlist.size() ; i ++) {
30.             if(i < 3) {
31.
32.         %>
33.             <li class="bck3_ul1_li1">
34.                 <img class="dish" id="img1" src="<%=dlist.get(i).getlSrc() %>">
35.                 <div class="bck3_ul1_div">
36.                     <p class="bck3_ul1_div_p1"><%=dlist.get(i).getlName() %></p>
37.                     <p class="bck3_ul1_div_p2"><%=dlist.get(i).getlContent() %></p>
38.                     <p class="bck3_ul1_div_p3">
39.                         <span class="bck3_ul1_div_p3_span1">     ¥<%=dlist.get(i).getlPrice1() %></span>
40.                         <span class="bck3_ul1_div_p3_span2">原价¥<%=dlist.get(i).getlPrice2() %></span>
41.                     </p>
42.                 </div>
43.             </li>
44.         <%    }
45.         } %>
46.         </ul>
47. </div>
48. <div class="w1200" style="overflow: hidden;">
49.     <div class="bck3_div1"><img src="../images/one_k.png"></div>
50.     <a class="bck3_a" href="###" style="margin-top: -40px">查看优惠详情 ></a>
51.
52.     <% List<Chef> clist = (List<Chef>)session.getAttribute("cList"); %>
53.     <%
54.         for(int i = 0 ; i < clist.size() ; i ++) {
55.         if(i < 1) {
56.
57.     %>
58.     <div class="bck5_div1">
59.         <img src="<%=clist.get(0).getlSrc() %>">
60.
61.         <div class="bck5_div1_div">
62.             <p class="bck5_div1_div_p1"><%=clist.get(0).getlName() %>    <%=clist.get(0).getlTitle() %></p>
63.             <p class="bck5_div1_div_p2"><%=clist.get(0).getlContent() %></p>
64.         </div>
65.     </div>
66.
67.
68.     <div class="bck5_div1" style="margin: 0 26px;">
69.         <img src="<%=clist.get(1).getlSrc() %>">
70.         <div class="bck5_div1_div">
71.             <p class="bck5_div1_div_p1"><%=clist.get(1).getlName() %>    <%=clist.get(0).getlTitle() %></p>
72.             <p class="bck5_div1_div_p2"><%=clist.get(1).getlContent() %></p>
73.         </div>
74.     </div>
75.     <div class="bck5_div1">
76.         <img src="<%=clist.get(2).getlSrc() %>">
77.         <div class="bck5_div1_div">
78.             <p class="bck5_div1_div_p1"><%=clist.get(2).getlName() %>    <%=clist.get(2).getlTitle() %></p>
79.             <p class="bck5_div1_div_p2"><%=clist.get(2).getlContent() %></p>
80.         </div>
81.     </div>
82.     <div class="bck5_div1" style="margin-left: 26px;">
83.         <img src="<%=clist.get(3).getlSrc() %>">
84.         <div class="bck5_div1_div">
85.             <p class="bck5_div1_div_p1"><%=clist.get(3).getlName() %>    <%=clist.get(3).getlTitle() %></p>
86.             <p class="bck5_div1_div_p2"><%=clist.get(3).getlContent() %></p>
87.         </div>
88.     </div>
89. <%    }
90.     } %>

fw.jsp :

1.   <div class="seven_div1">
2.      <p>亲爱的顾客,如果您需要预订我们的服务,请仔细填写如下表单,我们整理和汇总信息后将尽快与您取得联系。</p>
3.      <p>请尽量提前4小时预订并保持手机畅通,食味坊真诚期待为您服务。</p>
4.      <form action="/Course_Design/OrderServlet" method="post">
5.          <div style="margin-top:23px;">
6.              <span>进店时间</span>
7.              <input type="text" placeholder="2016年1月1日12点30分" name="otime" required/>
8.          </div>
9.          <div>
10.             <span>联系人</span>
11.             <input type="text" placeholder="小花" name="oname" required/>
12.         </div>
13.         <div>
14.             <span>联系方式</span>
15.             <input type="text" placeholder="13634575464" name="ophone" required/>
16.         </div>
17.         <div>
18.             <span>预估人数</span>
19.             <input type="text" placeholder="8人" name="onumber" required/>
20.         </div>
21.         <div style="line-height:14px">
22.             <span>备注</span>
23.             <textarea rows="6" style="resize:none" name="omark" required>
24.          </div>
25.          <input class="input1" type="submit" value="提交" onclick="alert('已提交!');">
26.      </form>
27. </div>
28.
29.

Login.jsp:

   30.   <div class="col-md-4 col-md-push-2">  31.      <div  class="fh5co-form animate-box" data-animate-effect="fadeInRight">  32.        <br>  33.     <center><h2>LOGIN</h2></center>  34.        <form action="${path }/loginServlet" method="post" >  35.           <div class="form-group">  36.              <input type="text" class="form-control" id="username" name="username" placeholder="用户名" autocomplete="off">  37.            </div>  38.           <div class="form-group">  39.              <input type="password" class="form-control" id="password" name="password" placeholder="密码" autocomplete="off">  40.         </div>  41.     42.           <br>  43.         请输入验证码:<input type="text" id="code_input" name="valicode" value="" />  44.         <br>  45.         <br>  46.         <div id="v_container" style="width: 200px;height: 50px;margin-left:0px;">  47.                  </div>  48.                       <input type="hidden" name="res" id="verifyCode" value=""/>      49.                   <div class="form-group">  50.                      <br>  51.                     <input type="submit" id="my_button" value="登录" class="btn btn-primary">  52.                  </div>  53.               </form>  54.              <div class="form-group ">  55.                 <p>没有注册用户?   <a href="register.jsp">点击立即注册</a> </p>  56.              </div>  57.       </div>  58.   </div>  59.     60.   <div class="row" style="padding-top: 60px; clear: both;margin-top: 50px;">  61.     <div class="col-md-12 text-center">  62.           <p>  63.              <small>  64.                  版权所有-食味坊 ©2019  65.             </small>  66.         </p>  67.     </div>  68.   </div>  69.     70.   <script src="../js/jquery.waypoints.min.js"></script>  71.   <script src="../js/main.js"></script>  72.   <script src="../js/gVerify.js"></script>  73.    <script type="text/javascript" src="../js/jquery-3.3.1.js"></script>  74. <script>  75.   76.       var verifyCode = new GVerify("v_container");  77.        document.getElementById("my_button").onclick = function(){  78.          var res = verifyCode.validate(document.getElementById("code_input").value);  79.         document.getElementById("verifyCode").value=res;  80.        }  81.  </script>

Register.jsp:

1.   <div class="col-md-4 col-md-push-2">
2.
3.      <div class="fh5co-form animate-box" data-animate-effect="fadeInRight">
4.          <center><h2>Register</h2></center>
5.          <hr style="margin-top: -20px;" />
6.          <input id="display" type="text" value="" style="display: none">
7.          <form action="${pageContext.request.contextPath}/RegistServlet" id="RegistForm" method="post">
8.              <div class="form-group">
9.                  <input type="text" class="form-control" id="username" name="username" placeholder="用户名" autocomplete="off" required>
10.             </div>
11.             <div class="form-group">
12.                 <input type="password" class="form-control" id="password" name="password" placeholder="密码" autocomplete="off" required>
13.             </div>
14.             <div class="form-group">
15.                 <input type="password" class="form-control" id="re-password" name="re-password" placeholder="重复密码" autocomplete="off" required>
16.             </div>
17.             <div class="form-group">
18.                 <input type="email" class="form-control" id="email" name="email"  placeholder="请填写邮箱地址..." required>
19.             </div>
20.             <div class="form-group">
21.                 <input type="text" class="form-control" id="code" name="code" placeholder="验证码" style="float: left;width: 110px;" required />
22.                 <input type="button" name="btn" id="btn" class="btn btn-primary" value="点击获取验证码" style="margin-left: 40px;"/>
23.                 </div>
24.                 <span id="notice" class="hide">请先完成邮箱验证</span><br />
25.                 <label>
26.                     <input type="checkbox" id="check" name="check" required> 我已认真阅读并同意《<a href="agreement.html" target="_blank">食味坊会员协议</a>》
27.                 </label>
28.                 <br>
29.                 <br>
30.
31.                 <div class="form-group">
32.                     <input value="注册" class="btn btn-primary" type="submit" id="submit" >
33.                 </div>
34.             </form>
35.             <div class="form-group">
36.                 <p>是否存在账号?  | 存在就登录啊-><a href="html/login.jsp">点我啊</a></p>
37.             </div>
38.
39.         </div>
40.
41.
42.     </div>
43. </div>
44. <div class="row" style="padding-top: 60px; clear: both;margin-top: 50px;">
45.                 <div class="col-md-12 text-center">
46.                     <p>
47.                         <small>
48.                             版权所有-食味坊 ©2019
49.                         </small>
50.                     </p>
51.                 </div>
52.             </div>
53.         </div>
54. <script src="js/jquery.waypoints.min.js"></script>
55.     <script src="js/main.js"></script>
56.         <script src="js/jquery-3.3.1.js"></script>
57.         <script type="text/javascript">
58. $(function(){
59.     $("#btn").click(function(){
60.         if($("#email").val()){
61.             $.ajax({
62.                 type:"POST",
63.                 url :"SendEmailServlet?random"+Math.random(),
64.                 data:{
65.                     email:$("#email").val(),
66.                 },
67.                 success:function(data){
68.                     alert("验证码发送成功,请注意查收。");
69.                 },
70.             })
71.         }else{
72.             alert("邮箱发送失败");
73.             $("#notice").html("请填写邮箱");
74.             setTimeout(function(){
75.                 $("#notice").hide();
76.             },1000);
77.         }
78.     }
79.     );
80. });
81.     </script>

usersManage.jsp :

1.    <header>
2.      <div class='navbar'>
3.          <div class='navbar-inner'>
4.              <div class='container-fluid'>
5.                  <a class='brand' href='index.jsp'>
6.                      <i class='icon-heart-empty'></i>
7.                      <span class='hidden-phone title'>食味坊</span>
8.                  </a>
9.                  <a class='toggle-nav btn pull-left' href='#'>
10.                     <i class='icon-reorder'></i>
11.                 </a>
12.                 <ul class='nav pull-right'>
13.                     <li class='dropdown dark user-menu'>
14.                         <a class='dropdown-toggle' data-toggle='dropdown' href='#'>
15.                             <img alt='Mila Kunis' height='23' src='assets/images/avatar.jpg' width='23' />
16.                             <span class='user-name hidden-phone'>欢迎</span>
17.                             <b class='caret'></b>
18.                         </a>
19.                         <ul class='dropdown-menu'>
20.                             <li>
21.                                 <a href='login.html'>
22.                                     <i class='icon-signout'></i>
23.                                         退出登录
24.                                 </a>
25.                             </li>
26.                         </ul>
27.                     </li>
28.                 </ul>
29.             </div>
30.         </div>
31.     </div>
32. </header>
33. <div id='wrapper'>
34.     <div id='main-nav-bg'></div>
35.     <nav class='' id='main-nav'>
36.         <div class='navigation'>
37.             <ul class='nav nav-stacked'>
38.                 <li class='active'>
39.                     <a href='index.jsp'>
40.                         <i class='icon-dashboard'></i>
41.                         <span>后台首页</span>
42.                     </a>
43.                 </li>
44.                 <li class=''>
45.                     <a class='dropdown-collapse' href='#'>
46.                         <i class='icon-edit'></i>
47.                         <span>用户管理</span>
48.                         <i class='icon-angle-down angle-down'></i>
49.                     </a>
50.                     <ul class='nav nav-stacked'>
51.                         <li class=''>
52.                             <a href='/Course_Design/ShowManagerServlet'>
53.                                 <i class='icon-caret-right'></i>
54.                                 <span>管理员管理</span>
55.                             </a>
56.                         </li>
57.                         <li class=''>
58.                             <a href='/Course_Design/ShowUserServlet'>
59.                                 <i class='icon-caret-right'></i>
60.                                 <span>普通用户管理</span>
61.                             </a>
62.                         </li>
63.                     </ul>
64.                 </li>
65.                 <li>
66.                     <a class='dropdown-collapse ' href='#'>
67.                         <i class='icon-cogs'></i>
68.                         <span>后台操作</span>
69.                         <i class='icon-angle-down angle-down'></i>
70.                     </a>
71.                     <ul class='nav nav-stacked'>
72.                         <li class=''>
73.                             <a href='/Course_Design/ShowDishServlet'>
74.                                 <i class='icon-pencil'></i>
75.                                 <span>更新菜品</span>
76.                             </a>
77.                         </li>
78.                         <li class=''>
79.                             <a href='/Course_Design/ShowOrderServlet'>
80.                                 <i class='icon-list-ul'></i>
81.                                 <span>查看订单</span>
82.                             </a>
83.                         </li>
84.                     </ul>
85.                 </li>
86.             </ul>
87.         </div>
88.     </nav>
89.     <section id='content'>
90.         <div class='container-fluid'>
91.             <div class='row-fluid' id='content-wrapper'>
92.                 <div class='span12'>
93.                     <div class='row-fluid'>
94.                         <div class='span12'>
95.                             <div class='page-header'>
96.                                 <h1 class='pull-left'>
97.                                     <i class='icon-pencil'></i>
98.                                     <span>用户管理</span>
99.                                 </h1>
100.                                    <div class="stangcontainer">
101.                            <form action="/Course_Design/SelectUserServlet" method="post" class="stangparent">
102.                                <input type="text" class="tangsearch" id="serach" name="search" placeholder="搜索" style=" border-radius:18px;">
103.                    <input type="submit" name="" id="" class="stangbtn" value="">
104.                </form>
105.            </div>
106.                             </div>
107.                         </div>
108.                     </div>
109.                     <div class='alert alert-info'>
110.                         <a class='close' data-dismiss='alert' href='#'>×</a>
111.                            欢迎来到
112.                         <strong>食味坊</strong>
113.                            用户管理页面,请进行合理操作。
114.                     </div>
115.                     <div class='row-fluid'>
116.                         <div class='clearfix'></div>
117.                         <table class='table table-bordered table-striped' id='inplaceediting-user' style='margin-top: 20px'>
118.                             <tbody id="alluser">
119.            <tr>
120.                                     <td style='width:15%'>序号</td>
121.                                     <td style='width:35%'>用户名</td>
122.                                     <td style='width:25%'>密码</td>
123.                                     <td>操作</td>
124.                                 </tr>
125.                             <c:forEach items="${uList}" var="usr" varStatus="idx">
126.                                 <tr>
127.                                     <td style='width:15%'>${idx.index+1}</td>
128.                                     <td style='width:35%'>${usr.username}</td>
129.                                     <td style='width:25%'>${usr.password}</td>
130.                                     <td>
131.                                        <a href="/Course_Design/UpGradeServlet?update_id=${usr.id}">
132.                                         <input type="button" value="授权" onclick="confirm('确定要对此用户进行授权吗?')"></a>
133.
134.                                         <a href="/Course_Design/delUserServlet?delete_id=${usr.id}">
135.                                         <input type="button" value="删除" onclick="confirm('确定要删除此用户吗?')"></a>
136.
137.                                         <a href="/Course_Design/html/personalCenter.jsp">
138.                                         <input type="button" value="个人资料" ></a>
139.                                     </td>
140.                                 </tr>
141.                              </c:forEach>
142.                                </tbody>
143.                            </table>
144.                            <hr class='hr-normal' />
145.                        </div>
146.                    </div>
147.                </div>
148.            </div>
149.    </section>
150.    </div>

updateDish.jsp :

1.   <div class='alert alert-info'>
2.      <a class='close' data-dismiss='alert' href='#'>×</a>
3.          欢迎来到
4.      <strong>食味坊</strong>
5.          菜单管理页面,请进行合理操作。
6.  </div>
7.  <div class='row-fluid'>
8.      <div class='clearfix'></div>
9.      <table class='table table-bordered table-striped' id='inplaceediting-user' style='margin-top: 20px'>
10.          <tbody id="alladmin">
11.                 <tr>
12.                     <td style='width:10%'>序号</td>
13.                     <td style='width:20%'>菜名</td>
14.                     <td style='width:25%'>菜品介绍</td>
15.                     <td style='width:15%'>折扣价</td>
16.                     <td style='width:15%'>原价</td>
17.                     <td>操作</td>
18.                 </tr>
19.             <c:forEach items="${DList}" var="dis" varStatus="idx">
20.                   <tr>
21.                       <td style='width:10%'>${idx.index+1}</td>
22.                       <td style='width:20%'><img class="dish" id="img1" src="${dis.lSrc}">
23.                                   ${dis.lName}</td>
24.                       <td style='width:25%'>${dis.lContent}</td>
25.                       <td style='width:15%'>${dis.lPrice1}</td>
26.                       <td style='width:15%'>${dis.lPrice2}</td>
27.                       <td>
28.                           <a href="/Course_Design/editDishServlet?update_id=${dis.id}">
29.                           <input type="button" value="修改" onclick="confirm('确定要修改该菜品的信息吗?')"></a>
30.
31.                         <a href="/Course_Design/delDishServlet?delete_id=${dis.id}">
32.                           <input type="button" value="删除" onclick="confirm('确定要删除此菜品吗?')"></a>
33.
34.                       </td>
35.                   </tr>
36.             </c:forEach>
37.         </tbody>
38.     </table>
39.     <hr class='hr-normal' />
40. </div>

3.2、Servlet程序代码
LoginServlet :

1.   public class LoginServlet extends HttpServlet {
2.      private static UserService service = new UserService();
3.
4.      @Override
5.      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
6.
7.          response.setContentType("text/html,charset=GBK");
8.          response.setCharacterEncoding("GBK");
9.
10.         PrintWriter out = response.getWriter();
11.
12.         String uname = request.getParameter("username") == null ? "" : request.getParameter("username");
13.         String pw = request.getParameter("password")    == null ? "" : request.getParameter("password");
14.         String valicode = request.getParameter("valicode")  == null ? "" : request.getParameter("valicode");
15.         String res = request.getParameter("res");
16.
17.         if("".equals(uname) || "".equals(pw)) {
18.             out.println("<script>alert('用户名/密码不得为空!');window.history.back(-1);</script>");
19.
20.             System.out.println("用户名/密码不得为空!");
21.         } else if("".equals(valicode)){
22.             out.println("<script>alert('验证码不得为空!');window.history.back(-1);</script>");
23.         }else{
24.             // 判断用户名、密码是否是正确的
25.             // 可以通过页面输入的用户名及密码查询到某条数据就可以了。
26.             // 检索数据库时有能查到多条记录。不允许登录。
27.             // 给用户名添加唯一约束。unique
28.             User user = new User();
29.             user.setUsername(uname);
30.             user.setPassword(pw);
31.             try {
32.                 List<User> uList = service.userCheck(user);
33.
34.                 if(uList.size() == 0){
35.                     // 没有查到记录
36.                     out.write("<script>alert('用户名/密码错误!');window.history.back(-1);</script>");
37.                 } else if (uList.size() == 1) {
38.                     // 正常处理,允许登录
39.                     if("true".equals(res)){
40.                         user = uList.get(0);
41.                         HttpSession session = request.getSession();
42.                         session.setAttribute("user", user);
43.                         if("admin".equals(uname)){
44.                             out.write("<script>alert('管理员用户登录成功!')</script>");
45.                             response.sendRedirect(request.getServletContext().getContextPath()+"/Backstage/index.jsp");
46.                         }else{
47.                             out.write("<script>alert('登录成功!')</script>");
48.                             response.sendRedirect(request.getServletContext().getContextPath()+"/html/login_success.jsp");
49.                         }
50.                     }else{
51.                         out.write("<script>alert('验证码输入错误,请重新输入!');window.history.back(-1);</script>");
52.                     }
53.                 } else {
54.                     // 查询到了多条记录
55.                     out.write("<script>alert('用户异常,请与管理员联系!');window.history.back(-1);");
56.                 }
57.
58.             }catch(Exception ex) {
59.                 ex.printStackTrace();
60.             }
61.
62.
63.         }
64.         out.flush();
65.         out.close();
66.
67.     }

IndexServlet:

1.   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
2.          List<Dish> dList = new ArrayList<Dish>();
3.          //1. Dish 查询数据库
4.          try {
5.              Class.forName(Const.MYSQL_DRIVER);
6.              Const.CONN =DriverManager.getConnection(
7.                          Const.MYSQL_URL,
8.                          Const.MYSQL_USERNAME,
9.                          Const.MYSQL_PASSWORD
10.                     );
11.
12.             String sql = "select * from w1200";
13.
14.             Const.PS = Const.CONN.prepareStatement(sql);
15.             Const.RS = Const.PS.executeQuery();
16.
17.             while(Const.RS.next()) {
18.                 Dish d = new Dish();
19.                 d.setId(Const.RS.getInt("id"));
20.                 d.setlName(Const.RS.getString("lname"));
21.                 d.setlContent(Const.RS.getString("lcontent"));
22.                 d.setlPrice1(Const.RS.getDouble("lprice1"));
23.                 d.setlPrice2(Const.RS.getDouble("lprice2"));
24.                 d.setlSrc(Const.RS.getString("lsrc"));
25.                 d.setlType(Const.RS.getString("ltype"));
26.
27.                 dList.add(d);
28.             }
29.
30.         }catch( Exception ex) {
31.             ex.printStackTrace();
32.         } finally {
33.             Const.close();
34.         }
35.         HttpSession session = request.getSession();//session存值,所有页面都可以获取,不用担心取不到值的问题
36.         session.setAttribute("dList", dList);
37.
38.         List<Chef> cList = new ArrayList<Chef>();
39.         //厨师
40.         try {
41.             Class.forName(Const.MYSQL_DRIVER);
42.             Const.CONN =DriverManager.getConnection(
43.                         Const.MYSQL_URL,
44.                         Const.MYSQL_USERNAME,
45.                         Const.MYSQL_PASSWORD
46.                     );
47.             String sql = "select * from bck5";
48.
49.             Const.PS = Const.CONN.prepareStatement(sql);
50.             Const.RS = Const.PS.executeQuery();
51.
52.             while(Const.RS.next()) {
53.                 Chef c = new Chef();
54.                 c.setId(Const.RS.getInt("id"));
55.                 c.setlName(Const.RS.getString("lname"));
56.                 c.setlTitle(Const.RS.getString("ltitle"));
57.                 c.setlContent(Const.RS.getString("lcontent"));
58.                 c.setlSrc(Const.RS.getString("lsrc"));
59.
60.                 cList.add(c);
61.             }
62.
63.
64.
65.         }catch( Exception ex) {
66.             ex.printStackTrace();
67.         } finally {
68.             Const.close();
69.         }
70.         HttpSession session1 = request.getSession();//session存值,所有页面都可以获取,不用担心取不到值的问题
71.         session1.setAttribute("cList", cList);
72.
73.         response.sendRedirect(request.getServletContext().getContextPath()+"/html/index.jsp");
74.
75.     }

RegisterServlet:

1.   protected void doPost(HttpServletRequest request, HttpServletResponse response)
2.          throws ServletException, IOException {
3.      response.setContentType("text/html,charset=GBK");
4.      response.setCharacterEncoding("GBK");
5.
6.      PrintWriter out = response.getWriter();
7.      // 获取session中的验证码
8.      String sessionCode = (String) request.getSession().getAttribute("code");
9.      System.out.println(sessionCode);
10.
11.     String uname = request.getParameter("username");
12.     String pw = request.getParameter("password");
13.     String rpw = request.getParameter("re-password");
14.     String check = request.getParameter("check") == null ? "" : request.getParameter("check");
15.
16.     if(!pw.equals(rpw)){
17.         out.println("<script>alert('两次密码输入不一致,请及时更改!');window.history.back(-1);</script>");
18.     }else{
19.
20.         if(sessionCode != null) {
21.             //  获取页面提交的验证码
22.             String inputCode = request.getParameter("code");
23.             System.out.println("页面提交的验证码:" + inputCode);
24.
25.             User user = new User();
26.             user.setUsername(uname);
27.             user.setPassword(pw);
28.
29.             if (sessionCode.toLowerCase().equals(inputCode.toLowerCase())) {
30.
31.                     try {
32.                         List<User> uList = service.userCheck1(user);
33.
34.                         if(uList.size() == 0){
35.                             // 正常处理,允许注册
36.                             boolean addFlag = service.addUser(user);
37.                             //  验证成功,跳转成功页面
38.                             response.sendRedirect(request.getServletContext().getContextPath()+"/html/loading.jsp");
39.
40.                         } else if (uList.size() > 0) {
41.                                 out.write("<script>alert('该用户已被注册,请及时更换用户名!');window.history.back(-1);</script>");
42.
43.                         } else {
44.                             // 查询到了多条记录
45.                             out.write("<script>alert('用户异常,请与管理员联系!');window.history.back(-1);");
46.                         }
47.
48.                     }catch(Exception ex) {
49.                         ex.printStackTrace();
50.                     }
51.             }else {
52.                 //  验证失败
53.                 request.getRequestDispatcher("/html/fail.jsp").forward(request, response);
54.             }
55.         }else {
56.             //  验证失败
57.             request.getRequestDispatcher("/html/fail.jsp").forward(request, response);
58.         }
59.         //  移除session中的验证码
60.         request.removeAttribute("code");
61.     }
62. }

AddDishServlet:

1.   DishService service = new DishService();
2.  @Override
3.  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
4.
5.      response.setContentType("text/html,charset=GBK");
6.      response.setCharacterEncoding("GBK");
7.      request.setCharacterEncoding("utf-8");
8.
9.      PrintWriter out = response.getWriter();
10.
11.     // 1. 获取页面数据
12.     String dname = request.getParameter("dname");
13.     String dcontent = request.getParameter("dcontent");
14.     Double dprice1 = Double.parseDouble(request.getParameter("dprice1"));
15.     Double dprice2 = Double.parseDouble(request.getParameter("dprice2"));
16.     String dsrc = request.getParameter("dsrc");
17.
18.     Dish dish = new Dish(dname,dcontent,dprice1,dprice2,dsrc);
19.
20.     boolean addFlag = service.addDish(dish);
21.     //  验证成功,跳转成功页面
22.     if(addFlag){
23.         response.sendRedirect(request.getServletContext().getContextPath()+"/ShowDishServlet");
24.     }else{
25.         out.write("<script>alert('提交失败!');window.history.back(-1);</script>;");
26.     }
27. }
DelDishServlet:
1.  private DishService service = new DishService();
2.
3.  @Override
4.  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
5.      // 获取要删除学生ID主键
6.      int did = Integer.parseInt(request.getParameter("delete_id").toString());
7.      boolean flag = service.delDish(did);
8.
9.      HttpSession session = request.getSession();
10.
11.     response.sendRedirect(request.getServletContext().getContextPath() + "/ShowDishServlet");
12. }
EditDishPojoServlet:
1.  private DishService service = new DishService();
2.      protected void doPost(
3.              HttpServletRequest request,
4.              HttpServletResponse response)
5.                      throws ServletException, IOException {
6.          response.setContentType("text/html,charset=GBK");
7.          response.setCharacterEncoding("GBK");
8.          request.setCharacterEncoding("utf-8");
9.
10.         PrintWriter out = response.getWriter();
11.         // 1. 获取页面数据
12.         String dname = request.getParameter("dname");
13.         String dcontent = request.getParameter("dcontent");
14.         Double dprice1 = Double.parseDouble(request.getParameter("dprice1"));
15.         Double dprice2 = Double.parseDouble(request.getParameter("dprice2"));
16.         String dsrc = request.getParameter("dsrc");
17.         Integer id = Integer.parseInt(request.getParameter("id"));
18.         // 2. 封装对象
19.         Dish dish = new Dish(id,dname,dcontent,dprice1,dprice2,dsrc);
20.         // 3. 进行修改
21.         boolean flag = service.updDish(dish);
22.         if(flag){
23.         // 4. 重定向
24.             response.sendRedirect(request.getServletContext().getContextPath() + "/ShowDishServlet");
25.         }else{
26.             out.write("<script>alert('修改失败!');window.history.back(-1);</script>;");
27.         }
28.     }

SelectDishServlet:

1.   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
2.
3.      response.setContentType("text/html,charset=GBK");
4.      response.setCharacterEncoding("GBK");
5.      request.setCharacterEncoding("utf-8");
6.
7.      PrintWriter out = response.getWriter();
8.      String uname = request.getParameter("search") == null ? "" : request.getParameter("search");
9.
10.     if("".equals(uname)){
11.         response.sendRedirect(request.getServletContext().getContextPath()+"/ShowDishServlet");
12.     }else{
13.         List<Dish> DList = new ArrayList<Dish>();
14.
15.         try {
16.             Class.forName(Const.MYSQL_DRIVER);
17.             Const.CONN =DriverManager.getConnection(
18.                         Const.MYSQL_URL,
19.                         Const.MYSQL_USERNAME,
20.                         Const.MYSQL_PASSWORD
21.                     );
22.
23.             String sql = "select * from w1200 where lname like ? " ;
24.
25.             Const.PS = Const.CONN.prepareStatement(sql);
26.
27.             Const.PS.setString(1,"%"+uname+"%");
28.             Const.RS = Const.PS.executeQuery();
29.
30.             while(Const.RS.next()) {
31.                 Dish D = new Dish();
32.                 D.setId(Const.RS.getInt("id"));
33.                 D.setlName(Const.RS.getString("lname"));
34.                 D.setlContent(Const.RS.getString("lcontent"));
35.                 D.setlPrice1(Const.RS.getDouble("lprice1"));
36.                 D.setlPrice2(Const.RS.getDouble("lprice2"));
37.                 D.setlSrc(Const.RS.getString("lsrc"));
38.                 D.setlType(Const.RS.getString("ltype"));
39.
40.                 DList.add(D);
41.             }
42.
43.         }catch( Exception ex) {
44.             ex.printStackTrace();
45.         } finally {
46.             Const.close();
47.         }
48.         HttpSession session = request.getSession();//session存值,所有页面都可以获取,不用担心取不到值的问题
49.         session.setAttribute("DList",DList);
50.         response.sendRedirect(request.getServletContext().getContextPath()+"/Backstage/updateDish.jsp");
51.
52.     }
53.
54. }

SendEmailServlet:

1.   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
2.         // 收件人电子邮箱
3.         String to = request.getParameter("email");
4.         // 发件人电子邮箱
5.         String from = "7712102@qq.com";
6.
7.         // 指定发送邮件的主机为 smtp.qq.com
8.         String host = "smtp.qq.com";  //QQ 邮件服务器
9.
10.        // 获取系统属性
11.        Properties properties = System.getProperties();
12.
13.        // 设置邮件服务器
14.        properties.setProperty("mail.smtp.host", host);
15.
16.        properties.put("mail.smtp.auth", "true");
17.        MailSSLSocketFactory sf = null;
18.        try {
19.            sf = new MailSSLSocketFactory();
20.        } catch (GeneralSecurityException e) {
21.            e.printStackTrace();
22.        }
23.        sf.setTrustAllHosts(true);
24.        properties.put("mail.smtp.ssl.enable", "true");
25.        properties.put("mail.smtp.ssl.socketFactory", sf);
26.        // 获取默认session对象
27.        Session session = Session.getDefaultInstance(properties,new Authenticator(){
28.            public PasswordAuthentication getPasswordAuthentication()
29.            {
30.                return new PasswordAuthentication("7712102@qq.com", "ssznzndqynosbajj"); //发件人邮件用户名、密码
31.            }
32.        });
33.
34.        try{
35.            // 创建默认的 MimeMessage 对象
36.            MimeMessage message = new MimeMessage(session);
37.
38.            // Set From: 头部头字段
39.            message.setFrom(new InternetAddress(from));
40.
41.            // Set To: 头部头字段
42.            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
43.
44.            // Set Subject: 头部头字段
45.            message.setSubject("请仔细查看验证码");
46.
47.            // 设置消息体
48.            int intFlag = (int)(Math.random() * 1000000);
49.            message.setText("验证码为"+intFlag);
50.
51.            // 发送消息
52.            Transport.send(message);
53.            response.getWriter().print(intFlag);
54.        }catch (MessagingException mex) {
55.            mex.printStackTrace();
56.        }
57.    }

ShowDishServlet:

1.   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
2.          List<Dish> DList = new ArrayList<Dish>();
3.          //1. User 查询数据库
4.          try {
5.              Class.forName(Const.MYSQL_DRIVER);
6.              Const.CONN =DriverManager.getConnection(
7.                          Const.MYSQL_URL,
8.                          Const.MYSQL_USERNAME,
9.                          Const.MYSQL_PASSWORD
10.                     );
11.
12.             String sql = "select * from w1200";
13.
14.             Const.PS = Const.CONN.prepareStatement(sql);
15.             Const.RS = Const.PS.executeQuery();
16.
17.             while(Const.RS.next()) {
18.                 Dish D = new Dish();
19.                 D.setId(Const.RS.getInt("id"));
20.                 D.setlName(Const.RS.getString("lname"));
21.                 D.setlContent(Const.RS.getString("lcontent"));
22.                 D.setlPrice1(Const.RS.getDouble("lprice1"));
23.                 D.setlPrice2(Const.RS.getDouble("lprice2"));
24.                 D.setlSrc(Const.RS.getString("lsrc"));
25.                 D.setlType(Const.RS.getString("ltype"));
26.
27.                 DList.add(D);
28.             }
29.
30.
31.         }catch( Exception ex) {
32.             ex.printStackTrace();
33.         } finally {
34.             Const.close();
35.         }
36.         HttpSession session = request.getSession();//session存值,所有页面都可以获取,不用担心取不到值的问题
37.         session.setAttribute("DList", DList);
38.         response.sendRedirect(request.getServletContext().getContextPath()+"/Backstage/updateDish.jsp");
39.       }
UpGradeServlet:
1.  private UserService service = new UserService();
2.  @Override
3.  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
4.      // 获取要授权学生ID主键
5.      int uid = Integer.parseInt(request.getParameter("update_id").toString());
6.      boolean flag = service.upUser(uid);
7.
8.      HttpSession session = request.getSession();
9.
10.     response.sendRedirect(request.getServletContext().getContextPath() + "/ShowManagerServlet");
11. }

3.3、重要的配置文件代码
web.xml:

1.   <?xml version="1.0" encoding="UTF-8"?>
2.  <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
3.    <display-name>Course_Design</display-name>
4.    <servlet>
5.      <servlet-name>addUserServlet</servlet-name>
6.      <servlet-class>com.tang.action.AddUserServlet</servlet-class>
7.    </servlet>
8.    <servlet-mapping>
9.      <servlet-name>addUserServlet</servlet-name>
10.     <url-pattern>/addUserServlet</url-pattern>
11.   </servlet-mapping>
12.   <servlet>
13.     <servlet-name>loginServlet</servlet-name>
14.     <servlet-class>com.tang.action.LoginServlet</servlet-class>
15.   </servlet>
16.   <servlet-mapping>
17.     <servlet-name>loginServlet</servlet-name>
18.     <url-pattern>/loginServlet</url-pattern>
19.   </servlet-mapping>
20. </web-app>
21. @WebServlet(urlPatterns ="/addDishServlet")
22. @WebServlet("/DeGradeServlet")
23. @WebServlet(urlPatterns ="/delDishServlet")
24. @WebServlet(urlPatterns ="/delOrderServlet")
25. @WebServlet(urlPatterns ="/delUserServlet")
26. @WebServlet(urlPatterns ="/editDishPojoServlet")
27. @WebServlet(urlPatterns ="/editDishServlet")
28. @WebServlet(urlPatterns ="/IndexServlet")
29. @WebServlet(urlPatterns ="/OrderServlet")
30. @WebServlet("/SelectDishServlet")
31. @WebServlet("/SelectManagerServlet")
32. @WebServlet("/SelectUserServlet")
33. @WebServlet(name = "SendEmailServlet",urlPatterns = "/email")
34. @WebServlet("/ShowDishServlet")
35. @WebServlet("/ShowManagerServlet")
36. @WebServlet("/ShowOrderServlet")
37. @WebServlet("/ShowUserServlet")
38. @WebServlet("/UpGradeServlet")

4、心得体会
JSP的全称Java Server Pages,它是一种动态网页技术。我们需要配置的环境有JDK,Tomcat,还需要用到一些网页编辑器,比如Dreamweaver,visual studio code。JSP是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。我从大一加入软协开始首先接触了web前端,用HTML做出一个又一个页面,心里略微有些成就感,后来到了大二学做动态网站,学习JSP,掌握JSP内部对象以及内部对象所对应的一些方法,再就是JSP与数据库的联系,怎么样引用数据库。
经过了两个星期的努力,我终于完成了项目1中我一开始想要实现的功能,这个项目1基本上实现了一般网站的功能,但由于经验不足,很多地方没有做到最好,而是用了一些比较麻烦的办法来替代,这算是一个缺陷和遗憾了。不过我一定会继续努力,学会更多更好用的技术。总的来说,在做这个网页的过程中,我从csdn查阅大量的相关资料,也百度了大量的相关技术,利用思维导图,一步一步的实现自己想要的功能,从需求分析,到数据库设计,再到编码,调试运行等步骤进行,这些经验对我来说非常宝贵。

5、遇到的问题与思考

【JSP课程设计】实现动态网页及后台搭建--食味坊相关推荐

  1. 基于Jsp、Java、数据库、HTML实现网上投票系统(含文档和代码)Jsp课程设计

    目录 摘要 第1章 课程设计内容及要求 第2章 系统分析 2.1 系统简介 2.2 系统功能 第3章 系统设计 3.1 开发工具简介 3.2 总体功能模块设计 第4章 系统实现 4.1 数据库实现 4 ...

  2. jsp网上商城jsp课程设计

    演示地址:http://119.29.142.195/webshop/home.jsp 代码仅供参考!!!仅供参考!!!当学期的课程设计又拿了班上第一名. com.webshop.dao.impl包 ...

  3. 吴志祥php动态网页设计_PHP动态网页制作—毕业设计论文.doc

    PHP动态网页制作 摘 要 留言薄及数据库管理系统是一个成功的网站不可缺少的部分,它的存在对 管员来说都至关重要,所以留言薄及数据库管理应该能够为网站管理员提供用户的 反馈信息和快捷的查询手段.这种管 ...

  4. 【JSP课程设计】个人信息管理系统(代码保姆级)

    目录 开发工具及开发环境 WEB系统注册与登录功能模块需求 1.1 注册功能 1.2 登录功能 登陆时的过程: 1.3 填写补充信息功能 1.3 查看注册信息功能 1.4 修改用户信息功能 1.5 用 ...

  5. 大二学生Web课程设计 美食主题网页制作(HTML+CSS+JavaScript)

    ⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | 精彩专栏推荐 美食网页介绍 | 甜品蛋糕 | 地方美食小吃文化 ...

  6. 大一学生Web课程设计 美食主题网页制作(HTML+CSS+JavaScript)-咖啡 6页

    源码获取 文末联系 Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业 | 精彩专栏推荐 美食网页介绍 | 甜品蛋糕 | 地方美食小吃文化 | 餐 ...

  7. web前端课程设计——动漫网页2个网页HTML+CSS web前端开发技术 web课程设计 网页规划与设计

    HTML实例网页代码, 本实例适合于初学HTML的同学.该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代 ...

  8. web前端课程设计——动漫网页2个网页HTML CSS web前端开发技术 web课程设计 网页规划与设计

    HTML实例网页代码, 本实例适合于初学HTML的同学.该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代 ...

  9. 大二Web课程设计——家乡主题网页设计(web前端网页制作课作业) 四川旅游网页设计制作

    家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套.浮动.margin.border.background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大 ...

最新文章

  1. 【SpringMVC】基本概念
  2. 树莓派4外置wifi天线_树莓派打造最强车载娱乐终端(1)音乐和WiFi
  3. php识别地址,实现地址自动识别实例(PHP)
  4. 【笔记】iOS开发基础笔记二
  5. [Oracle][ODBC SQL Server Driver][SQL Server]对象名 'RECOVER.HS_TRANSACTION_LOG' 无效(转)
  6. Oreilly.Python.Cookbook(3rd.Edition.May.2013)pdf
  7. MVC+LINQToSQL的Repository模式之(二)数据基类
  8. 江苏大学矩阵论、数理统计期末考试复习
  9. python-笔记(二)数据类型
  10. python对landsat8数据进行辐射校正
  11. 网银爬虫系统(爬取网银流水,爬取网银余额)难点分析
  12. 老人信息管理系统c语言,基于STM32的老人吃药提醒器——智能电子药盒设计(原理图、PCB源文件、源码、APP源码等)...
  13. 用 JAVA 开发游戏连连看(之二)实现游戏的算法
  14. 新的GSMA报告强调“智联万物”在全球的作用
  15. onfocus获取焦点事件与onblur失去焦点事件
  16. 10种室内定位技术原理深度解析
  17. Go开发中配置一个Logger日志的功能实现(结合zap日志库)
  18. 深入理解FlexRay传输层协议ISO10681-2
  19. oracle19数据库对内存要求,在天堂 - 技术老男
  20. 读《做人的最高境界是厚道》有感

热门文章

  1. vue中使用excel导出,详细步骤
  2. python docx处理word文档中表格合并问题
  3. 支付宝支付开发实践总结-Java-支付宝当面付-支付宝小程序-二维码生成-支付宝退款-APP调起支付宝支付
  4. iPad Air越狱白苹果怎么办?越狱白苹果修复教程
  5. ifix 自动化(Automation)错误弹窗的解决方案
  6. 月薪3W的游戏运营都做哪些工作?
  7. 大数据搜索的互联网思维
  8. 一笔画(AC)DFS算法
  9. 安装Linux、windows的vhd系统指南
  10. mac xquartz+iterm2