JSP+mysql实现大段文字的存储与显示

实现小说阅读站,在线阅读功能——章节的添加与显示

目标:实现1000字以上的文章的后台上传,数据库存储与前台显示

一.建立数据库表:

DROP TABLE IF EXISTS `chapter`;
CREATE TABLE `chapter` (
  `chapter_id` int(11) NOT NULL auto_increment,
  `chapter_name` varchar(255) default NULL,
  `chapter_content` text,
  `book_id` int(11) default NULL,
  PRIMARY KEY  (`chapter_id`),
  KEY `book_id` (`book_id`),
  CONSTRAINT `book_id` FOREIGN KEY (`book_id`) REFERENCES `book` (`book_id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

其中chapter_content字段用于保存文章内容,考虑后使用text类型来创建字段,由于并不涉及到多客户端交互,直接使用字符串传值。

二.使用JSP页面,建立一个用于输入文字的文本框。

使用<textarea></textarea>设置文本框,form表单传值:

<body>
<form action="accept.jsp" method="post">
内容:
<textarea rows="10" cols="20" name="content"></textarea>
<input type="submit" value="OK">
</form>
</body>

注意:由于是大量文字传输,必须使用post的方式传值,使用get传值可能受限于地址栏长度限制,会出现白屏情况。无法获得相应的数据。

加入request转码,使汉字可以正常显示

request.setCharacterEncoding("utf-8");


将文字传入到accept.jsp页面。由于文字在java中是使用/r进行换行判断,因此,当我们准备在html上显示段落的时候,需要将输入文字进行格式化处理。这里采用replace()函数进行替换,将字符串中的。

简单的测试传输后替换的结果(jsp):

String s=request.getParameter("content");
s=s.replace("\r", "<br />");
s=s.replace(" "," ");
out.write(s);

这样替换之后,文字就可以在html中按照格式显示了。

三.存入数据库

存入数据库,必须在链接数据库的时候定义字符集,并使用格式化的链接方式,具体的操作方法是在数据库连接时添加格式化参数:

?useUnicode=true&characterEncoding=UTF-8

如果出现汉字存入数据库显示为?????的情况,在数据库链接字段后添加以上字段即可解决。

为了直观快速的测试,使用JDBC链接数据库,向表中添加测试数据

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="gbk"%>
<%@page import="java.sql.*" %>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>

<title>
查询数据库
</title>
</head>
<body>

<%
request.setCharacterEncoding("utf-8");
String s=request.getParameter("content");
s=s.replace("\r", "<br />");
out.write(s);
String driver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF-8";
String name="root";
String password="";
Connection conn=null;
Statement stmt=null;
String sql=null;
Class.forName(driver);
conn=DriverManager.getConnection(url,name,password);
stmt=conn.createStatement();
sql="INSERT INTO chapter  VALUES ('','章节名','"+s+"',1);" ;
//System.out.print(sql);
boolean flag =stmt.execute(sql);
System.out.print(flag+"AAA");
%>

<%
stmt.close();
conn.close();
%>
</body>
</html>
检查数据库,文章插入成功。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值