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

这是一个大二学生用JavaEE开发的博客系统,采用MVC模式,后端用Java和Struts2框架,前端用JSP。数据库设计包括用户和博客表,支持级联更新和删除。博客内容支持HTML标签,防止SQL注入。学习到的技术包括Struts2的表单提交、session使用、list遍历以及Action类的灵活运用。
摘要由CSDN通过智能技术生成

  • 是大二的JavaEE课程的期末作业
    部分前端合作:YE.SS,这是他的空间
    这里简单的介绍一下这个项目 :)
  • 开源工程文件:gitHub下载 第一次使用gitHub也不知道能不能打得开。。
    对了这个浣熊头是我PS手绘的
    在这里插入图片描述

架构图 / 包含技术

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

在这里插入图片描述

数据库 / 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
);

在这里插入图片描述

类图 Class Diagram

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

在这里插入图片描述

测试效果

  • 主页:
    在这里插入图片描述

  • 注册页:
    在这里插入图片描述

  • 博客首页
    在这里插入图片描述

  • 博客个人空间
    在这里插入图片描述

  • 博客,支持 Html标签
    在这里插入图片描述

  • 后台(非常demo,目前只包含了增删用户功能)
    在这里插入图片描述

一些学到的东西

  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
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值