gpt4 book ai didi

java - 使用 Java Servlet 中的方法填充 JSP 文本区域

转载 作者:行者123 更新时间:2023-12-01 13:41:57 26 4
gpt4 key购买 nike

我已经在堆栈和其他论坛中寻找明确的答案或引导,但所有这些都与用输入、表单和/或提交内容填充文本区域相关。就我而言,我不需要任何这些。我只需要用我在 Servlet 的 service() 方法中编写的查询获取的信息填充该区域。我不想依赖 scriptlet。我希望能够维护我的私有(private)实例的安全性,并维护 2 个不同的文件,我可以在其中为每个文件使用一种语言进行编码。这样对我来说更容易、更有条理。

郑重声明,用于获取信息的算法已经过测试,如果通过 servlet 运行且打印编写器执行所有 html 代码,则该算法可以正常工作。我现在想将 html/jsp 与 java 分开,以保持更好的编码实践。

如何调用 service() 方法并使用查询中所需的值填充 jsp 中的文本区域?

谢谢。

Servlet:

/**
* Servlet implementation class Homepage
*/
@WebServlet(urlPatterns = { "/Homepage" })

public class Homepage extends HttpServlet {
private static final long serialVersionUID = 1L;
private Connection connection;
private Statement stmt;
private ResultSet rs;

/**
* @see HttpServlet#HttpServlet()
*/
public Homepage() {
super();
}

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();

try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("driver found");
connection = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;" +
"instance=SQLEXPRESS;databaseName=Timecard_DB;user=Dan;password=12345;");

try {
stmt = connection.createStatement();
String feedSelect = "SELECT ROLE_NAME from ROLES";
rs = stmt.executeQuery(feedSelect);
ResultSetMetaData metadata = rs.getMetaData();
while(rs.next()) {
for(int i = 1; i <= metadata.getColumnCount(); i++) {
String colValue = rs.getString(i);
out.println(colValue);
}
}
}

catch (SQLException e) {
e.printStackTrace();
}
}
catch (Exception e) {
e.printStackTrace();
e.getMessage();
}
response.setContentType("text/html");
}

JSP:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Home</title>

<style>
body {
background-image: url(Images/whitebg.jpg);
background-repeat: no-repeat;
background-size: 100%;
}

#container {
width: 900px;
margin: 0 auto;
font-family: "Trebuchet MS", Helvetica, sans-serif;
}

#header img {
position: absolute;
top: 80px;
left: 72px;
width: 200px;
height: 50px;
}

#container a:visited {
color: blue;
}

#container a:hover {
color: red;
}

#welcome {
position: absolute;
top: 20px;
right: 100px;
}

#logout {
position: absolute;
top: 20px;
right: 20px;
width: 50px;
height:25px;
}

#links {
position: absolute;
top: 200px;
left: 72px;
}

#links ul {
list-style-type: none;
padding: 5px 10px 5px 10px;
border: 2px solid red;
border-radius: 10px;
}

#links li {
padding: 10px 0 25px 0;
}

#feed {
position: absolute;
top: 100px;
left: 400px;
width: 800px;
height: 400px;
}

#feedtext {
width:800px;
height:400px;
overflow: scroll;
}
</style>
</head>

<body>

<div id='container'>

<div id='header'>
<img src='Images/mPowerlogo.jpg'/>
</div>

<div id='welcome'>
Welcome, User1
</div>

<div id='logout'>
<a href=''>Logout</a>
</div>

<div id='links'>
<ul>
<li><a href=''>Timecard Management</a></li>
<li><a href=''>User Management</a></li>
<li><a href=''>Customer Management</a></li>
<li><a href=''>Admin</a></li>
<li><a href=''>Reports</a></li>
</ul>
</div>

<div id='feed'>
<p>Recent Activity:</p>
<textarea id='feedtext' readonly>
***WANT DB INFO HERE***
</textarea>
</div>

</div>

</body>
</html>

最佳答案

首先,您的类需要重写 HttpServlet 中的 doPost 或 doGet 方法。

然后,当您转到主页时,servlet 将接收请求,处理数据并将其添加到请求中。在你的循环中你会做类似的事情:

StringBuilder data = new StringBuilder();
while (rs.next()) {
for (...) {
data.append(rs.getString(i));
data.append("|"); // Some separator
}
data.append("\n");
}

request.setAttribute("data", data);

之后您需要重定向到 JSP:

RequestDispatcher dispatcher = request.getRequestDispatcher("/pathToJsp");
dispatcher.forward(request, response);

最后在 JSP 中获取数据:

<textarea>
${data} <%-- This will grab data from the request attribute --%>
</textarea>

您需要关注 HTML 注入(inject),以防有人将 HTML 保存到您的数据库中。这将在浏览器上呈现。

在JSP中你可以使用Expression Language访问请求中的数据。

关于java - 使用 Java Servlet 中的方法填充 JSP 文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20667515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com