【问题标题】:How do i edit my table in jsp page without opening new page to edit and it should reflects in database?如何在 jsp 页面中编辑我的表格而不打开新页面进行编辑,它应该反映在数据库中?
【发布时间】:2017-11-21 05:19:56
【问题描述】:

当我编辑表格并点击更新时,如果我按下查看按钮,表格的内容将设置为空..请帮我解决这个问题..

这是我的index.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">
<%@ page import="java.sql.*" %> 
<%@ page import="java.io.*" %> 
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%
String id = request.getParameter("id");
String driver = "com.mysql.jdbc.Driver";
String connectionUrl = "jdbc:mysql://localhost:3306/";
String database = "test";
String userid = "root";
String password = "root";
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
%>
<html>
<body>
<!-- <h1>Retrieve data from database in jsp</h1> -->
<table border="1">
<tr>
<td>id</td>
<td>first name</td>
<td>last name</td>
<td>City name</td>
<td>Email</td>
<td>update</td>
</tr>
<%
try{
connection = DriverManager.getConnection(connectionUrl+database, userid, password);
statement=connection.createStatement();
String sql ="select * from users";
resultSet = statement.executeQuery(sql);
while(resultSet.next()){
%>
<tr>
<td  contenteditable><%=resultSet.getString("id") %></td>
<td  contenteditable><%=resultSet.getString("first_name") %></td>
<td  contenteditable><%=resultSet.getString("last_name") %></td>
<td  contenteditable><%=resultSet.getString("city_name") %></td>
<td  contenteditable><%=resultSet.getString("email") %></td>
<td><a href="update-process.jsp?id=<%=resultSet.getString("id")%>">update</a></td>
</tr>
<%
}
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
%>
</table>
</body>
</html>

这是我的update-process.jsp,用于将数据存储回数据库。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.sql.*" %>
<%! String driverName = "com.mysql.jdbc.Driver";%>
<%!String url = "jdbc:mysql://localhost:3306/test";%>
<%!String user = "root";%>
<%!String psw = "root";%>
<%
String id = request.getParameter("id");
String first_name=request.getParameter("first_name");
String last_name=request.getParameter("last_name");
String city_name=request.getParameter("city_name");
String email=request.getParameter("email");
if(id != null)
{
Connection con = null;
PreparedStatement ps = null;
int personID = Integer.parseInt(id);
try
{
Class.forName(driverName);
con = DriverManager.getConnection(url,user,psw);
String sql="Update users set id=?,first_name=?,last_name=?,city_name=?,email=? where id="+id;
ps = con.prepareStatement(sql);
ps.setString(1,id);
ps.setString(2, first_name);
ps.setString(3, last_name);
ps.setString(4, city_name);
ps.setString(5, email);
int i = ps.executeUpdate();
if(i > 0)
{
out.print("Updated");
}
else
{
out.print("There is a problem in updating Record.");
} 
}
catch(SQLException sql)
{
request.setAttribute("error", sql);
out.println(sql);
}
}
%>

<html>
<body>
<form action="index.jsp">
<input type="submit" value="view">
</form>
</body></html>

【问题讨论】:

  • 不要在jsp中写java代码。为此编写一个单独的servlet。你得到什么错误/异常?
  • 如果按更新,编辑我的表格后,该更改应反映在数据库中。但更新后数据库中的值都设置为null;

标签: html mysql jsp


【解决方案1】:

首先,我建议你不要在jsp中放置任何java代码。您的代码看起来非常混乱,很难发现错误和进一步维护。我不确定,但根据以下代码行:

String first_name=request.getParameter("first_name");
String last_name=request.getParameter("last_name");
String city_name=request.getParameter("city_name");
String email=request.getParameter("email");

你总是会得到空值,因为你没有这些输入字段。输入字段会生成请求参数,或者您需要像为 id 所做的那样将这些请求参数附加到您的访问 URL 中。

编辑:在您的 index.jsp 更改中:

<td><a href="update-process.jsp?id=<%=resultSet.getString("id")%>">update</a></td>

<td><a href='update-process.jsp?id=<%=resultSet.getString("id")%>&first_name=<%=resultSet.getString("first_name")%>&last_name=<%=resultSet.getString("last_name")%>&city_name=<%=resultSet.getString("city_name")%>&email=<%=resultSet.getString("email")%>'>update</a></td>

但是这样做是一种非常糟糕的方法。 最好写一个 servlet,在 index.jsp 中有一个包含所有输入字段的 html 表单。

【讨论】:

  • 不,兄弟它不工作...是的,我会为此编写 servlet。 ty
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多