我正在使用Eclipse Java
EE进行Web应用程序项目。当前,我的应用程序返回数据库中存储员工个人信息的所有值。但是,我设置了默认的准备语句以搜索表employee_id =
1234,而不是登录员工的employee_id。这意味着无论哪个员工登录到我的系统,它都只会显示该员工的个人信息。 ID为1234,如下面的准备语句所示:
PreparedStatement ps = con.prepareStatement("select employeeID, FirstName, LastName, Admin, DOB, Address, Email, HourlyRate, Gender, ALeaveBalance, SLeaveBalance, ActiveStatus, Role, BSB, BankName, AccNumber, SuperNumber, SuperCompany from payroll_system.employee_info where **employeeID = 1234**");
请注意上面的employeeID如何设置为1234。这意味着我的程序(请参见下面的代码)将仅显示该员工的信息。但是,我希望将employeeID设置为登录者的ID(登录由另一个Servlet管理。如果有人可以帮助我,将非常感谢,谢谢:)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class PersonalInfoOutput extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
boolean st = false;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/payroll_system", "root", "");
**PreparedStatement ps = con.prepareStatement("select employeeID, FirstName, LastName, Admin, DOB, Address, Email, HourlyRate, Gender, ALeaveBalance, SLeaveBalance, ActiveStatus, Role, BSB, BankName, AccNumber, SuperNumber, SuperCompany from payroll_system.employee_info where employeeID = 1234");**
ResultSet rs = ps.executeQuery();
st = rs.next();
if(st){
boolean adminTrue = rs.getBoolean("Admin");
boolean activeTrue = rs.getBoolean("ActiveStatus");
out.println("<html>");
out.println("<head>");
out.println("<title> Personal Information </title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Personal Information</h1>");
out.println("<p><b>" + "Employee ID: " + "</b>" + rs.getString("employeeID") + "</p>");
out.println("<p><b>" + "Name: " + "</b>" + rs.getString("FirstName") + " " + rs.getString("LastName")+ "</p>");
if(adminTrue) {
out.println("<p><b>"+ "Admin: " + "</b>" +"Yes" + "</p>");
}
else {
out.println("<p><b>"+ "Admin: " + "</b>" +"No" + "</p>");
}
out.println("<p><b>" + "Date of Birth: " +"</b>" + rs.getString("DOB") + "</p>");
out.println("<p><b>" + "Address: " + "</b>" + rs.getString("Address") + "</p>");
out.println("<p><b>" + "Email: " + "</b>" + rs.getString("Email") + "</p>");
out.println("<p><b>" + "Hourly Income: " + "</b>" + "$" + rs.getString("HourlyRate") + "</p>");
out.println("<p><b>" + "Gender: " + "</b>" + rs.getString("Gender") + "</p>");
out.println("<p><b>" + "Annual Leave Balance: " + "</b>" + rs.getString("ALeaveBalance") + "</p>");
out.println("<p><b>" + "Sick Leave Balance: " + "</b>" + rs.getString("SLeaveBalance") + "</p>");
if(activeTrue) {
out.println("<p><b>"+ "Currently Active: " + "</b>" +"Yes" + "</p>");
}
else {
out.println("<p><b>"+ "Currently Active: " + "</b>" +"No" + "</p>" );
}
out.println("<p><b>" + "Role: " +"</b>" + rs.getString("Role") + "</p>");
out.println("<p><b>" + "BSB: " + "</b>" + rs.getString("BSB") + "</p>");
out.println("<p><b>" + "Bank: " + "</b>" + rs.getString("BankName") + "</p>");
out.println("<p><b>" + "Bank Account Number: " + "</b>" + rs.getString("AccNumber") + "</p>");
out.println("<p><b>" + "Superannuation Company: " + "</b>" + rs.getString("SuperCompany") + "</p>");
out.println("<p><b>" + "Superannuation Number: " + "</b>"+ rs.getString("SuperNumber") + "</p>");
}
}catch(Exception e)
{
e.printStackTrace();
}
out.close();
}
}
将employeeID的值从先前的Servlet传递到当前的Servlet。
Replace id:1243 with placeHolder: ? .
然后设置它的值 ps.setInt(1,"value that you got from previous servlet");
更改为PersonalInfoOutput.java:
HttpSession session = request.getSession(false);
if(session != null) {
String employeeid = (String)session.getAttribute("employeeid");
}
至 :
HttpSession session = request.getSession(false);
String employeeid="";
if(session != null) {
employeeid = (String)session.getAttribute("employeeid");
}
问题内容: 如何在bash for循环中使用变量?如果我只是使用标准的for循环,它会达到我的期望 这很好。它循环遍历4次,包括0到3,包括打印我的消息并将计数放在末尾。 当我使用以下for循环尝试相同的操作时,它似乎等于一个字符串,这不是我想要的。 输出: 我试过了 和 他们俩都不做我所需要的。希望有人可以帮助我。预先感谢bash专家对for循环的帮助。 问题答案: 一种方法是使用: 请注意 设
问题内容: 我想编写一个包含NodeJS变量的SQL查询。当我这样做时,它给我一个错误“未定义”。 我希望下面的SQL查询能够识别该变量。如何将NodeJS变量输入到SQL查询中?它周围是否需要特殊字符,例如或。 问题答案: 您将需要将变量的 值 放入SQL语句中。 这不好: 这将起作用,但是从SQL注入攻击中并不安全: 为了防止SQL注入,您可以像这样转义您的价值: 但是最好的方法是使用参数替换
问题内容: 我解释自己 我有一个填写查询的表格(例如): 但只有“ id”为必填项,所有其他参数均为可选。如何填写(或重新创建)该查询的预声明? 问题答案: 您将不得不使用多个准备好的语句,或者只是在运行时创建一条语句,检查您拥有哪些参数。 像这样: 更新/警告 :不要直接将参数值添加到查询字符串中,而应使用等。如上所示,查询字符串应仅包含值的占位符(例如),以防止SQL注入攻击。 我的意思是
问题内容: 我正在使用R来调用mySQL语句,其中我在语句外定义了变量,例如 但这会返回一个空集,我已经在Google周围搜索并尝试了“。&foo”。“ .foo。” ‘。&& foo。’‘和许多不同的组合,但是它们都不起作用,我认为这应该是mysql问题,而不是我遇到的R特定问题,但不确定。通常,变量具有$值,但R中没有。 问题答案: 这应该工作:
我是Katalon Studio的新手,我有一个要求,就是从excel表中读取数据并提出API请求。请提供步骤。 提前谢谢。
问题内容: 我想使用表变量而不是临时表,但是我的主要查询构造是动态的。动态查询用单引号引起来,所以我该如何从@TableVariable中获取数据。我不想删除动态查询,因为稍后会添加一些参数。 例如,以下是错误代码,其中我已将表变量写入动态查询中..... 在这方面帮助我。 提前致谢。 问题答案: 试试这个 :