我有稱爲下列servlet「PayslipAdmin其中從數據庫中檢索信息,如下所示,但只有當‘PayrollRun’小服務程序運行:如何截斷表格以便稍後輸入新值,但仍顯示以前的值?
public class PayslipAdmin extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(false);
String employee_id = "";
if(session != null) {
employee_id = (String)session.getAttribute("employeeid");
}
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/payroll_system", "root", "");
PreparedStatement ps = con.prepareStatement("SELECT run FROM payroll_system.payslip WHERE employeeID = ?);
ps.setString(1, employee_id);
ResultSet rs = ps.executeQuery();
st = rs.next();
payroll_run = rs.getBoolean("run");
if(payroll_run) {
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/payroll_system", "root", "");
PreparedStatement ps = con.prepareStatement("select FirstName, LastName, Address, Role, BankName,AccNumber,SuperNumber,SuperCompany from payroll_system.employee_info where employeeID = ?");
ps.setString(1, employee_id);
}catch(Exception e)
{
e.printStackTrace();
}
}
}
上述servlet將僅運行,如果了「PayrollRun」小服務程序已被執行,如下圖所示: 公共類PayrollRun延伸的HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/payroll_system", "root", "");
PreparedStatement pss = con.prepareStatement("INSERT INTO payroll_system.payslip(run) VALUES("1")");
pss.executeUpdate();
PreparedStatement ps = con.prepareStatement("INSERT INTO payroll_system.payslip(employeeID) SELECT employeeID FROM payroll_system.employee_info");
ps.executeUpdate();
String paydate = new SimpleDateFormat("yyyy.MM.dd").format(new java.util.Date());
PreparedStatement ps0= con.prepareStatement("UPDATE payroll_system.payslip SET paydate=?");
ps0.setString(1, paydate);
ps0.executeUpdate();
PreparedStatement ps1 = con.prepareStatement("UPDATE payroll_system.payslip pslip JOIN payroll_system.employee_info info ON pslip.employeeID = info.employeeID SET pslip.role = info.Role ");
ps1.executeUpdate();
}catch(Exception e)
{
e.printStackTrace();
}
}
當工資管理員按下一個html按鈕來運行所述p ayroll,運行「PayrollRun」servlet。當員工按下html按鈕查看他們的薪資單時,將運行「PayslipAdmin」小服務程序。但是,只有在工資管理員運行「PayrollRun」servlet時纔會發生這種情況。
我的問題
每次工資管理員激活「PayrollRun」的servlet,布爾值「運行」將被設置爲true。這將允許員工在「PayslipAdmin」servlet中查看他們的工資單(也在上面顯示,但尚未完成)。當管理員運行「PayrollRun」時,我需要截斷幾個表,以便員工可以輸入由其他servlet管理的新值(與此問題無關)。但是,我還需要確保通過「PayslipAdmin」servlet,員工仍然可以查看他們的薪資單,但如果表格要被截斷,我該如何實現這一目標?
你可以將它們合併成一個servlet嗎? – ck1
@ ck1嗨!不幸的是,這是不可能的,因爲必須首先執行「PayrollRun」servlet,以便「PayslipAdmin」可以向員工顯示薪資單信息。除非你可以建議一種解決方法,這可能是可能的。當工資管理員按下html按鈕來運行工資單時,運行「PayrollRun」servlet。當員工按下html按鈕查看他們的薪資單時,將運行「PayslipAdmin」小服務程序。但是,只有在工資管理員運行「PayrollRun」servlet時纔會發生這種情況。它能夠合併它們並且仍然可以實現嗎? – javaprogrammer
當執行PayrollRun時,您可以使用httpclient創建對另一個servlet的請求。 –