首先,需要使用Java后端编写一个SaveTextServlet,该Servlet接收来自前端页面的POST请求,将textarea中的文字保存到数据库中。
1.前端页面代码示例:
<form action="SaveTextServlet" method="post">
<textarea name="content"></textarea>
<input type="submit" value="Submit">
</form>
2.Servlet代码示例:
@WebServlet("/SaveTextServlet")
public class SaveTextServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private TextDao textDao = new TextDao();
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String content = request.getParameter("content");
String formattedContent = formatContent(content);
textDao.save(formattedContent);
response.sendRedirect("success.html");
}
private String formatContent(String content) {
// 去除多余的换行和空格,只保留一个换行或空格
content = content.replaceAll("[\\s]+", " ");
StringBuilder sb = new StringBuilder();
for (char c : content.toCharArray()) {
if (c == ' ') {
sb.append(" "); // 替换空格为" "
} else if (c == '\n' || c == '\r') {
sb.append("<br/>"); // 替换换行为"<br>"
} else {
sb.append(c); // 其他字符正常添加
}
}
return sb.toString();
}
}
在这段代码中,我们首先通过request.getParameter()方法获取前端提交的textarea内容。然后,我们使用formatContent()方法处理内容,将多余的换行和空格去掉,并将空格替换成HTML实体" ",将换行替换成HTML标签"
"。最后,将处理后的内容保存到数据库中并重定向到一个success.html页面。
处理后的内容可以存储为VARCHAR类型或TEXT类型,存储空间与原始内容长度相同,但会将多余的空格和换行占用的多余存储空间节省下来。
另外,我们还可以通过JSTL标签库实现类似的效果:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
...
<form action="SaveTextServlet" method="post">
<textarea name="content"></textarea>
<input type="submit" value="Submit">
</form>
...
<c:if test="${not empty param.content}">
<p>${fn:replace(param.content, '\r\n|\n\r|\n|\r', '<br/>')}</p>
</c:if>
在JSP页面中,我们使用c:if标签判断内容是否为空。如果不为空,我们就使用fn:replace函数替换换行为"
"。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jsp实现textarea中的文字保存换行空格存到数据库的方法 - Python技术站