您的位置:首页 > Web前端 > JavaScript

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

2019-07-19 23:01 1316 查看

课设要求:

自己的备忘录想法

部分预览图:





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 = "771256102@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("771256102@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、遇到的问题与思考

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: