0、效果展示
1、概述
根据博客网站的特点,并与用户进行沟通。要求本系统具有以下功能:
1.统一、友好的操作界面,用以保证系统的易用性。
2.较强的查询功能,便于用户查询各项信息。
3.添加评论的功能,方便用户对博主发表的文章添加评论。
4.添加了友情链接,方便用户进入其他网站。
5.博客文章管理功能,方便博主添加、修改、删除博客文章。
6.公告管理功能,方便博主添加、修改、删除公告信息。
7.日志管理功能,方便博主添加、修改、删除日志信息。
8.个人相片设置功能,方便博主添加、修改、删除相片功能。
9.朋友信息管理功能。方便博主添加、修改、删除朋友信息。
10.博主信息设置,方便及时更新博主信息。
2、搭建环境
本文以实现一个线上个人博客日志发布网站为目标,从环境搭建到编码实现全过程讲述
我们使用javaweb、J2EE来构建个人博客日志发布网站,环境使用最新版jdk和tomcat,配合mysql数据库
开发工具使用idea(也可以使用eclipse),数据库管理工具使用Navicat Premium
开发框架使用JavaBean Servlet MVC结构;
没有使用SSH(Struts+Spring+Hibernate)或SSM(Spring+SpringMVC+MyBatis),这两个框架我们在别的项目中再介绍开发过程
在项目中会引入My97DatePicker作为前端日期时间选择工具,使用fckeditor作为富媒体编辑器(也可以使用百度的ueditor)
使用DWR(Direct Web Remoting)用于改善web页面与Java类交互,实现远程服务器端AJAX读取登录数据。
使用JSTL(Java server pages standarded tag library,即JSP标准标签库),此库是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。
3、数据表结构
网站中的数据元素:
|
| ||
| ||
|
|
4、后端代码示例
package servlet;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.InsertUpdateDelBean;
import bean.SelectBean;
public class haoyouServlet extends HttpServlet
{
public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException
{
String type=req.getParameter("type");
if(type.endsWith("userSearch"))
{
userSearch(req, res);
}
if(type.endsWith("haoyouDel"))
{
haoyouDel(req, res);
}
}
public void userSearch(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException
{
String name = new String(req.getParameter("name").getBytes("ISO-8859-1"),"gb2312");
SelectBean bean=new SelectBean();
int i=bean.userSearch(name);
if(i==0)
{
req.setAttribute("message", "没有此帐号");
req.setAttribute("path", "users/userhaoyou.jsp");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
else
{
ArrayList userlogin = (ArrayList)req.getSession().getAttribute("userlogin");
int id=Integer.parseInt(userlogin.get(0).toString());//dagnr
String sql="insert into haoyou(userid,haoyouid) values('"+id+"','"+i+"')";
InsertUpdateDelBean ib = new InsertUpdateDelBean();
int flag = ib.insertANDupdateANDdel(sql);
req.setAttribute("message", "添加好友成功");
req.setAttribute("path", "users/userhaoyou.jsp");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
}
public void haoyouDel(HttpServletRequest req,HttpServletResponse res)throws ServletException, IOException
{
int haoyouId=Integer.parseInt(req.getParameter("haoyouId"));
String sql="delete from haoyou where haoyouId="+haoyouId;
InsertUpdateDelBean ib = new InsertUpdateDelBean();
ib.insertANDupdateANDdel(sql);
req.setAttribute("message", "删除好友成功");
req.setAttribute("path", "users/userhaoyou.jsp");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void dispatch(String targetURI,HttpServletRequest request,HttpServletResponse response)
{
RequestDispatcher dispatch = getServletContext().getRequestDispatcher(targetURI);
try
{
dispatch.forward(request, response);
return;
}
catch (ServletException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void destroy()
{
}
}
5、前端代码示例
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<jsp:include flush="true" page="/admin/top.jsp"/>
<%
ArrayList adminlogin = (ArrayList)session.getAttribute("adminlogin");
if(adminlogin == null || adminlogin.size() == 0){
%><script>alert('您还没有登录!');window.location.href='index.jsp';</script><%
}else{
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Untitled Document</title>
<link href="images/style.css" rel="stylesheet" type="text/css" />
<style type="text/css">
a:link {
text-decoration: none;
color: #000;
}
a:visited {
text-decoration: none;
color: #000;
}
a:hover {
text-decoration: none;
color: #000;
}
a:active {
text-decoration: none;
color: #000;
}
</style>
<script language="JavaScript">
function check()
{
var pattern = /^[a-zA-Z0-9_]+$/;
if (document.form1.name.value == "" )
{
alert("请输入用户名!");
document.form1.name.focus();
return false;
}
if (document.form1.name.value.length < 3 )
{
alert("用户名长度最少3个字符!");
document.form1.name.focus();
return false;
}
if (!pattern.test(document.form1.name.value) )
{
alert("用户名只能包含字母、数字!");
document.form1.name.focus();
return false;
}
if (document.form1.pwd.value == "" )
{
alert("请输入密码!");
document.form1.pwd.focus();
return false;
}
if (document.form1.pwd.value.length < 3 )
{
alert("密码长度最少3个字符!");
document.form1.pwd.focus();
return false;
}
if (!pattern.test(document.form1.pwd.value) )
{
alert("密码只能包含字母、数字!");
document.form1.pwd.focus();
return false;
}
if (document.form1.repetition.value == "" )
{
alert("请输入重复密码!");
document.form1.repetition.focus();
return false;
}
if (document.form1.repetition.value != document.form1.pwd.value )
{
alert("两次密码不一致!");
document.form1.repetition.focus();
return false;
}
}
</script></head>
<%
String message = (String) request.getAttribute("message");
if (message == null)
{
message = "";
}
if (!message.trim().equals(""))
{
out.println("<script language='javascript'>");
out.println("alert('" + message + "');");
out.println("</script>");
}
request.removeAttribute("message");
%>
<body>
<!--top end -->
<!--body start -->
<div id="body">
<!--mid start -->
<div id="mid960">
<!--test start -->
<div id="testMain960">
<p class="testtop"></p>
<div id="">
<table width="800" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td class="border_left border_right border_bottom" height="400" valign="top" align="center">
<table width="800" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="30" class="adminmenu" align="center">
<%--<a href="admin/modifypwd.jsp">修改密码</a>
<a href="admin/modifyname.jsp">修改用户名</a> --%>
<a href="admin/addadmin.jsp">添加系统用户</a>
<a href="admin/adminlist.jsp">系统用户管理</a></td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="5"></td>
</tr>
</table>
<form name="form1" method="post" action="ModifyAdminServlet?mark=insert" onSubmit="return check()">
<table width="60%" border="1" cellspacing="1" cellpadding="0" bgcolor="#999999">
<tr>
<td height="25" colspan="2" align="center" bgcolor="#DEF1E3">添加系统用户</td>
</tr>
<tr>
<td width="46%" height="25" align="right" bgcolor="#DEF1E3">用 户 名:</td>
<td width="54%" height="25" bgcolor="#DEF1E3"> <input name="name" type="text" maxlength="10"></td>
</tr>
<tr>
<td height="25" align="right" bgcolor="#DEF1E3">密 码:</td>
<td height="25" bgcolor="#DEF1E3"> <input name="pwd" type="password" maxlength="10"></td>
</tr>
<tr>
<td height="25" align="right" bgcolor="#DEF1E3">重复密码:</td>
<td height="25" bgcolor="#DEF1E3"> <input type="password" name="repetition"></td>
</tr>
<tr>
<td height="30" colspan="2" align="center" bgcolor="#DEF1E3"><input type="submit" value="提交数据" class="input"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</div>
<p class="testBot"></p>
<br class="spacer" />
</div>
<!--test end -->
<br class="spacer" />
</div>
<!--mid end -->
<br class="spacer" />
</div>
<!--body end -->
<jsp:include flush="true" page="/admin/bottom.jsp"/>
<!--footer end -->
</body>
</html>
</html>
<%} %>