Я искал четкий ответ или возглавлял весь стек и другие форумы, но все они связаны с заполнением текстовых полей с помощью ввода, форм и/или представлений. В моем случае я не нуждаюсь ни в одном из них. Мне просто нужна область для заполнения информацией, полученной запросом, который я написал в моем сервисе servlet(). Я не хочу полагаться на скриптлеты. Я хочу иметь возможность поддерживать безопасность с моими частными экземплярами и поддерживать 2 разных файла, где я могу писать на одном языке для каждого. Для меня это проще и более организованно.Заполнять текстовое поле JSP с помощью метода в Java Servlet
Для записи алгоритм для извлечения информации был протестирован и работает должным образом, если выполняется через сервлет с помощью printwriter, выполняющего весь код 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>
'Как бы я вызвал метод service() и заполнил текстовое поле в моем jsp желаемыми значениями из моего запроса?' Вы думаете об этом назад. «Servlet» должен быть точкой входа, должен подготовить информацию, поместить ее в атрибуты request/session и переслать в jsp. Затем jsp может взять его из атрибутов request/session для его отображения. –
Sotirios Delimanolis верен. Также можно использовать Ajax для вызова сервлета и установки текста текстового поля, но, вероятно, не совсем того, что вы хотите сделать. – developerwjk
Я пытаюсь прояснить мыслительный процесс здесь. Запрос выходит за страницу, и ответ отправляет сама страницу. Я хочу отправить текст/«атрибуты» для textarea с моим запросом, а затем ответ отправит страницу с атрибутами, которые я отправил на нее? –