毕业设计进行ing~

最近要想要实现一个站内邮箱,想要带换行地输出邮件主体内容

这两天为了解决这个问题百度了好多东西,发现相关问题有很多记录,可能这确实是大多数初学者也碰到的问题。自己找了好多地方都没找到明确的解决方法。

其实解决了实在是很简单,但我真的几经周折才实现了自己想要的功能。

在这里希望自己可以尽可能详细地说明自己解决的过程,但愿能给所有寻找解决方法的朋友一个好的参考。


首先简单说一下问题和解决思路

问题1希望读进去的数据能保存为带换行的格式;

解决思路:在输入textarea表单的jsp页面写一个js前端代码,使其对传输到后端的文本中的回车转换为<br>

核心代码如下:

 function fun() {
var a=document.getElementById("e_main");//获取textarea表单的数据,其中“e_main"为textarea的id属性值
var b=a.value;
a.value=b.replace(/\n/g,"<br/>");//回车转换为<br>
}

问题2希望读出来的数据能保存为带换行的格式。

解决思路:此时存进数据库中的元素已经是带换行的,只要读出来的时候将"\r\n"替换成<br>即可

核心代码:

 e_main=e_main.replace("\r\n","<br>");

实现实例:

首先是编写邮件页面的jsp代码

核心代码:

 /*获取textarea表单元素并且转换值的js代码*/
<script type="text/javascript">
function fun() {
var a=document.getElementById("e_main");//获取textarea表单的数据,其中“e_main"为textarea的id属性值
var b=a.value;
a.value=b.replace(/\n/g,"<br/>");//回车转换为<br>
}
</script> /*form内代码*/
<form action="writeEmail.do" method="post" >
<div class="panel-body">
<div class="form-group has-success">
<div class="col-lg-10"> <label class="control-label" for="inputSuccess">收信ID<span id="div2" style="color:#d47878"></span> </label>
<input type="text" class="form-control" id="i_id_to"
name="i_id_to" placeholder="请在这里输入收信者的ID号" oninput="test2()">
<label class="control-label" for="inputSuccess">邮件主题<span id="div2" style="color:#d47878"></span> </label>
<input type="text" class="form-control" id="e_name"
name="e_name" placeholder="请在这里输入邮件的主题" > <i class="fa fa-gift" style="color:#b8ef33"></i> <font style="color:#9da4b1">添加附件 </font><input type="file" name="添加附件" siez="16"> <br>
<input name="i_id_from" id="i_id_from" type="hidden" value="<%=Userid%>" /> <font class="control-label" for="inputSuccess">邮件正文
</font>
<font style="margin-left:350px;" ><i class="fa fa-picture-o" style="color:#0bb18b9c"></i> 插入图片 </font> <textarea cols="10" rows="15" class="form-control" name="e_main" id="e_main" > </textarea> <h5 align="center">
<input type="submit" class="btn btn-warning" tabindex="3"
value="发送邮件" onClick="return check();">
</h5>
</form>

其次为输出页面jsp页面的核心代码

首先是java部分:

 <%
String e_id = request.getParameter("e_id");
request.setAttribute("e_id", e_id);
//数据库jdbc的驱动装载
Class.forName("com.mysql.jdbc.Driver").newInstance();
//建立数据库连接
url = "jdbc:mysql://127.0.0.1:3306/managementsys?user=root&password=123456&useUnicode=true&characterEncoding=gb2312";
conn = DriverManager.getConnection(url);
//建立一个Statement对象,用于执行sql语句
Statement stat = conn.createStatement();
//执行查询并且得到查询结果。
sql = "select * from email_message where e_id="+e_id;
pstat = conn.prepareStatement(sql);
rs = pstat.executeQuery(); String i_name_to,i_name_from,i_id_from,i_id_to,d_name_from,d_id_from,d_id_to,e_name,e_main,d_name_to;
//将查询的结果集中的记录输出到页面上。
while (rs.next()) {
i_name_to= rs.getString("i_name_to").trim();
i_name_from= rs.getString("i_name_from").trim();
i_id_from= rs.getString("i_id_from").trim();
i_id_to= rs.getString("i_id_to").trim();
d_name_from= rs.getString("d_name_from").trim();
d_id_to= rs.getString("d_id_to").trim();
e_name= rs.getString("e_name").trim();
e_main= rs.getString("e_main").trim();
d_name_to= rs.getString("d_name_to").trim();
e_main=e_main.replace("\r\n","<br>"); /*此句实现对换行符的转换*/
request.setAttribute("i_name_to", i_name_to);
request.setAttribute("i_name_from", i_name_from);
request.setAttribute("i_id_from", i_id_from);
request.setAttribute("i_id_to", i_id_to);
request.setAttribute("d_name_from", d_name_from);
request.setAttribute("d_id_to", d_id_to);
request.setAttribute("e_name", e_name);
request.setAttribute("e_main", e_main);
request.setAttribute("d_name_to", d_name_to);
} %>

输出页面的jsp前端代码

 <div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">
<span style="font-weight:bold";>标题:</span>${e_name }
<br> <span style="font-weight:bold";>from:</span> ${i_name_from} - ${d_name_from } &nbsp
<${i_id_from }>
<!-- 发信时间:${e_year }年${e_month }月${e_day}日 ${e_hour }时${e_minute } -->
<br><span style="font-weight:bold";>收件人:</span>${i_name_to} - ${d_name_to } &nbsp<${i_id_to }>
</h3>
</div>
<div class="panel-body">${e_main }</div>
</div>

最后贴一个结果

希望能帮到有需要的朋友!欢迎留言和给出更好的方法!

textarea 带换行符保存数据与带换行符展示数据的更多相关文章

  1. bug解决思路——插入数据时,前台不展示数据

    积攒一下平时解决bug时的思路,以后若是一头乱麻时翻出来看看~ 一个bug五一之前就和现场在定位,直到今天才算是定位到问题. 所有bug,还是得重现出来才可以发现问题.现场说登记记录时数据没在前台展示 ...

  2. ngResource提交json数据如何带参数

    ngResource提交json数据如何带参数 直接使用ngResource和REST服务接口交互可以让程序显得简洁,前提是配置好跨域和OPTIONS请求的支持,与此同时,如果需要带些额外的参数,有两 ...

  3. FP真验货客户的成品和半成品编码部分没有带尾续,导致FP规划错误 IN_SALES_ORDER数据不带CZ

    错误描述:真验货客户的成品和半成品编码部分没有带尾续,导致FP规划错误 IT角度: IN_SALES_ORDER数据不带CZ 现时前台页面数据: 现时后台数据: 一.跟进情况 1.执行SAP_SALE ...

  4. 云图说|DRS数据对比——带您随时观测数据一致性

    摘要:数据迁移过程中,如何保证数据不丢失,确保数据的一致性? 本文分享自华为云社区<[云图说]第226期 DRS数据对比--带您随时观测数据一致性>,作者:阅识风云 . 数据迁移过程中,如 ...

  5. 用Python爬取分析【某东618】畅销商品销量数据,带你看看大家都喜欢买什么!

    618购物节,辰哥准备分析一波购物节大家都喜欢买什么?本文以某东为例,Python爬取618活动的畅销商品数据,并进行数据清洗,最后以可视化的方式从不同角度去了解畅销商品中,名列前茅的商品是哪些?销售 ...

  6. 带缓冲I/O 和不带缓冲I/O的区别与联系

    首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用.系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其 ...

  7. 转: 带你玩转Visual Studio——带你理解多字节编码与Unicode码

    上一篇文章带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑帮我们理解了Windows中的各种类型C/C++运行时库及它的来龙去脉,这是C++开发中特别容易误入歧途的 ...

  8. 带你玩转Visual Studio——带你了解VC++各种类型的工程

    原文地址:http://blog.csdn.net/luoweifu/article/details/48816605 上一篇文章带你玩转Visual Studio——带你新建一个工程一文中提到新建一 ...

  9. 【译】x86程序员手册18-6.3.1描述符保存保护参数

    6.3 Segment-Level Protection 段级保护 All five aspects of protection apply to segment translation: 段转换时会 ...

  10. 带你玩转Visual Studio——带你理解多字节编码与Unicode码

    目录(?)[-] 多字节字符与宽字节字符 char与wchar_t string与wstring string 与 wstring的相关转换 字符集Charcater Set与字符编码Encoding ...

随机推荐

  1. [leetcode]84. Largest Rectangle in Histogram直方图中的最大矩形

    Given n non-negative integers representing the histogram's bar height where the width of each bar is ...

  2. mybatis pagehelper分页插件使用

    使用过mybatis的人都知道,mybatis本身就很小且简单,sql写在xml里,统一管理和优化.缺点当然也有,比如我们使用过程中,要使用到分页,如果用最原始的方式的话,1.查询分页数据,2.获取分 ...

  3. node.js中使用 http-proxy 创建代理服务器

    代理,也称网络代理,是一种特殊网络服务,允许一个终端通过代理服务与另一个终端进行非直接的连接,这样利于安全和防止被攻击. 代理服务器,就是代理网络用户去获取网络信息,就是信息的中转,负责转发. 代理又 ...

  4. hibernate save数据的时候报错:ids for this class must be manually assigned before calling save()

    这个错误是因为eclipse  这种jpatools 自动生成的实体类内没把id 设置为自增,还有id的值在生成的时候默认为string 即使加上了也所以无法自增 ,所以还需要把string 换成In ...

  5. 关于双重for循环封装数据问题

    1.问题描述 在使用双重for循环进行封装数据时出现一个问题,就是有的数据封装上了,有的数据未封装上,找了很久原因: for (A a:ListA) { for (B b: ListB) { if(a ...

  6. IoGetRelatedDeviceObject学习

    PDEVICE_OBJECT IoGetRelatedDeviceObject( IN PFILE_OBJECT FileObject ) /*++ Routine Description: This ...

  7. Linux学习笔记:常用命令

    个人常用的Linux命令总结(持续更新): 切换目录:cd 列出目录下面的文件:ls 显示当前所在的目录:pwd 操作文件 新建文件:touch file01 查看文件内容:less more cat ...

  8. Scrum冲刺阶段2

    成员今日完成的任务 人员 任务 何承华 后端设计 陈宇 后端设计 丁培辉 后端设计 温志铭 主页面的设计 杨宇潇 主页面的设计 张主强 服务器构建 成员遇到的问题 人员 问题 何承华 暂无 陈宇 暂无 ...

  9. Vue post提交

    vue中的axios 是不直接支持post方法的,所以我们得绕一下路,我目前在登录的时候运用到了,服务器端用php,可以收到数据 let param = new URLSearchParams(); ...

  10. Shell脚本-基本运算符

    跟着RUNOOB网站的教程学习的笔记 shell和其他编程语言一样,支持多种运算符,包括: 算术运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 expr是一款表达式计算公式,使用它能完成 ...