怎么java web项目中实现一个留言板功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
一、目标
用户可以登录并记住密码进入留言板,添加留言,点击留言列表中的标题可显示该条留言全部内容。
二、相关知识
1、使用Cookie实现自动登录
用户第一次登录网站,服务器将用户名和密码以Cookie的形式发送到客户端。当客户之后再次访问该网站时,浏览器自动将Cookie文件中的用户名和密码随请求一起发送到服务器,服务器从Cookie中取出用户名和密码并且通过验证。
2、java类的定义与使用
定义java类时注意属性的定义、构造方法的重写,定义两个方法,一个是访问方法(getter),一个是修改方法(setter)。
三、实现思路
1、登录
输入用户名、密码登录,对应检测登录BoardLoginServlet
可实现记住登录信息 Cookie实现
登录成功显示留言板标题列表页面board-title.jsp,登录失败返回登录页面
2、显示留言标题
标题列表为上下文变量lists,其中标题为链接,点击可显示留言具体信息界面(跳转到MessageServlet处理)。
list = username+":"+"<a href='MessageServlet?title="+title+"'target='_parent'>"+title+"</a>";
页面下方有新增留言的链接,点击后跳转到写留言页面
<a href="board-write.jsp" rel="external nofollow" rel="external nofollow" >新增留言</a>
3、添加留言
输入标题、内容 post给WriteServlet
4、显示留言具体信息
在MessageServlet中遍历查找留言并传递变量,显示留言信息在board-message.jsp
四、代码实现
board-login.jsp
<form action="board.do" method="post"> <br> <h2 class="text" >登录界面</h2> 昵称:<input type="text" name="username" value="${cookie.username.value}"/><br> 密码:<input type="password" name="password" value="${cookie.password.value}"/><br><br> <input type="checkbox" name="check" value="check"/>记住密码<br> <br> <input type="submit" value="登录"/> <input type="reset" value="取消"/> </form>
board-title.jsp
<h3>留言板</h3> ${lists} <a href="board-write.jsp" rel="external nofollow" rel="external nofollow" >新增留言</a>
boarrd-write.jsp
<form action="write.do" method="post"> 标题:<input type="text" name="title"/><br> 内容:<input type="text" name="text"/><br> <input type="submit"/> </form>
board-message.jsp
<h3>留言详情</h3> 用户名:${name}<br> 标题:${title}<br> 内容:${text}<br> 时间:${date}<br>
Message.java(将留言信息存储在Message类中)
package board; import java.util.Date; public class Message { private String title;//标题 private String time;//时间 private String username;//用户名 private String text;//内容 public Message(){} //初始化 public Message(String title,String time,String username,String text){ this.title = title; this.time = time; this.username = username; this.text = text; } public String getTitle(){ return title; } public String getUsername(){ return username; } public String getTime(){ return time; } public String getText(){ return text; } }
BoardLoginServlet.java(用Cookie登录)
package board; import javax.servlet.ServletException; import javax.servlet.http.*; import java.io.IOException; @javax.servlet.annotation.WebServlet(name = "BoardLoginServlet",urlPatterns = "/board.do") public class BoardLoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset = utf-8"); request.setCharacterEncoding("UTF-8"); HttpSession session=request.getSession(); String username = request.getParameter("username").trim(); String password = request.getParameter("password").trim(); session.setAttribute("username",username); if (!(username.equals("admin") &&password.equals("admin"))&&!(username.equals("123") &&password.equals("123"))) { response.sendRedirect("board-login.jsp"); } else { if ((request.getParameter("check") != null) && (request.getParameter("check").equals("check"))) { Cookie nameCookie = new Cookie("username", username); Cookie pswdCookie = new Cookie("password", password); nameCookie.setMaxAge(60 * 60); pswdCookie.setMaxAge(60 * 60); nameCookie.setPath("/"); pswdCookie.setPath("/"); response.addCookie(nameCookie); response.addCookie(pswdCookie); String value1 = "", value2 = ""; Cookie cookie = null; Cookie[] cookies = request.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { cookie = cookies[i]; if (cookie.getName().equals("username")) value1 = cookie.getValue(); if (cookie.getName().equals("password")) value2 = cookie.getValue(); } if (value1.equals("admin") && value2.equals("admin")||value1.equals("123") && value2.equals("123")) { response.sendRedirect("board-title.jsp"); } else { response.sendRedirect("board-login.jsp"); } } } else { response.sendRedirect("board-title.jsp"); } } } }
WriteServlet.java(新增留言)
package board; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.*; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @WebServlet(name = "WriteServlet",urlPatterns = "/write.do") public class WriteServlet extends HttpServlet { //messages列表中存放Message类对象 public List<Message> messages = new ArrayList<Message>(); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); ServletContext context = request.getServletContext(); HttpSession session = request.getSession(); //用户名存储到session中 String username =(String)session.getAttribute("username"); String title = request.getParameter("title"); String text = request.getParameter("text"); //获取当前时间 SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss"); Date date = new Date(System.currentTimeMillis()); String time = formatter.format(date); //在messages列表中添加留言对象 messages.add(new Message(title,time,username,text)); context.setAttribute("messages",messages); String list = new String(); //list中存放留言用户名+留言标题,标题为链接,可跳转到留言具体信息,并传参title list = username+":"+"<a href='MessageServlet?title="+title+"'target='_parent'>"+title+"</a>"; String lists = new String(); //将留言标题列表信息存到上下文对象 if(context.getAttribute("lists")!=null){ lists = context.getAttribute("lists") + list + "<br>"; } else{ lists = list + "<br>"; } context.setAttribute("lists", lists); request.setAttribute("lists", lists); //转发 RequestDispatcher dispatcher = request.getRequestDispatcher("/board-title.jsp"); dispatcher.forward(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
MessageServlet.java
package board; import com.sun.net.httpserver.HttpContext; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; @WebServlet(name = "MessageServlet",urlPatterns = "/MessageServlet") public class MessageServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); ServletContext context = request.getServletContext(); List<Message> messages = new ArrayList<Message>(); //获取列表 messages = (List<Message>)context.getAttribute("messages"); //获取链接中的参数title String title =request.getParameter("title"); String name = new String(); String date = new String(); String text = new String(); //遍历列表,查找该title的具体信息 for(Message message : messages){ if((message.getTitle()).equals(title)){ name = message.getUsername(); date = message.getTime(); text = message.getText(); title = message.getTitle(); request.setAttribute("name",name); request.setAttribute("title",title); request.setAttribute("text",text); request.setAttribute("date",date); break; } } //将留言信息转发到board-message.jsp RequestDispatcher dispatcher = request.getRequestDispatcher("/board-message.jsp"); dispatcher.forward(request, response); } }
看完上述内容,你们掌握怎么java web项目中实现一个留言板功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。