0

PersonalInfoOutput.java servlet is using the doPost method. The user logs in at index.html. From index.html, the request is sent to Login.java servlet.

From there, the user is directed to the PersonalInfoOutput.java servlet.

Now, consider another page called ChangePassAdmin.html. In this html code, one of these

  • goes to PersonalInfoOutput.java. But when I click on it from that page,

    I get HTTP Status 405 - HTTP method GET is not supported by this URL.

    Can someone please help me as to how I should solve this problem?

    I tried changing PersonalInfoOutput.java to doGet instead of doPost but then Login.java servlet will return HTTP Status 405 - HTTP method POST is not supported by this URL. So it seems I need both doGet and doPost for this PersonalInfoOutput.java servlet.

    PersonalInfoOutput.java (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();
    
                HttpSession session = request.getSession(false);
                String employeeid = ""; 
    
                           if(session != null) { 
                               employeeid = (String)session.getAttribute("employeeid"); 
                           }
    
    
                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 = ?");
                    ps.setString(1, employeeid);
                    ResultSet rs = ps.executeQuery(); 
                    st = rs.next(); 
                    if(st){
                    etc... (rest of the code isn't relevant to question)
    

    index.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <link rel = "stylesheet" type = "text/css" href = "main.css">
    <title>Login</title>
    </head>
    <body>
    <form action="Login" method="post">
    <h1>
    Login
    </h1>
     <b>Employee ID:</b> <br>
     <input type="text"name="employee_id" size="20"><br><br>
    <b>Password:</b><br>
    <input type="password" name="password" size="20"><br><br>
    <input type="submit" value="Login"><br><br>
    </form>
    </body>
    </html>
    

    Login.java (servlet)

    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.sql.*;
    
    public class Login extends HttpServlet {
    
        protected void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
    
            String employee_id = request.getParameter("employee_id");
            String password = request.getParameter("password");    
    
            HttpSession session = request.getSession(); 
            session.setAttribute("employeeid", employee_id);
    
            if(ValidateLogin.user(employee_id, password)) { 
                RequestDispatcher rs = request.getRequestDispatcher("PersonalInfoOutput");
                rs.forward(request, response);
            }
            else
            {
               out.print("Employee ID or Password is incorrect. Please try again.");
               RequestDispatcher rs = request.getRequestDispatcher("index.html");
               rs.include(request, response);
            }
        }  
    
    
            }
    

    ChangePassAdmin.html

    <!DOCTYPE html> 
    <html> 
    <head> 
    <meta charset = "UTF-8"> 
    <link rel = "stylesheet" type = "text/css" href = "main.css">
    <link rel = "stylesheet" type = "text/css" href = "sidebar.css">
    <title>Change Password</title>
    <style>
    table { border-collapse: collapse; width: 50%; } th, td { text-align: left; padding: 8px; } tr:nth-child(even){background-color: #f2f2f2}
    tr:hover {background-color: #e2f4ff;}
    </style>
    </head>
    
    <body>
    
    <ul>
    
    <li><a  href=PersonalInfoOutput>View Personal Information</a></li>
    <li><a  href=PersonalInfoOutput>View Expense Claims</a></li>
    <li><a  href=PersonalInfoOutput>View Payslips</a></li>
    <li><a  class=active >Change Password</a></li>
    <li><a  href=PersonalInfoOutput>Maintain Employee Information</a></li>
    <li><a  href=PersonalInfoOutput>Maintain Tax Information</a></li>
    <li><a  href=PersonalInfoOutput>Maintain Payroll Items</a></li>
    <li><a  href=PersonalInfoOutput>Maintain Timesheet</a></li>
    <li><a  href=PersonalInfoOutput>Maintain Employee Expenses</a></li>
    <li><a  href=PersonalInfoOutput>Run Payroll</a></li>
    <li><a  href=PersonalInfoOutput>Generate Reports</a></li>
    
    </ul>
    
    <div style=margin-left:25%;padding:1px;>
    </div>
    
    <div id="container">
        <h1>Change Password</h1>
        <form action ="NewPassword" method = post> 
    
        <table border ="1"> 
    
        <tr>
        <td>Existing Password:</td>
        <td><input type = "password" name = "oldpassword" size = "20"></td>
        </tr>
    
        <tr>
        <td>New Password:</td>
        <td><input type = "password" name = "newpassword" size = "20"></td>
        </tr>
    
        <tr>
        <td>Confirm New Password</td>
        <td><input type = "password" name = "confirmpassword" size = "20"></td>
        </tr>
        </table>
        <br>
        <br>
        <input type = "submit" value = "Update Password">
        </form>.
        </div>
    </body>
    
    </html>
    
    Jude Niroshan
    • 4,280
    • 8
    • 40
    • 62
    Programmer
    • 1,266
    • 5
    • 23
    • 44
    • 1
      Possible duplicate of [HTTP Status 405 - HTTP method POST is not supported by this URL java servlet](http://stackoverflow.com/questions/4297049/http-status-405-http-method-post-is-not-supported-by-this-url-java-servlet) – soorapadman Jan 22 '16 at 04:45
    • where did you get error onclick of *'update password'* or on click of *
    • *?
    • – soorapadman Jan 22 '16 at 04:51
  • @Soora on click of update password '
  • View Personal Information
  • ' – Programmer Jan 22 '16 at 04:56
  • i suspect it because you are not implementing **doGet** method in your PersonalInfoOutput.by default always call doGet() method – soorapadman Jan 22 '16 at 04:58
  • @javaprogrammer have you tried the answers the possibly duplicate question posted above? I would like to know if this is the same issue or if there is something else going on here. – entpnerd Jan 22 '16 at 05:00
  • @JonathanThoms i have not get response from the comment eventhough? – soorapadman Jan 22 '16 at 05:02
  • @JonathanThoms Hey Johnathan. I think something else is going on here. My PersonalInfoOutput.java servlet needs both doPost and doGet methods. It needs doPost for logging in and goGet from href in the html. – Programmer Jan 22 '16 at 05:20