博客系统开发推送第六季----留言板模块

桃扇骨 2022-06-15 07:46 213阅读 0赞

今天中午趁着精神,写了一个小时的程序,做了留言板模块的功能,加上前面所做的部分,现在已经大体完成了整个系统的功能。

# 本次模块部分核心源码:

writeMessage.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>编写留言</title>
  8. <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  9. <script type="text/javascript" charset="utf-8" src="ueditor.config.js"></script>
  10. <script type="text/javascript" charset="utf-8" src="ueditor.all.min.js"> </script>
  11. <!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
  12. <!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
  13. <script type="text/javascript" charset="utf-8" src="lang/zh-cn/zh-cn.js"></script>
  14. <style type="text/css">
  15. div{
  16. width:100%;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <center>
  22. <div class="content">
  23. <h1>发表留言</h1>
  24. <hr/>
  25. <form action="${pageContext.request.contextPath}/addMessage" method="post">
  26. 请输入你的名字: <input type="text" name="user_name"/><br/><br/>
  27. 请输入你的留言标题:<input type="text" name="message_title"/><br/>
  28. <p style="font-size: 18px;">请输入你的留言信息:<p>
  29. <script id="editor" type="text/plain" style="width:600px;height:300px;"></script><br/>
  30. <input type="submit" value="提交信息" class="sub" />
  31. </form>
  32. </div>
  33. <div id="btns">
  34. <!--
  35. <div>
  36. <button οnclick="getAllHtml()">获得整个html的内容</button>
  37. <button οnclick="getContent()">获得内容</button>
  38. <button οnclick="setContent()">写入内容</button>
  39. <button οnclick="setContent(true)">追加内容</button>
  40. <button οnclick="getContentTxt()">获得纯文本</button>
  41. <button οnclick="getPlainTxt()">获得带格式的纯文本</button>
  42. <button οnclick="hasContent()">判断是否有内容</button>
  43. <button οnclick="setFocus()">使编辑器获得焦点</button>
  44. <button οnmοusedοwn="isFocus(event)">编辑器是否获得焦点</button>
  45. <button οnmοusedοwn="setblur(event)" >编辑器失去焦点</button>
  46. </div>
  47. -->
  48. <!--
  49. <div>
  50. <button οnclick="getText()">获得当前选中的文本</button>
  51. <button οnclick="insertHtml()">插入给定的内容</button>
  52. <button id="enable" οnclick="setEnabled()">可以编辑</button>
  53. <button οnclick="setDisabled()">不可编辑</button>
  54. <button οnclick=" UE.getEditor('editor').setHide()">隐藏编辑器</button>
  55. <button οnclick=" UE.getEditor('editor').setShow()">显示编辑器</button>
  56. <button οnclick=" UE.getEditor('editor').setHeight(300)">设置高度为300默认关闭了自动长高</button>
  57. </div>
  58. <div>
  59. <button οnclick="getLocalData()" >获取草稿箱内容</button>
  60. <button οnclick="clearLocalData()" >清空草稿箱</button>
  61. </div>
  62. -->
  63. </div>
  64. <!--
  65. <div>
  66. <button οnclick="createEditor()">
  67. 创建编辑器</button>
  68. <button οnclick="deleteEditor()">
  69. 删除编辑器</button>
  70. </div>
  71. -->
  72. <script type="text/javascript">
  73. //实例化编辑器
  74. //建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例
  75. var ue = UE.getEditor('editor');
  76. function isFocus(e){
  77. alert(UE.getEditor('editor').isFocus());
  78. UE.dom.domUtils.preventDefault(e)
  79. }
  80. function setblur(e){
  81. UE.getEditor('editor').blur();
  82. UE.dom.domUtils.preventDefault(e)
  83. }
  84. function insertHtml() {
  85. var value = prompt('插入html代码', '');
  86. UE.getEditor('editor').execCommand('insertHtml', value)
  87. }
  88. function createEditor() {
  89. enableBtn();
  90. UE.getEditor('editor');
  91. }
  92. function getAllHtml() {
  93. alert(UE.getEditor('editor').getAllHtml())
  94. }
  95. function getContent() {
  96. var arr = [];
  97. arr.push("使用editor.getContent()方法可以获得编辑器的内容");
  98. arr.push("内容为:");
  99. arr.push(UE.getEditor('editor').getContent());
  100. alert(arr.join("\n"));
  101. }
  102. function getPlainTxt() {
  103. var arr = [];
  104. arr.push("使用editor.getPlainTxt()方法可以获得编辑器的带格式的纯文本内容");
  105. arr.push("内容为:");
  106. arr.push(UE.getEditor('editor').getPlainTxt());
  107. alert(arr.join('\n'))
  108. }
  109. function setContent(isAppendTo) {
  110. var arr = [];
  111. arr.push("使用editor.setContent('欢迎使用ueditor')方法可以设置编辑器的内容");
  112. UE.getEditor('editor').setContent('欢迎使用ueditor', isAppendTo);
  113. alert(arr.join("\n"));
  114. }
  115. function setDisabled() {
  116. UE.getEditor('editor').setDisabled('fullscreen');
  117. disableBtn("enable");
  118. }
  119. function setEnabled() {
  120. UE.getEditor('editor').setEnabled();
  121. enableBtn();
  122. }
  123. function getText() {
  124. //当你点击按钮时编辑区域已经失去了焦点,如果直接用getText将不会得到内容,所以要在选回来,然后取得内容
  125. var range = UE.getEditor('editor').selection.getRange();
  126. range.select();
  127. var txt = UE.getEditor('editor').selection.getText();
  128. alert(txt)
  129. }
  130. function getContentTxt() {
  131. var arr = [];
  132. arr.push("使用editor.getContentTxt()方法可以获得编辑器的纯文本内容");
  133. arr.push("编辑器的纯文本内容为:");
  134. arr.push(UE.getEditor('editor').getContentTxt());
  135. alert(arr.join("\n"));
  136. }
  137. function hasContent() {
  138. var arr = [];
  139. arr.push("使用editor.hasContents()方法判断编辑器里是否有内容");
  140. arr.push("判断结果为:");
  141. arr.push(UE.getEditor('editor').hasContents());
  142. alert(arr.join("\n"));
  143. }
  144. function setFocus() {
  145. UE.getEditor('editor').focus();
  146. }
  147. function deleteEditor() {
  148. disableBtn();
  149. UE.getEditor('editor').destroy();
  150. }
  151. function disableBtn(str) {
  152. var div = document.getElementById('btns');
  153. var btns = UE.dom.domUtils.getElementsByTagName(div, "button");
  154. for (var i = 0, btn; btn = btns[i++];) {
  155. if (btn.id == str) {
  156. UE.dom.domUtils.removeAttributes(btn, ["disabled"]);
  157. } else {
  158. btn.setAttribute("disabled", "true");
  159. }
  160. }
  161. }
  162. function enableBtn() {
  163. var div = document.getElementById('btns');
  164. var btns = UE.dom.domUtils.getElementsByTagName(div, "button");
  165. for (var i = 0, btn; btn = btns[i++];) {
  166. UE.dom.domUtils.removeAttributes(btn, ["disabled"]);
  167. }
  168. }
  169. function getLocalData () {
  170. alert(UE.getEditor('editor').execCommand( "getlocaldata" ));
  171. }
  172. function clearLocalData () {
  173. UE.getEditor('editor').execCommand( "clearlocaldata" );
  174. alert("已清空草稿箱")
  175. }
  176. </script>
  177. </center>
  178. </body>
  179. </html>

MessageDaoImpl.java

  1. package dao;
  2. import java.sql.ResultSet;
  3. import java.sql.SQLException;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import com.mysql.jdbc.Connection;
  7. import com.mysql.jdbc.PreparedStatement;
  8. import DBConnect.DButil;
  9. import bean.Article;
  10. import bean.Message;
  11. public class MessageDaoImpl implements MessageDao {
  12. @Override
  13. public List<Message> findAllMessage() {
  14. // TODO Auto-generated method stub
  15. String sql="select * from message";
  16. Connection conn=DButil.open();
  17. List<Message> list = new ArrayList<Message>();
  18. try {
  19. PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
  20. ResultSet rs=pstmt.executeQuery(sql);//执行查询该表
  21. while(rs.next())
  22. {
  23. int message_id = rs.getInt(1);
  24. String user_name = rs.getString(2);
  25. String message_date = rs.getString(3);
  26. String message_title = rs.getString(4);
  27. String message_content = rs.getString(5);
  28. Message message = new Message();
  29. message.setMessage_id(message_id);
  30. message.setUser_name(user_name);
  31. message.setMessage_date(message_date);
  32. message.setMessage_title(message_title);
  33. message.setMessage_content(message_content);
  34. list.add(message);
  35. System.out.println("查询数据成功!");
  36. }
  37. } catch (SQLException e) {
  38. // TODO Auto-generated catch block
  39. e.printStackTrace();
  40. System.out.println("查询数据失败!");
  41. }
  42. finally {
  43. DButil.close(conn);
  44. }
  45. return list;
  46. }
  47. @Override
  48. public void insert(Message message) {
  49. // TODO Auto-generated method stub
  50. String sql = "insert into message(user_name,message_date,message_title,message_content) values(?,?,?,?)";
  51. Connection conn=DButil.open();
  52. try {
  53. PreparedStatement pstmt=(PreparedStatement) conn.prepareStatement(sql);
  54. pstmt.setString(1, message.getUser_name());
  55. pstmt.setString(2, message.getMessage_date());
  56. pstmt.setString(3, message.getMessage_title());
  57. pstmt.setString(4, message.getMessage_content());
  58. pstmt.executeUpdate();
  59. System.out.println("添加数据成功!");
  60. } catch (SQLException e) {
  61. // TODO: handle exception
  62. System.out.println("添加数据失败!");
  63. e.printStackTrace();
  64. }
  65. finally {
  66. DButil.close(conn);
  67. }
  68. }
  69. }

addMessage.java

  1. package servlet;
  2. import java.io.IOException;
  3. import javax.servlet.RequestDispatcher;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.annotation.WebServlet;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import bean.Message;
  10. import content.Split;
  11. import dao.MessageDao;
  12. import dao.MessageDaoImpl;
  13. @WebServlet("/addMessage")
  14. public class addMessage extends HttpServlet {
  15. private static final long serialVersionUID = 1L;
  16. public addMessage() {
  17. super();
  18. // TODO Auto-generated constructor stub
  19. }
  20. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  21. // TODO Auto-generated method stub
  22. doPost(request, response);
  23. }
  24. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  25. // TODO Auto-generated method stub
  26. //设置编码
  27. request.setCharacterEncoding("utf-8");
  28. response.setCharacterEncoding("utf-8");
  29. response.setHeader("Content-Type","text/html; charset=utf-8");
  30. String user_name = request.getParameter("user_name");
  31. Split split = new Split();
  32. String message_date = split.time();
  33. String message_title = request.getParameter("message_title");
  34. String message_content = request.getParameter("editorValue");
  35. MessageDao dao = new MessageDaoImpl();
  36. Message message = new Message();
  37. message.setUser_name(user_name);
  38. message.setMessage_date(message_date);
  39. message.setMessage_title(message_title);
  40. message.setMessage_content(message_content);
  41. try {
  42. dao.insert(message);
  43. System.out.println("留言成功!");
  44. response.sendRedirect("/UseTest/ueditor/ShowMessage.jsp");
  45. // RequestDispatcher view = request.getRequestDispatcher("ShowMessage.jsp");
  46. // view.forward(request, response);
  47. } catch (Exception e) {
  48. // TODO Auto-generated catch block
  49. System.out.println("留言失败!");
  50. e.printStackTrace();
  51. }
  52. }
  53. }

showMessage.jsp

  1. <%@page import="bean.Message"%>
  2. <%@page import="java.util.List"%>
  3. <%@page import="dao.MessageDaoImpl"%>
  4. <%@page import="dao.MessageDao"%>
  5. <%@ page language="java" contentType="text/html; charset=UTF-8"
  6. pageEncoding="UTF-8"%>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  11. <title>显示所有留言信息</title>
  12. </head>
  13. <body>
  14. <center>
  15. <h1>所有留言信息</h1>
  16. <hr/>
  17. <table border="1" width="700px">
  18. <tr>
  19. <td>留言人姓名</td><td>留言时间</td><td>留言标题</td><td>留言内容</td>
  20. </tr>
  21. <%
  22. MessageDao dao = new MessageDaoImpl();
  23. List<Message> list = dao.findAllMessage();
  24. for(int i=0; i<list.size();i++){
  25. Message message = list.get(i);
  26. %>
  27. <tr>
  28. <td><%=message.getUser_name() %></td>
  29. <td><%=message.getMessage_date()%></td>
  30. <td><%=message.getMessage_title() %></td>
  31. <td><%=message.getMessage_content() %></td>
  32. </tr>
  33. <%} %>
  34. </table>
  35. <br/><br/>
  36. <a href="writeMessage.jsp">我要留言</a>
  37. </center>
  38. </body>
  39. </html>

部分功能截图:

Center

Center 1

总结:

此系统是本人在学完SSH,SSM等中间件框架后,意识到Java基础的重要性,回过头来用最基础的Servlet+JSP+JavaBean完成的系统,通过本次实验纠正了很多之前在开发过程中出现的错误,也学会了很多开发的细节,不自己动手一遍,也只能是似懂非懂。至于系统的登录注册等业务逻辑,没有太多时间,就不实现了。

发表评论

表情:
评论列表 (有 0 条评论,213人围观)

还没有评论,来说两句吧...

相关阅读

    相关 留言

    HN-CJ高二 QQ:347605798 网名:xzy、xzyxzy、lalaxu、饕餮传奇,曾在情人节那天改名成`睡觉` 不喜欢二次元,喜欢Taylor Swift