开启掘金成长之旅!这是我参与「掘金日新计划 · 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、遇到的问题与思考