【Java编程】实现动态网页及后台搭建

82 阅读8分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第25天,点击查看活动详情.

课设要求: 在这里插入图片描述

自己的备忘录想法

在这里插入图片描述

部分预览图:

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

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、遇到的问题与思考 在这里插入图片描述