设计一个简单的基于Web的留言板,要求:1)系统中所有页面,如果用户没登录,则让用户返回到登录页面login.jsp(说明:login.jsp页面填写用户的用户名和密码);2)留言板(message.jsp)页面中以表格的形式(留言者用户名、留言标题、留言时间)显示出所有的用户留言,点击一个标题后,可以在新页面(showmessage.jsp)中显示留言的内容;3)在留言页面addMessage.jsp可以添加新的留言。留言包括:标题、内容。
说明:(1)采用JSP+JavaBean结构;(2)所有的留言内容需要存储到服务器的文件中。
Login.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登录</title>
<link rel="stylesheet" href="css/amazeui.min.css">
<link rel="stylesheet" href="css/app.css">
</head>
<body background="img/5.jpg"
style="background-repeat: no-repeat; background-size: cover; background-attachment: fixed;"
text="#68228B" >
<div class="am-g myapp-login">
<div class="myapp-login-logo">
<i class="am-icon-stumbleupon"></i>
</div>
<div class="am-u-sm-10 myapp-login-form">
<form class="am-form" action="LoginServe" method="POST">
<div class="am-form-group">
<input type="text" value="请输入用户名 " name="id">
</div>
<div class="am-form-group">
<input type="password" value="123456" name="password">
</div>
<p style="color:green">默认密码为123456</p>
<p><button type="submit" class="am-btn am-btn-default">Login</button></p>
</form>
</div>
</div>
</body>
</html>
message.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" %>
<%@page import="java.util.*,com.whh.www.*" %>
<%! String id;
String title;
Date time;
%>
<!DOCTYPE html>
<html>
<head>
<title>主界面</title>
</head>
<body>
<!-- <form action="" method="post"> -->
<table >
<caption>所有留言信息</caption>
<tr><th>留言ID</th><th>留言时间</th>
<th>留言标题</th></tr>
<%
if(messageRecord.record!=null){
Iterator iter=messageRecord.record.iterator();
while(iter.hasNext()){
Mess mb=(Mess)iter.next();
%><tr><td><%=mb.getId() %></td>
<td><%= mb.getTime() %></td>
<td><a href="showMessage.jsp?number=<%= mb.getNumber()%>"><%= mb.getTitle() %></a></td>
<% }
} %>
</table>
<br>
<%if(request.getSession().getAttribute("id")==null){
response.sendRedirect("Login.jsp");
}
%>
<br>
<br>
<!-- </form> -->
<a style="margin-left:22%" href="addmessage.jsp">留言</a>
</body>
</html>
addmessage.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>留言</title>
</head>
<body>
<h1 >请留言</h1>
<form action="leaveMessageServlet" method="post">
<table style="margin-left: 37%" border="1">
<caption>填写留言信息</caption>
<tr><td>留言标题</td>
<td><input type="text" name="title"/></td></tr>
<tr><td>留言内容</td>
<td><textarea name="message" rows="5" cols="35"></textarea></td>
</tr>
</table>
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</form>
<a href="message.jsp">返回留言板界面</a>
</body>
</html>
showmessage.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@page import="java.util.*,com.whh.www.*" %>
<!DOCTYPE html>
<html>
<head>
<%
if(request.getSession().getAttribute("id")==null){
response.sendRedirect("Login.jsp");
}
%>
<title><%=messageRecord.mp.get(Integer.parseInt(request.getParameter("number"))).getTitle() %></title>
</head>
<body>
标题:<%=messageRecord.mp.get(Integer.parseInt(request.getParameter("number"))).getTitle() %>
<br>
<br>
内容:<%=messageRecord.mp.get(Integer.parseInt(request.getParameter("number"))).getMessage()%>
</body>
</html>
success.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Success</title>
</head>
<body>
<div style="margin-left:42%;margin-top:240px;font-family:Microsoft YaHei" >
留言成功,单击<a href="message.jsp">这里</a>返回主界面。
</div>
</body>
</html>
error.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
</head>
<body>
<body bgcolor="#ddd" style="font-family:Microsoft YaHei">
<div style="text-align:center;margin-top:130px">
<p>输入的用户名不存在或者密码错误</p>
<a href="Login.jsp">点我返回登陆界面</a>
</div>
</body>
</html>
LoginServlet
package com.whh.www;
import java.io.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class LoginServe
*/
@WebServlet("/LoginServe")
public class LoginServe extends HttpServlet {
private static final long serialVersionUID = 1L;
Map<String,String> mp=new HashMap<String,String>();
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServe() {
super();
// TODO Auto-generated constructor stub
}
public void init() {
@SuppressWarnings("resource")
String path=this.getServletContext().getRealPath("/WEB-INF/user.txt");
String path2=this.getServletContext().getRealPath("/WEB-INF/message.txt");
InputStreamReader fis = null,fis2=null;
try {
fis = new InputStreamReader(new FileInputStream(path));
fis2= new InputStreamReader(new FileInputStream(path2));
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
BufferedReader in=new BufferedReader(fis);
BufferedReader ins=new BufferedReader(fis2);
String a[]=new String[3];
String b[]=new String[5];
String line = null;
while(true) {
try {
line=in.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(line==null)break;
a=line.split("#");
mp.put(a[0],a[1]);
}
while(true) {
try {
line=ins.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(line==null)break;
b=line.split("#");
Mess mb=new Mess();
mb.setId(b[0]);
mb.setTime(b[1]);
mb.setTitle(b[2]);
mb.setMessage(b[3]);
mb.setNumber(Integer.parseInt(b[4]));
messageRecord.mp.put(mb.getNumber(),mb);
}
try {
in.close();
ins.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String id="";
id=request.getParameter("id");
String password=request.getParameter("password");
String s="";
if(mp.containsKey(id)) {
if(mp.get(id).equals(password)) {
s+=mp.get(id);
}
}
if(s!="") {
request.getSession().setAttribute("id", id);
request.getRequestDispatcher("message.jsp").forward(request,response);
}
else response.sendRedirect("Error.jsp");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
leaveMessageServlet
package com.whh.www;
import java.io.IOException;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class leaveMessageServlet
*/
@WebServlet("/leaveMessageServlet")
public class leaveMessageServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public leaveMessageServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
String id=(String) request.getSession().getAttribute("id");
String title=request.getParameter("title");
String message=request.getParameter("message");
Mess mb=new Mess();
mb.setId(id);
mb.setTime(new Date(System.currentTimeMillis()).toString());
mb.setTitle(title);
mb.setMessage(message);
messageRecord.add(mb);
String path=this.getServletContext().getRealPath("/WEB-INF/message.txt");
System.out.println(path);
if(save.Save(mb,path)) {
request.getSession().setAttribute("mb", mb);
response.sendRedirect("success.jsp") ;
}
else response.sendRedirect("message.jsp");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Mess
package com.whh.www;
public class Mess {
private int number;
private String id;
private String title;
private String time;
private String message;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
save
package com.whh.www;
import java.io.*;
public class save {
public static boolean Save(Mess mb,String path) throws IOException {
String id=mb.getId();
String title=mb.getTitle();
String message=mb.getMessage();
String time=mb.getTime();
int number=mb.getNumber();
try {
PrintWriter out=new PrintWriter(new FileWriter(path,true));
out.println(id+"#"+time+"#"+title+"#"+message+"#"+number);
out.close();
return true;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
}
}
messageRecord
package com.whh.www;
import java.util.*;
public class messageRecord {
public static ArrayList<Mess> record=new ArrayList<Mess>();
public static Map<Integer,Mess>mp=new HashMap<Integer,Mess>();
private static int count=0;
public static void add(Mess mb) {
count++;
record.add(mb);
mb.setNumber(count);
mp.put(count, mb);
}
}