从数据库检索到 jsp 的数据中的新行

Posted

技术标签:

【中文标题】从数据库检索到 jsp 的数据中的新行【英文标题】:New line in data retrieved from database to jsp 【发布时间】:2021-09-17 21:41:08 【问题描述】:

我正在尝试使用 JSP 创建网页,主页返回并显示从数据库到 JSP 文件的日期,并且有一个编辑按钮允许编辑消息并因此进行编辑数据库中的数据,我通过声明修改了显示主页的文本 String convert = rs.getString("template"); 然后打印 convert 但是当我单击 edit 时,文本显示为来自数据库,尽管文本包含 br 标签;它显示没有新行。

这里是主页面的运行

这里是编辑页面的运行

我尝试更改获取数据的方式,如 img No. 3 所示,但它也对我不起作用

我的问题是在这种情况下如何插入新行?

代码按预期运行,只是这个显示问题。 这是 Edit.JSP 的代码

<%@ page language="java" contentType="text/html; charset=windows-1256"
    pageEncoding="windows-1256" import="java.io.*" import="java.sql.*"
    import="java.util.*" import="javax.sql.*"%>


<!DOCTYPE html>
<html>
<body>

    <%
    String url = "jdbc:sqlserver://DESKTOP-SQ7B6EQ;databaseName=JsonToSql";

    String username = "";
    String password = "";
    Statement stmt = null;
    ResultSet rs = null;
    PreparedStatement ps = null;
    Connection con = null;

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
    con = DriverManager.getConnection(url, username, password);
    %>

    <form method="post" action="">
        <%
        stmt = con.createStatement();
        String u = request.getParameter("u");
        int num = Integer.parseInt(u);
        String data = "select * from DatabaseMsgs where id = '" + num + "' ";
        rs = stmt.executeQuery(data);

        while (rs.next()) 
        %>


        <h3 align="left"
            style="Color: white; font-size: 18px; color: black; font-family: 'Exo 2', sans-serif;">
            Welcome to edit page</h3>
        <input class="container" type="hidden" name="id"
            value="<%=rs.getString("id")%>">
        <table border="0">
            <tr align="left"
                style="font-weight: bold; font-family: 'Festive', curesultive; text-transform: capitalize; font-size: 15px; color: #203bd6">
                <td>code:</td>
                <td><input type="text" name="code"
                    value='<%=rs.getString("code")%>' /></td>
            </tr>
        <%--    <%
            String convert = rs.getString("template").replaceAll("EmployeeName:", "Employee Name:")
                    .replaceAll("Luc", "Lucation").replaceAll("TelephoneNo", "Telephone No.").replaceAll("E-mail", "E-mail:")
                    .replaceAll("Mobile", "Mobile No. : ").replaceAll("phoneExtension", "phone Extension No.:")
                    .replaceAll("[* \\  ----------------------- ]", " ").replaceAll("\\[", "").replaceAll("\\]", "");
            %> --%>
            <tr align="left">
                <td
                    style="font-weight: bold; font-family: 'Festive', curesultive; text-transform: capitalize; font-size: 15px; color: #203bd6">template:</td>


                <td><input  type="text" style="width: 100ch; height: 30ch;"
                    name="template" value='<%=rs.getString("template")%>' /></td>
            </tr>
            <tr align="left" valign="top">
                <td></td>

                <%
                
                %>
                <td><button type="submit" class="btn btn-warning" >Edit</button></td>
            </tr>
        </table>
    </form>
</body>
</html>

<%
String a = request.getParameter("id");
String b = request.getParameter("code");
String c = request.getParameter("template");

if (a != null && b != null && c != null) 

    String query = "update DatabaseMsgs set code = ? , template=? where id = '" + a + "' ";
    ps = con.prepareStatement(query);
    ps.setString(1, b);
    ps.setString(2, c);

    ps.executeUpdate();
    response.sendRedirect("Home.jsp");


    %>

`

【问题讨论】:

您可以检查未在新行上显示的元素并在您的问题上分享图像吗? 您可以尝试使用\n 而不是&lt;br&gt;,因为目前尚不清楚您要在哪里添加新行。 @skr 我尝试使用 \n 而不是 br 标签,但它不起作用。正如您在附加的 img No.1 中看到的那样,这些是我希望我的文本采用的格式。员工姓名: 手机号码: @skr 我也尝试使用 `rs.getString("template").replaceAll("" , "\n")`,但它也不起作用:(跨度> 如果我理解清楚,您希望编辑页面模板字段中带有&lt;br&gt; 的字符串以新行显示? 【参考方案1】:

HTML 输入元素、输入文本或类似的东西(例如电子邮件)会故意去掉所有换行符,所以这是行不通的。

唯一可以接受换行符的表单元素是文本区域。

另外,不要使用&lt;br&gt;'\n' 在要添加新行的地方使用&amp;#13;&amp;#10;

所以,不要使用 ,

&lt;input type="text" name="test" value='&lt;%=convert %&gt;'/&gt;

使用

&lt;textarea cols='60' rows='8' va&gt; &lt;%=convert %&gt; &lt;/textarea&gt;

例如:

&lt;textarea cols='30' rows='2' va&gt;This is my statement one.&amp;#13;&amp;#10;This is my statement2&lt;/textarea&gt;

将导致

您可以通过调整colsrows来调整textarea的高度和宽度。

为了让它看起来更像一个输入字段

试试这个,

function auto_height(elem)  
    elem.style.height = "1px";
    elem.style.height = (elem.scrollHeight)+"px";
.auto_height  /* CSS */
  width: 100%;
&lt;textarea rows="2" class="auto_height" oninput="auto_height(this)"&gt;line1&amp;#13;&amp;#10line2&lt;/textarea&gt;

【讨论】:

是的,现在可以使用了……非常感谢 太好了,请点赞并接受我的回答。

以上是关于从数据库检索到 jsp 的数据中的新行的主要内容,如果未能解决你的问题,请参考以下文章

选择jsp中选择标记中的选项时如何从数据库中检索数据

显示从数据库中检索到的从servlet到jsp文件的数据

如何在选择jsp中的select标记中的选项时从数据库中检索数据

如何从 html 表中检索数据并将其发送到另一个 jsp 页面?

如何使用 jdbc 连接从数据库中检索数据并将其显示在 jsp 文本字段中

如何在 Struts 2 中将数据库记录列表(通过 Hibernate 检索)显示到 JSP 页面?