JAVAWeb-實現簡單的留言版
阿新 • • 發佈:2018-12-12
(1)首先整體展示留言版的介面,及功能:
登陸介面:
功能介面:
2.專案結構:
具體實現 :
(1)首先我們要有 一個登陸的頁面,裡面有登陸和密碼框:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String flag = request.getParameter("flag"); %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>系統登陸</title> <link href="form.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> var flag = '<%=flag%>'; if(flag=="1"){ alert("請登陸系統!"); } </script> </head> <body> <form action="login.jsp" method="post" class="smart-green" > <h1>系統登入</h1> <label> <span>使用者名稱:</span> <input id="username" type="text" name="username"/> </label> <label> <span>密碼:</span> <input id="password" type="password" name="password"/> </label> <span> </span> <label> <input type="submit" class="button" value="登入"/> </label> </form> </body> </html>
需要對提交的資料進行簡單的處理:把使用者提交的使用者名稱放到session中,因為整個會話中都必須用到這個:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <title>使用者登陸</title> <html> <body> <% //獲取傳遞過來的引數 String username = request.getParameter("username"); String password = request.getParameter("password"); session.setAttribute("LoginUser", username); response.sendRedirect(request.getContextPath()+"/message.jsp"); %> </body> </html>
資料處理
經過簡單的處理:然後經過request重定向傳送到功能的介面: 中間需要一個servlet的 過濾器修改編碼 ,及進行轉型:
package filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class characterEncodingFilter implements Filter { private FilterConfig config; public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(config.getInitParameter("charset")); HttpServletRequest hrequest = (HttpServletRequest)request; HttpServletResponse hresponse = (HttpServletResponse)response; String LoginUser = (String)hrequest.getSession().getAttribute("LoginUser"); //告訴伺服器已經處理完畢 chain.doFilter(request, response); } @Override public void init(FilterConfig config) throws ServletException { this.config=config; } }
及過濾器的配置:web.xml
<?xml version="1.0" encoding="UTF-8"?>
<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">
<display-name>FilterDemo</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>filter.characterEncodingFilter</filter-class>
<init-param>
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
轉到的jsp頁面 :
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.util.*,Model.*" %>
<%
String user = (String)session.getAttribute("LoginUser");
List<Message>messages = (List<Message>)session.getAttribute("messages");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>留言板</title>
<link href="form.css" rel="stylesheet" type="text/css" />
<link href="table.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form action="messageSub.jsp" method="post" class="smart-green">
<h1>留言板</h1>
<label>
<span>留言人 :</span>
<input id="user" type="text" name="user" value="<%=user %>" readonly/>
</label>
<label>
<span>標題 :</span>
<input id="title" type="text" name="title" value=""/>
</label>
<label>
<span>內容 :</span>
<textarea id="content" name="content"></textarea>
</label>
<span> </span>
<label>
<input type="submit" class="button" value="提交"/>
</label>
</form>
<br>
<table id="table-3" width="85%" align="center">
<tr>
<th width="15%">留言人</th>
<th width="15%">標題</th>
<th width="70%">內容</th>
</tr>
<%
if(messages!=null){
for(Message message:messages){
%>
<tr>
<td><%=user%></td>
<td><%=message.getTitle()%></td>
<td><%=message.getContent()%></td>
</tr>
<%
}
}
%>
</table>
</body>
</html>
我們登陸後的頁面與提交後的頁面為同一個,這樣我們中間就需要對我們提交的資料進行處理和顯示,因此我們需要一個javabean類來封裝資訊,和一個jap頁面來處理信。
package Model;
public class Message {
private String title;
private String content;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
處理資訊的jsp頁面,且不展示任何東西,並跳轉回來。
<%@page import="com.mysql.jdbc.Messages"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 匯入java裡面的包 -->
<%@page import="java.util.*,Model.*" %>
<%
//獲取資訊
String title = request.getParameter("title");
String content =request.getParameter("content");
//封裝資訊
Message message = new Message();
message.setTitle(title);
message.setContent(content);
List<Message>messsages = (ArrayList<Message>)session.getAttribute("messages");
if(messsages==null){
messsages = new ArrayList<Message>();
session.setAttribute("messages", messsages);
}
messsages.add(message);
response.sendRedirect(request.getContextPath()+"/message.jsp?SubFlag=1");
%>