【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

【简易项目:制作一个小博客】javaEE开发

  • 是大二的JavaEE课程的期末作业
    部分前端合作:YE.SS,这是他的空间
    这里简单的介绍一下这个项目 :)
  • 开源工程文件:gitHub下载 第一次使用gitHub也不知道能不能打得开。。
    对了这个浣熊头是我PS手绘的
    【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

架构图 / 包含技术

  • 主要采用 MVC 开发模式
    后端使用Java
    使用了JDBC 连接数据库
    控制器使用struts2框架
    前端使用JSP

【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

数据库 / ER 图

  • 使用 Cascade 级联更新/级联删除 来方便表单的修改与删除
create database RacoonBlog;
create table userbean(
	username varchar(25) NOT NULL,
	password varchar(100) NOT NULL,
	isAdmin bool,
	primary key (username)
);

create table userblog(
	username varchar(25) NOT NULL,
	blogID varchar(16) NOT NULL,
	primary key (username,blogID),
	foreign key (username) references userbean(username)
	ON DELETE CASCADE
	ON UPDATE CASCADE
);

create table blogbean(
	writter varchar(25) NOT NULL,
	blogID varchar(16) NOT NULL,
	writtenTime datetime NOT NULL,
	lastTime datetime NOT NULL,
	isPrivate bool NOT NULL,
	contents MEDIUMBLOB,
	primary key (writter,blogID),
	foreign key (writter,blogID) references userblog(username,blogID)
	ON DELETE CASCADE
	ON UPDATE CASCADE
);

【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

类图 Class Diagram

  • 主要就是
    底层:数据bean,还有DBConnection类,用于连接数据库
    中层:DAO(Data Access Object)类,用于在数据库中对数据bean进行封装与基本操作
    上层:Action类,用于在struts框架下起过滤(Filter)作用。

【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

测试效果

  • 主页:
    【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

  • 注册页:
    【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

  • 博客首页
    【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

  • 博客个人空间
    【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

  • 博客,支持 Html标签
    【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

  • 后台(非常demo,目前只包含了增删用户功能)
    【简易项目:制作一个小博客】javaEE开发,含源工程和工程简单介绍

一些学到的东西

  1. 使用 s标签的表单进行提交
<s:form id=”” action=”loginAction” method=”pos”>
	<s:textfield label=”” name=”” placeholder=”” cssStyle=””></s:textfield>
</s:form>
  1. 使用 s标签在前端来获得 session 达到取值的目的
<%@ taglib prefix="s" uri="/struts-tags" %>			<!--类似头文件,不能忘-->
<s:property value=”#session.ERROR”></s:property>	<!--获得键为“ERROR”的值-->
<s:property value=”#session.Userbean.username”></s:property>	<!--获得键为对象Userbean的成员变量username的值-->
  1. 获取一个list的session的方式:
    使用标签 s:iterator
<%@ taglib prefix="s" uri="/struts-tags" %>
	<table>
        <tr>
            <th>BlogID</th>
            <th>Written Time</th>
            <th>Last Time</th>
        </tr>
        <s:iterator value="#session.Blogbeans" var="list" status="st">
          <tr>
              <td><s:property value="#list.blogID" /></td>
              <td><s:property value="#list.writtenTime" /></td>
              <td><s:property value="#list.lastTime" /></td>
          </tr>
        </s:iterator>
      </table>
  1. 只用一个Action类实现多个不同的前端界面跳转:

JSP代码:使用 s:hidden 修改 Action类中的成员变量 toURL

	<s:form action="Page2Action" method="POST" >
       <s:hidden name="toURL" value="pageA"></s:hidden>
       <s:submit value="to PageA"></s:submit>
	</s:form>

Action代码

public class Page2Action extends ActionSupport {
private String toURL = "login";

    @Override
    public String execute() throws Exception{
        return toURL;
    }

    public void setToURL(String toURL) {
        this.toURL = toURL;
    }
    public String getToURL(){
        return this.toURL;
    }

    public void setBlogID(String blogID) {
        this.blogID = blogID;
    }
    public String getBlogID(){return this.blogID;}
}

struts.xml配置:

	<action name = "Page2Action" class="Action.Page2Action">
       <result name = "login">/Pack/login.jsp</result>
       <result name = "pageA">/Pack/pageA.jsp</result>
    </action>
  1. s标签中的value是变量,使用OGNL实现,否则怎么传进去里面都是一个字符串而不是变量。
<s:form action="Page2Action" method="POST">
    <s:hidden name="toURL" value="blogPage"></s:hidden>
    <s:hidden name="blogID" value="%{#list.blogID}"></s:hidden>
    <s:submit value="Enter"></s:submit>
</s:form>
  1. 因为博客文本可以包含单引号等,容易mysql注入。
    简单防止mysql注入的方法:把英文单引号直接替换成中文单引号,就没有问题了
    blogbean.setContents(blogbean.getContents().replace('\'','‘'));
  2. 让博客文本可以使用html标签的方法:
    在输入文本文档的地方取消Html逃逸即可,不需要使用额外工具。
    escapeHtml = false
上一篇:javaee


下一篇:JavaWeb-Servlet