一、概述
这个基于javaweb的博客平台涉及的技术有jsp、servlet、Javabean、Mysql数据库、html、css、js等。这个平台采用了mvc的设计模式:
Model层:实现系统业务逻辑,由Javabean负责;
View层:负责与用户进行交互,显示内容给用户,有jsp、html、css、js等负责;
Control层:负责Model和View层的连接,我们在iew层所做的操作,比如登陆、注册等等,我们都是先把请求提交到Controller(控制层的控制器),然后Controller根据请求调用由工厂模式生成相应的Action的对象,并由该对象执行相应的方法处理请求,并决定反馈给用户的是哪一个页面,即View层。
这就是我们的项目的整体的设计思路,采用mvc设计模式,各种技术分工合作,它有这些优势,整个流程非常清晰;易于我们以后的更新维护;同时mvc的分层模式,可以让我们web页面编写(即前端)专注也界面的设计,而不用去了解后台的代码如何如何,业务逻辑、功能的编写也专注于其职内容的设计,也不用考虑前端的如何设计;同时当我们想增加功能、或修改某些功能时,我们也是很简单的加一个相关的Action或修改某些Action,这样可使我们的代码的维护更加轻松。
二、后台管理模块
这是后台管理模块的目录:
我们可以到它由几部分构成,article、friend、photo、word这是后台管理的四大主要模块,文章管理,朋友管理,相册管理,留言管理。
而其中的view里面的文件结构如下:
可以看到它由这四个jsp文件构成,这四个文件是要包含进AdminIndex.jsp文件里面的,分别构成了AdminIndex.jsp的上下左右部分。这个AdminIndex.jsp就是后台管理的主页面。
我们的AdminIndex.jsp的代码结构如下:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.util.List,com.MyBlog.common.GLOBALS"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <%String URL=session.getAttribute("url").toString(); %> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="<%=URL%>/css/admin/AdminIndex.css"> <title>管理博客</title> </head> <body id="body"> <!-- 利用表格划分三行 --> <table id="table" > <!-- 第一行 --> <tr> <td align="center" colspan="2"> <!-- 划分,顶部 --> <jsp:include page="${URL}/admin/view/AdminTop.jsp"/> </td> </tr> <!-- 第二行 --> <tr > <td width="220px" valign="top"> <!-- 中间分成左右两部分 -左--> <jsp:include page="${URL}/admin/view/AdminLeft.jsp"/> </td> <td width="776px" align="center" valign="top"> <!-- 中间分成左右两部分 -右--> <jsp:include page="${URL}/admin/view/AdminRight.jsp"/> </td> </tr> <!-- 第三行 --> <tr > <td width="1000px" align="center" colspan="2"> <!-- 底部 --> <jsp:include page="${URL}/admin/view/AdminEnd.jsp"/> </td> </tr> </table> <a href="#" id="toTop_admin" style="margin-right: -526px; right: 50%; display: inline;"> <span id="toTopHover_admin" style="opacity: 0;"></span> </a> </body> </html>
然后是error.jsp、success.jsp页面,是我们操作失误或成功之后,反馈给用户的一个提示信息的页面。
Login.jsp、Register.jsp分别是登录和注册页面。
1、我们先看登录,进入后台管理首先第一步就是登陆,我们的登录就是一个表单
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.util.List,com.MyBlog.common.GLOBALS"%> <!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"> <%String URL=session.getAttribute("url").toString(); %> <link rel="stylesheet" href="<%=URL%>/css/admin/Login.css"> <title>登录</title> <script src="<%=URL%>/js/checkform.js"></script> </head> <body id="body"> <div class="idivLogin"> <!-- 通过js文件checkform.js进行输入数据格式的校验, 再进入到TestServlet代码中与数据库数据进行校验,判断输入是否正确 --> <form id="formLogin" onsubmit="return checkselect(this)" method="post" action="<%=URL%>/LoginAction.action"> <h3>欢迎登录MyBlog!</h3> <table id="tableLogin"> <tr> <td> <p class="pLogin">用户名:</p> </td> <td> <input name="name" type="text"/> <font color="#FF0000">*</font> </td> </tr> <tr> <td> <p class="pLogin">密码:</p> </td> <td> <input name="password" type="password"/> <font color="#FF0000">*</font> </td> </tr> <tr> <td></td> <td> <input value="登录" type="submit"/> <input value="重置" type="reset"/> </td> </tr> <tr> <td></td> <td> <a href="<%=URL%>/admin/Register.jsp">注册新账号</a> </td> </tr> </table> </form> </div> </body> </html>
我们的表单提交的action为"<%=URL%>/LoginAction.action",这个表单提交后,是先由控制器处理,控制器处理出我们”/”和”.”之间的字段LoginAction,然后由该字段创建相应action的对象,并执行该对象的excute方法,处理我们的登录操作。我们的其它操作也是如此。
现在我们看action_implements包里面的LoginAction类的,代码如下:
package com.MyBlog.action_implements; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.MyBlog.action.Action; import com.MyBlog.common.GLOBALS; import com.MyBlog.dao.LoginDao; import com.MyBlog.entity.MasterBean; public class LoginAction implements Action { LoginDao loginDao = new LoginDao(); public String URL = ""; /* * 重写action接口中的方法实现该接口 * * @功能 实现动作对象action所对应类中的接口方法,返回下一个页面的url(即需要跳转到该url对应的页面) */ @Override public String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.URL = GLOBALS.getPath(request); String url = "error.jsp"; // 获取页面输入元素,用户民及密码 String user_name = request.getParameter("name"); String user_password = request.getParameter("password"); // 控制台输出 System.out.println("用户名" + user_name); System.out.println("用户密码:" + user_password); //loginDao的Login放法对用户名进行验证,查询数据库里面是否有相对应的 //用户名、密码。 MasterBean masterBean = loginDao.Login(user_name, user_password); // 回应页面请求,在网页中响应,通过out可以直接在这里写html的代码 response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); if (masterBean != null) { // 若用户密码正确,查询结果masterBean不应该是null。 // 校验成功后进入到AdminIndex.jsp显示在页面上 // 创建一个session HttpSession session=request.getSession(); // setAttribute方法在session中设置用户信息 session.setAttribute("masterBean", masterBean); System.out.println("登录成功!!!"); System.out.println("用户的masterID:"+masterBean.getId()); url = "/admin/AdminIndex.jsp"; return url; } else { out.write("<html>"); out.write("<p>登录失败</p>"); out.write("</html>"); } return url; } }
登录主要有三步:
A、我们的request的对象的getParameter方法可以根据表单里面的input的name属性获得我们提交的表单的input里面的内容,通过这个我们获取了用户名和密码。
B、如何验证用户名和密码的正确性也是很简单的,我们可以直接查询数据库的用户表,查询则由loginDao负责查询。若有结果,则登录成功,添加一个名为masterBean的session,否则登陆失败。
C、登录成功后,我们就直接跳转到"/admin/AdminIndex.jsp"(后台管理主页面)
2、注册页面也是一个表单
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" import="java.util.List,com.MyBlog.common.GLOBALS"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <%String URL=session.getAttribute("url").toString(); %> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="<%=URL%>/css/admin/Register.css"> <title>注册账号</title> <script src="<%=URL%>/js/checkRegister.js"></script> </head> <body id="body"> <div id="register"> <form id="formRegister" onsubmit="return checkRegister(this)" method="post" action="<%=URL%>/RegisterAction.action"> <h3 id="register_h3">欢迎注册MyBlog!</h3> <table id="tableRegister"> <tr> <td> <p class="Register_p">用户名:</p> </td> <td> <input class="register_input" name="name" type="text"/> <font color="#FF0000">*</font> </td> </tr> <tr> <td> <p class="Register_p">密码:</p> </td> <td> <input class="register_input" name="password" type="password"/> <font color="#FF0000">*</font> </td> </tr> <tr> <td> <p class="Register_p">确认密码:</p> </td> <td> <input class="register_input" name="password_sure" type="password"/> <font color="#FF0000">*</font> </td> </tr> <tr> <td> <p class="Register_p">邮箱:</p> </td> <td> <input class="register_input" name="email" type="text"/> <font color="#FF0000">*</font> </td> </tr> <tr> <td> <p class="Register_p">性别:</p> </td> <td> <label for="sex_man"> 男</label> <input id="sex_man" name="sex" type="radio" value="0"/> <label for="sex_women" >女</label> <input id="sex_women" name="sex" type="radio" value="1"/> <font color="#FF0000"> *</font> </td> </tr> <tr> <td></td> <td> <input value="注册" type="submit"/> <input value="重置" type="reset"/> </td> </tr> </table> </form> </div> </body> </html>
注册的表单提交的是”<%=URL%>/RegisterAction.action”,交由控制器处理以后,执行相关对象的excute方法。
现在我们可以看action_implements包里面的RegisterAction类,代码如下:
package com.MyBlog.action_implements; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.MyBlog.action.Action; import com.MyBlog.common.GLOBALS; import com.MyBlog.dao.RegisterDao; import com.MyBlog.entity.MasterBean; public class RegisterAction implements Action { public String URL = ""; RegisterDao registerDao = new RegisterDao(); /* * 重写action接口中的方法实现该接口 * * @功能 实现动作对象action所对应类中的接口方法,返回下一个页面的url(即需要跳转到该url对应的页面) */ @Override public String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.URL = GLOBALS.getPath(request); String url = "error.jsp"; // 获取页面输入元素 String user_name = request.getParameter("name"); String user_password = request.getParameter("password"); String sex = request.getParameter("sex"); System.out.println(sex); int user_sex = Integer.parseInt(sex); String user_email = request.getParameter("email"); // 设置master实体 MasterBean masterBean = new MasterBean(); masterBean.setMasterName(user_name); masterBean.setMasterPassword(user_password); masterBean.setMasterSex(user_sex); masterBean.setMasterOicq(user_email); // 判断是否注册成功 boolean flag = registerDao.masterRegister(masterBean); System.out.println(flag); // 控制台输出 System.out.println("用户名" + user_name); System.out.println("用户密码:" + user_password); // 回应页面请求,在网页中响应,通过out可以直接在这里写html的代码 response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); if (flag) { // 若用户密码正确 // requestuestDispatcher // rd=request.getrequestuestDispatcher("/front/FrontIndex.jsp"); // 校验成功后进入到AdminIndex.jsp显示在页面上 System.out.println("注册成功!!!"); url = "/admin/Login.jsp"; return url; } else { out.write("<html>"); out.write("<p>用户已经存在,注册失败!!!</p>"); out.write("</html>"); } return url; } }
A、我们先获取所有的注册信息,然后构建一个MasterBean对象。
B、然后把这个参数传递到RegisterDao对象的masterRegister方法,由该对象来验证注册信息,若可以注册,则返回true,否则false。
C、我们根据masterRegister的返回值判断是否成功注册,若成功跳转"/admin/Login.jsp"(登录界面)
3、我们看AdminIndex.jsp的顶部
<jsp:include page="${URL}/admin/view/AdminTop.jsp"/>包含了AdminTop.jsp文件,
我们的顶部放置了回首页,退出登录的按钮,这个顶部是不变的,我们随时可以点击回首页、或退出登录。
关于退出登录,我们也有相关的action处理:
<a class="menu" href="<%=URL%>/LogoutAction.action">[退出登录]</a>
我们来LogoutAction的excute方法的代码:
/* * 重写action接口中的方法实现该接口 * * @功能 实现动作对象action所对应类中的接口方法,返回下一个页面的url(即需要跳转到该url对应的页面) */ @Override public String execute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // request.getSession(ture)等同于 HttpServletRequest.getSession(): // 若存了会话(session)则返回该会话,否则新建一个会话(session)。 // request.getSession(false):若存在会话(session)则返回该会话,否则返回NULL // 所以这里我们用request.getSession(false) // 获取session HttpSession session = request.getSession(false); if (session != null) { // 如果有session,则把用户信息从session里面除掉。 session.removeAttribute("masterBean"); } String url = "/admin/Login.jsp"; return url; }
我们的登出操作就是把名为masterBean的session删掉。
相关推荐
基于java web的博客系统,很好的学习资源;基于java web的博客系统,很好的学习资源;基于java web的博客系统,很好的学习资源;
基于Java Web的博客系统
基于java web芝麻开门博客网设计与实现.zip基于java web芝麻开门博客网设计与实现.zip基于java web芝麻开门博客网设计与实现.zip基于java web芝麻开门博客网设计与实现.zip基于java web芝麻开门博客网设计与实现.zip...
基于 java web编程爱好者博客地带设计与实现.zip基于 java web编程爱好者博客地带设计与实现.zip基于 java web编程爱好者博客地带设计与实现.zip基于 java web编程爱好者博客地带设计与实现.zip基于 java web编程...
因此,基于Java Web技术开发和设计的博客系统,运用MVC开发模式,Eclipse + Myeclipse集成开发环境,数据库技术等设计了博客系统。 本次课程设计主要阐述了不同用户对博客的不同管理,对管理员来说,有博主管理、...
基于Java Web技术博客项目系统的设计 与开发
基于java web的博客网站项目,后台数据库使用的MySQL,web项目,数据库的设计以及需求文档都有。满足课程设计或者实习的要求
基于Java Web的博客系统(含数据库文件) 完整代码 附加数据库建表和插入数据文件 希望能够给大家带来一定的帮助
“博客”(Blog或Weblog)一词源于“Web Log(网络日志)”的缩写,是一种十分简易的傻瓜化个人信息发布方式。任何人都可以像使用免费电子邮件一样,完成个人网页的创建、发布和更新。博客就是开放的私人空间,可以...
基于Java Web技术博客项目系统的设计 与开发.doc
该代码是基于java web写的一个个人博客网站的源码,该代码涉及到了基本的所以的java web方面知识,非常适合新手参照练习。
运行环境 适用 课程设计,大作业,毕业设计,项目练习,学习演示等
本系统的页面设计主要是在Dreamweaver环境下完成的,通过引入JSP技术和数据库技术使得博客系统的动态功能得以很好的实现,本系统的成功开发可以说是Dreamweaver结合JSP技术开发动态网站的成功体现。
java java ...这是学校的毕业设计,一个使用Java web搭建的简易博客网站。 前端使用jsp制作,后端使用Java编写。获取、处理数据使用的是Servlet,连接数据库使用的是Mybatis。数据库使用的是MySQL。
java 一个简单的博客网站项目 这是学校的毕业设计,一个使用Java web搭建的简易博客网站。 前端使用jsp制作,后端使用Java编写。获取、处理数据使用的是Servlet,连接数据库使用的是Mybatis。数据库使用的是MySQL。
基于Java_Web技术博客项目的设计毕业论文(20210809123053).pdf
内容包括详细设计文档word版,附带开题报告和相关PPT等文档,供大家参考学习。也可在本博客主页找到单片机设计专栏直接查看哦
孙卫琴_精通Struts:基于MVC的Java Web设计与开发(第一部分)共分三部分 part01.rar----part07.rar 本人所发布的所有资源,请访问以下地址 ... 如有问题可随时联系我! 博客...
基于JAVA的WEB项目 芝麻开门博客网源码
基于JAVA的WEB项目编程爱好者博客地带