JSP+Servlet+JavaBean傳統方式實現簡易留言板製做

學JavaEE也有一段時間了,跟着老師和教材作了很多東西,可是一直以來沒時間寫博客,今天就把之前寫的一個簡易留言板簡單發一下吧。html

 

  • 開發工具

        主要用的開發工具爲 MyEclipse(201四、2016都可)、Tomcat 7.0、SQL Server 201六、SSMS數據庫管理工具、瀏覽器等。java

 

 

 

  • 開發環境

 

        開發環境爲windows系統,已安裝配置Java最新版開發環境。web

 

  • 主要功能與語言

        登陸、註冊、並能夠在留言板留言,全部留言內容都可見。sql

        所採用JSP+Servlet+JavaBean傳統方式,僅限於學習使用。數據庫

 

  • 主要代碼實現

    JSP代碼:windows

 

login.jsp數組

 

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>登陸界面</title>
  </head>
  
  <body bgcolor="#ddd" style="font-family:Microsoft YaHei" >
  <div style="text-align:center;margin-top:120px">
    <h1 >請登陸</h1>
    <form action="loginServlet" method="post">
    	<table style="margin-left:40%">
    		<caption>用戶登陸</caption>
    		<tr>
    			<td>登陸名:</td>
    			<td><input name="name" type="text" size="20"></td>
    		</tr>
    		<tr>
    			<td>密碼:</td>
    			<td><input name="password" type="password" size="21"></td>
    		</tr>
    	</table> 
    	<input type="submit" value="登陸">
    	<input type="reset" value="重置"> 
    </form>
    <br>
    <a href="register.jsp">註冊</a>
    </div>
  </body>
</html>


register.jsp瀏覽器

 

 

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>註冊界面</title>
  </head>
  
  <body bgcolor="#ddd" style="font-family:Microsoft YaHei" >
  <div style="text-align:center;margin-top:120px">
    <h1 >請註冊</h1>
    <form action="registerServlet" method="post">
    	<table style="margin-left:40%">
    		<caption>用戶註冊</caption>
    		<tr>
    		    <td>ID:</td>
    		    <td><input name="id" type="text" size="20"></td>
    		</tr>
    		<tr>
    			<td>登陸名:</td>
    			<td><input name="name" type="text" size="20"></td>
    		</tr>
    		<tr>
    			<td>密碼:</td>
    			<td><input name="password" type="password" size="21"></td>
    		</tr>
    	</table> 
    	<input type="submit" value="註冊">
    	<input type="reset" value="重置"> 
    </form>
    <br>
    <a href="login.jsp">登陸</a>
    </div>
  </body>
</html>


error.jspsession

 

 

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>登陸出錯界面</title>
  </head>
  
  <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>


main.jspapp

 

 

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="org.model.MessBoar" %>
<%@page import="org.dao.*" %>

<html>
  <head>  
    <title>留言板界面</title>
  </head>

  <body bgcolor="#ddd" >
  <div style="margin-left:35%;margin-top:100px;font-family:Microsoft YaHei">
   <h1 style="margin-left:5%">這裏是留言板主界面</h1>
   <form  action="leavemessage.jsp" method="post">
  		<table border="1">
  			<caption>全部留言信息</caption>
  			<tr><th>留言人姓名</th><th>留言時間</th>
				<th>留言標題</th><th>留言內容</th></tr>
  		<%
  			ArrayList<MessBoar> al=new ArrayList<MessBoar>();
  			al= (ArrayList)session.getAttribute("al");
  			if(al!=null){
  				Iterator iter=al.iterator();
  				while(iter.hasNext()){
  				MessBoar mb=(MessBoar)iter.next();
  		%>
  				<tr><td><%= new LoginDao().getName(mb.getId()) %></td>
  					<td><%= mb.getTime().toString() %></td>
  					<td><%= mb.getTitle() %></td>
  					<td><%= mb.getMessage() %></td></tr>
  		<% 
  			}
  			}
  		 %>
  		</table>
  	</form>
   <a style="margin-left:22%" href="leavemessage.jsp">留言</a>
    </div>
  </body>
</html>


leavemessage.jsp

 

 

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="org.model.MessBoar" %>
<%@page import="org.dao.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title>留言界面</title>
  </head>
  
  <body bgcolor="#ddd" style="font-family:Microsoft YaHei">
  <div style="text-align:center;margin-top:140px">
    <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="main.jsp">返回留言板界面</a>
    </div>
  </body>
</html>


success.jsp

 

 

<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head>
    	<title>成功界面 </title>
</head>
<body>
	<div bgcolor="#ddd" style="margin-left:42%;margin-top:240px;font-family:Microsoft YaHei"">
		留言成功,單擊<a href="loginServlet">這裏</a>返回主界面。
	</div>
</body>
</html>



 

web.xml(配置)

 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <servlet>
  	<servlet-name>loginServlet</servlet-name>
  	<servlet-class>org.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>loginServlet</servlet-name>
  	<url-pattern>/loginServlet</url-pattern>
  </servlet-mapping>
  	<servlet>
    	<servlet-name>registerServlet</servlet-name>
    	<servlet-class>org.servlet.RegisterServlet</servlet-class>
	</servlet>
	<servlet-mapping>
   	 <servlet-name>registerServlet</servlet-name>
   	 <url-pattern>/registerServlet</url-pattern>
	</servlet-mapping>
  <servlet>
    	<servlet-name>leaveMessageServlet</servlet-name>
    	<servlet-class>org.servlet.LeaveMessageServlet</servlet-class>
	</servlet>
	<servlet-mapping>
   	 <servlet-name>leaveMessageServlet</servlet-name>
   	 <url-pattern>/leaveMessageServlet</url-pattern>
	</servlet-mapping>
  <display-name>messageBoard</display-name>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
  </welcome-file-list>
</web-app>


DBconn.java

 

 

package org.db;
import java.sql.*;

public class DBconn {
	public static Connection conn;     //Connection對象(連接)
	//鏈接數據庫
	public static Connection getConn(){
		try{
			//加載註冊SQLSever的JDBC驅動
			Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
			//編寫連接字符串,建立而且獲取連接
			conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=MessageBoard","sa","19961002happy");
			return conn;
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}
	public static void CloseConn(){
		try{
			conn.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}


LoginDao.java

 

package org.dao;
import java.sql.*;
import org.model.*;
import org.db.*;
import java.util.ArrayList;
public class LoginDao {
	Connection conn=DBconn.getConn(); ;                                      //數據庫鏈接對象
	PreparedStatement pstmt;
	public Login checkLogin(String name,String password){ //驗證用戶名密碼
		try{
			pstmt=conn.prepareStatement("select*from[loginss] where name=? " + " and password=?");
			pstmt.setString(1, name);                     //設置SQL語句參數
			pstmt.setString(2, password);                 //設置SQL語句參數
			ResultSet rs=pstmt.executeQuery();            //執行查詢,返回結果集
			if(rs.next()){                                //經過JavaBean保存值
				Login login=new Login();
				login.setId(rs.getInt(1));
				login.setName(rs.getString(2));
				login.setPassword(rs.getString(3));
				login.setRole(rs.getInt(4));
				return login;                             //返回JavaBean對象
			}
			return null;                                  //驗證失敗返回null
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}
	public  ArrayList<MessBoar> findMbInfo(){
		try{
			ArrayList<MessBoar> al=new ArrayList<MessBoar>();
			pstmt=conn.prepareStatement("select * from [messagess]");
			ResultSet rs=pstmt.executeQuery();
			while(rs.next()){
				MessBoar mb=new MessBoar();
				mb.setId(rs.getInt(1));
				mb.setName(rs.getString(2));
				mb.setTime(rs.getDate(3));
				mb.setTitle(rs.getString(4));
				mb.setMessage(rs.getString(5));
				al.add(mb);
			}
			return al;
		}catch(Exception e){
			e.printStackTrace();
			return null;
		}
	}
		public String getName(int id){
			String name=null;
			try{
				pstmt=conn.prepareStatement("select name from [loginss] where id=?");
				pstmt.setInt(1, id);
				ResultSet rs=pstmt.executeQuery();
				while(rs.next()){
					 name=rs.getString(1);
				}
				return name;
			}catch(Exception e){
				e.printStackTrace();
				return null;
			}
		}

		public boolean addInfo(MessBoar mb){
			try{
				pstmt=conn.prepareStatement("insert into [messagess] values(?,?,?,?,?)");
				pstmt.setInt(1, mb.getId());
				pstmt.setString(2, mb.getName());
				pstmt.setDate(3, mb.getTime());
				pstmt.setString(4, mb.getTitle());
				pstmt.setString(5, mb.getMessage());
				pstmt.executeUpdate();
				return true;
			}catch(Exception e){
				e.printStackTrace();
				return false;
			}
		}
		public boolean insertUser(int id,String name,String password){
			try{
				pstmt=conn.prepareStatement("insert into [loginss] values(?,?,?,?)");
				pstmt.setInt(1, id);
				pstmt.setString(2, name);				
				pstmt.setString(3, password);
				pstmt.setInt(4, 0);
				pstmt.executeUpdate();
				return true;
			}catch(Exception e){
				e.printStackTrace();
				return false;
			}
		}


}



 


Login.java

 

 

package org.model;

public class Login {
	private Integer id;
	private String name;
	private String password;
	private int role;
	public Integer getId(){
		return this.id;
	}
	public void setId(Integer id){
		this.id=id;
	}
	public String getName(){
		return this.name;
	}
	public void setName(String name){
		this.name=name;
	}
	public String getPassword(){
		return this.password;
	}
	public void setPassword(String password){
		this.name=password;
	}
	public int getRole(){
		return this.role;
	}
	public void setRole(int role){
		this.role=role;
	}
}


message.java

 

 

package org.model;
import java.sql.*;
public class MessBoar {
	private int id;
	private String name;
	private Date time;
	private String title;
	private String message;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id=id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name=name;
	}
	public Date getTime() {
		return time;
	}
	public void setTime(Date time) {
		this.time=time;
	}
	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;
	}
}


LeaveMessageServlet.java

 

 

package org.servlet;

import java.io.IOException;
import java.sql.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.dao.LoginDao;
import org.model.*;

public class LeaveMessageServlet extends HttpServlet{
	public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
		// 設置請求編碼
				request.setCharacterEncoding("gb2312");
				// 設置響應編碼
				response.setContentType("gb2312");
				// 獲取title內容
				String title=request.getParameter("title");
				// 獲取message內容
				String message=request.getParameter("message");
				// 從session中取出當前用戶對象
				Login leaveMessageBoard=(Login) request.getSession().getAttribute("login");
				// 創建留言表對應JavaBean對象,把數據封裝進去
				MessBoar mb=new MessBoar();
				mb.setId(leaveMessageBoard.getId());
				// 參數爲獲取的當前時間
				mb.setName(leaveMessageBoard.getName());
				mb.setTime(new Date(System.currentTimeMillis()));
				mb.setTitle(title);
				mb.setMessage(message);
				// 調DB類中的方法判斷是否插入成功
				if(new LoginDao().addInfo(mb)){
					response.sendRedirect("success.jsp") ;
				}
		}
	public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
		doGet(request,response);
	}
}


LoginServlet.java

 

package org.servlet;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.model.*;
import org.dao.*;
public class LoginServlet extends HttpServlet{
	public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
		request.setCharacterEncoding("gb2312");           //設置請求編碼
		response.setContentType("gb2312");                //設置響應編碼
		LoginDao loginDao= new LoginDao();
		HttpSession session=request.getSession();         // 先得到user對象,若是是第一次訪問該Servlet,用戶對象確定爲空,但若是是第
		Login l=(Login) session.getAttribute("login");    // 二次甚至是第三次,就不該該再判斷該用戶的信息
		if(l==null)
			l = loginDao.checkLogin(request.getParameter("name"),request.getParameter("password"));
		if(l!=null){                                      //若是登錄成功
			session.setAttribute("login",l);              //將獲取的對象保存在session中
			ArrayList al=loginDao.findMbInfo();           //獲取留言板的內容,返回一個數組
			session.setAttribute("al", al);               //把數組保存起來
			response.sendRedirect("main.jsp");            //驗證成功跳轉到 main.jsp
		}
		else{                                             //驗證失敗跳轉到 error.jsp
			response.sendRedirect("error.jsp");
		}
		}
	public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
		doGet(request,response);
	}
}



 

RegisterServlet.java

 

 

package org.servlet;
import java.io.IOException;
import org.dao.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RegisterServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			request.setCharacterEncoding("gb2312");
			int id=Integer.valueOf(request.getParameter("id"));
			String name=request.getParameter("name");
			String password=request.getParameter("password");
			if(new LoginDao().insertUser(id ,name, password)){
				response.sendRedirect("login.jsp");
			}
		}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request,response);
	}
}

 

  • 簡單介紹

    粘代碼粘得都心累,比較忙就不作太多介紹了。數據庫須要本身新建,對應數據類型創建就能夠了。下次有空回頭複習時再加上詳細介紹吧

相關文章
相關標籤/搜索