java web实现简单留言板功能
本文实例为大家分享了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> <h1 class="text" >登录界面</h1> 昵称:<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
<h2>留言板</h2> ${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
<h2>留言详情</h2> 用户名:${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语言实现经典《复杂迷宫》游戏,文中采用了swing技术进行了界面化处理,感兴趣的小伙伴可以动手试一试...2022-02-01
java 运行报错has been compiled by a more recent version of the Java Runtime
java 运行报错has been compiled by a more recent version of the Java Runtime (class file version 54.0)...2021-04-01- 这篇文章主要介绍了在java中获取List集合中最大的日期时间操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
Springboot如何实现Web系统License授权认证
这篇文章主要介绍了Springboot如何实现Web系统License授权认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-28- 这篇文章主要介绍了教你怎么用Java获取国家法定节假日,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-23
- 这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
C#使用Http Post方式传递Json数据字符串调用Web Service
这篇文章主要为大家详细介绍了C#使用Http Post方式传递Json数据字符串调用Web Service,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25- 说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别...2020-06-25
- 这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
- 这篇文章主要介绍了java 判断两个时间段是否重叠的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-15
- 这篇文章主要介绍了超简洁java实现双色球若干注随机号码生成(实例代码),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-04-02
InterlliJ IDEA2020新建java web项目找不到Static Web的解决
这篇文章主要介绍了InterlliJ IDEA2020新建java web项目找不到Static Web的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-09-02java 画pdf用itext调整表格宽度、自定义各个列宽的方法
这篇文章主要介绍了java 画pdf用itext调整表格宽度、自定义各个列宽的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-31- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- 这篇文章主要介绍了Java开发实现人机猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-03
- 这篇文章主要介绍了Java List集合返回值去掉中括号('[ ]')的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-29
Java中lombok的@Builder注解的解析与简单使用详解
这篇文章主要介绍了Java中lombok的@Builder注解的解析与简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-01-06- 下面小编就为大家带来一篇java中String类型变量的赋值问题介绍。小编觉得挺不错的。现在分享给大家,给大家一个参考。...2016-03-28