实现小说阅读站,在线阅读功能——章节的添加与显示
目标:实现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;
二.使用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>检查数据库,文章插入成功。