有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

servlet和JSP之间的java链接第二次不起作用

我正在以MVC方式使用JDBC、JSP和servlet开发一个简单的CRUD应用程序。 在容器上运行代码后,在主页面中单击更新链接,它将被定向到一个JSP,在那里我们可以进行更改并遍历回主页面

问题1-在容器上运行代码后,如果我尝试更新同一字段中的数据或另一字段中的数据,则上述操作仅在第一次发生。更新按钮第二次不起作用

问题-2一旦我点击学生表中的更新链接,我将在点击保存“此页面上的按钮”后被重定向到更新页面,我应该被重定向回学生表的主页,但一旦完成此操作,更新的学生将被删除

如何解决这个问题

我已经附加了这个链接https://drive.google.com/file/d/0B7vBkqbv3cQUdnA3aFp3ZEpJSFk/view,人们可以在这里下载这个应用程序并在你的系统上运行它以防万一

问候 -希夫

StudentControllerServlet-Servlet

package WebJDBC;

import java.io.IOException;

import javax.annotation.Resource;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.*;
import java.sql.*;
import java.util.List;

@WebServlet("/StudentControlllerServlet")
public class StudentControlllerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @ Resource (name ="jdbc/web_student_tracker")
    private DataSource datasource;

    @Override
    public void init() throws ServletException {
        super.init();

        //Create a instance of the student DB util
        //pass the connection pool datasource
        try{
        StudentDButil dbobject = new StudentDButil(datasource);
        }
        catch(Exception exe)
        {
            throw new ServletException(exe);
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {

            String theCommand = request.getParameter("command");
            if(theCommand==null)
            {
                theCommand="LIST";
            }

            switch (theCommand)
            {
            case "LIST":
            listStudents(request,response);
            break;

            case "ADD":
                addStudents(request,response);
                break;

            case "LOAD":
                loadStudents(request,response);

            case "UPDATE":
                UpdateStudent(request,response);

            default:
                listStudents(request,response);
            }


        } catch (Exception e) {
            throw new ServletException(e);
        }

    }


private void UpdateStudent(HttpServletRequest request, HttpServletResponse response) throws Exception {

    int id = Integer.parseInt(request.getParameter("studentID"));
    String fname = request.getParameter("firstName");
    String lname = request.getParameter("lastName");
    String email = request.getParameter("email");

    Student updatedStudentdetails = new Student(id,fname,lname,email);

    StudentDButil.updateStudents(updatedStudentdetails);

    listStudents(request,response);

    }

//Used to create a pre-populated form for student upgrade
    private void loadStudents(HttpServletRequest request, HttpServletResponse response) throws Exception {


        //Read the student id from  the form data
    String studentID = request.getParameter("studentID");


        //get the student from the DB (dbutil)
        Student students = StudentDButil.getStudents(studentID);


        //place that student in the request attribute
        request.setAttribute("studentId", students);



        //Sending these stuff to the JSP page
        RequestDispatcher disp = request.getRequestDispatcher("update.jsp");
        disp.forward(request, response);
    }




    //Used to get the vaule from the form
    private void addStudents (HttpServletRequest request, HttpServletResponse response) throws Exception{


        //read the student info from the form
            String fname = request.getParameter("firstName");
            String lname = request.getParameter("lastName");
            String email = request.getParameter("email");


            //Create a new student object
            Student student = new Student(fname,lname,email);


            //add the student to the DB
            StudentDButil.addStudent(student);


            //send them back to the main list
            listStudents(request,response);
    }


    //Copying the student objects from the List in getStudents() to the students List ---- Forwarding the request to the View
    private void listStudents(HttpServletRequest request, HttpServletResponse response) throws Exception {


        // Get students from the DB util;

        List<Student> students = StudentDButil.getStudents();


        //Add students to the request object;
        request.setAttribute("List_Students", students );

        //Send it too the JSP

        RequestDispatcher dispatcher = request.getRequestDispatcher("/list_Student.jsp");
        dispatcher.forward(request, response);
    }




}

学生。java-Helper类

package WebJDBC;

public class Student {

    private int studentID;
    private String firstname;
    private String lastname;
    private String email;
    public Student(int id, String firstname, String lastname, String email) {
        super();
        this.studentID = id;
        this.firstname = firstname;
        this.lastname = lastname;
        this.email = email;
    }
    public Student(String firstname, String lastname, String email) {
        super();
        this.firstname = firstname;
        this.lastname = lastname;
        this.email = email;
    }

    public int getStudentID() {
        return studentID;
    }

    public void setStudentID(int studentID) {
        this.studentID = studentID;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String toString() {
        return "Student [studentID=" + studentID + ", firstname=" + firstname + ", lastname=" + lastname + ", email="
                + email + "]";
    }




}

StudentDButil-modelservlet

package WebJDBC;

import java.util.ArrayList;
import java.util.List;

import javax.sql.*;
import java.sql.*;

public class StudentDButil {

    private static DataSource datasource;

    public StudentDButil(DataSource thedatasource)
    {
        datasource = thedatasource;
    }

    public static List<Student> getStudents() throws Exception
    {
        List<Student> stud = new ArrayList<Student>();
        Connection myCon = null;
        Statement myStat = null;
        ResultSet myRs = null;



        try{
            // Get a connection
            myCon = datasource.getConnection();

            // SQL statement

            myStat = myCon.createStatement();

            // Executing the query
            myRs = myStat.executeQuery("select * from student order by last_name");

            //Process ResultSet
            while(myRs.next())
            {
                // retrieve data from the result set
                int id = myRs.getInt("id");
                String firstname = myRs.getString("first_name");
                String lastname = myRs.getString("last_name");
                String email = myRs.getString("email");

                //create new student object
                Student newStudent = new Student(id, firstname, lastname, email);

                //add it to the list of students
                stud.add(newStudent);
            }

            return stud;
        }

        finally{
            close(myCon,myStat, myRs);

        }

    }

    private static void close(Connection myCon, Statement myStat, ResultSet myRs) {
        try{
            if(myRs != null)
            {
                myRs.close();
            }
            if(myStat != null)
            {
                myStat.close();
            }
            if(myCon != null)
            {
                myRs.close();
            }
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }

    public static void addStudent(Student student) throws SQLException  {
        //Create sql for insert 
        Connection myCon = null;
        PreparedStatement myPStat = null;
        ResultSet myRs = null;


            try
            {
                //get Connection
                myCon = datasource.getConnection();

                //Creating SQL insert
                String sql = "insert into student"
                            + "(first_name, last_name, email)"
                            + "values(?,?,?) ";

                myPStat = myCon.prepareStatement(sql);

                //Get values from the paramas
                myPStat.setString(1, student.getFirstname());
                myPStat.setString(2, student.getLastname());
                myPStat.setString(3, student.getEmail());

                //Execute SQL
                myPStat.execute();
            }
            finally
            {
                close(myCon, myPStat, myRs);
            }
    }

    public static Student getStudents(String studentID) throws Exception {
        Student theStudent =null;
        Connection myCon = null;
        PreparedStatement myPStat = null;
        ResultSet myRs = null;
        int studid;

        //Convert Student ID to int
        studid = Integer.parseInt(studentID);
        //Get connection to the database
        try
        {
        myCon = datasource.getConnection();
        String Sql = "Select* from student where id=?";
        //Create prepared statement 
        myPStat = myCon.prepareStatement(Sql);
        //Get params
        myPStat.setInt(1, studid);
        //Execute
        myRs = myPStat.executeQuery();

        if(myRs.next())
        {
            String First_Name = myRs.getString("first_name");
            String Last_Name = myRs.getString("last_name");
            String Email = myRs.getString("email");

            theStudent = new Student(studid, First_Name, Last_Name, Email);
        }

        else
        {
            throw new Exception ("Couldn't find student ID:" + studid);
        }
        return theStudent;
        }
        finally
        {
        close(myCon, myPStat, myRs);
        }
    }

    public static void updateStudents(Student updatedStudentdetails)throws Exception {
        Connection myCon = null;
        PreparedStatement myPStat = null;
        ResultSet myRs = null;

        try {
            myCon = datasource.getConnection();

            String Sql = "Update student "
                        + "set first_name=? , last_name=?, email=? "
                        + "where id=?";

            myPStat = myCon.prepareStatement(Sql);

            myPStat.setString(1, updatedStudentdetails.getFirstname());
            myPStat.setString(2, updatedStudentdetails.getLastname());
            myPStat.setString(3, updatedStudentdetails.getEmail());
            myPStat.setInt(4, updatedStudentdetails.getStudentID());

            myPStat.execute();
        } 
        finally {
            close(myCon, myPStat, myRs);
        }

    }

    public static void DeleteStudent(String studentID) throws Exception {

        int studeid = Integer.parseInt(studentID);

        Connection myCon = null;
        PreparedStatement myPStat = null;
        ResultSet myRs = null;

        try {
            myCon = datasource.getConnection();

            String SQL = "DELETE FROM student WHERE id = ?";

            myPStat = myCon.prepareStatement(SQL);

            myPStat.setInt(1, studeid);

            myPStat.execute();
        } 
        finally
        {
            close(myCon, myPStat, myRs);
        }

    }   


    }

列出你的学生。jsp-查看页面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

    <%@ page import = "WebJDBC.*" %>

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!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>Student Data Table</title>



<link type= "text/css" rel="stylesheet" href="css/style.css">

</head>


<body>

<div id ="wrapper">

<div id ="header">
 <h1> <cite>  Foobar University </cite> </h1>


</div>

<div id="Container">

<div id ="content">

<br>
<input type="button" value="Add-Student" 
 onclick="window.location.href='add-student-form.jsp';return false;"
class="add-student-button"
/>

<table>
 <tr>
    <th> First name </th>
    <th> Last name </th>
    <th> Email </th>
    <th> Actions </th>
 </tr>


    <c:forEach var ="ts" items="${List_Students}">

    <c:url var="templink" value="StudentControlllerServlet">
        <c:param name="command" value="LOAD" />
        <c:param name="studentID" value="${ts.studentID}"/>
    </c:url>

    <c:url var="templink2" value="StudentControlllerServlet">
        <c:param name="command" value="DELETE" />
        <c:param name="studentID" value="${ts.studentID}"/>
    </c:url>

    <tr>
        <td> ${ts.firstname} </td>
        <td> ${ts.lastname} </td>
        <td> ${ts.email} </td>
        <td> <a href="${templink}"> UPDATE </a> | <a href="${templink2}" 
        onclick="if(!(confirm(''Are you sure you want to Delete this student'))) return false"> DELETE </a> </td>
    </tr>
    </c:forEach>
</table>

</div>

</div>
<div align="right">

  <h5> <i> <a href ="index.html"> Back to the starter page </a></i> </h5>


</div>
</div>

</body>
</html>

添加学生表格。添加学生的jsp代码

<html>

<head>
    <title>Add Student</title>

    <link type="text/css" rel="stylesheet" href="css/style.css">
    <link type="text/css" rel="stylesheet" href="css/add-student-style.css">    
</head>

<body>
    <div id="wrapper">
        <div id="header">
            <h2>FooBar University</h2>
        </div>
    </div>

    <div id="container">
        <h3 id="header"> Add Student </h3>

        <form action="StudentControlllerServlet" method="GET">

            <input type="hidden" name="command" value="ADD" />

            <table>
                <tbody>
                    <tr>
                        <td><label>First name:</label></td>
                        <td><input type="text" name="firstName" /></td>
                    </tr>

                    <tr>
                        <td><label>Last name:</label></td>
                        <td><input type="text" name="lastName" /></td>
                    </tr>

                    <tr>
                        <td><label>Email:</label></td>
                        <td><input type="text" name="email" /></td>
                    </tr>

                    <tr>

                        <td><label></label></td>
                        <td><input type="submit" value="Save" class="save" /></td>

                    </tr>

                </tbody>
            </table>
        </form>


        <div align="right">
        <p>
            <a href="StudentControlllerServlet" >Back to List </a>
        </p>
        </div>
    </div>
</body>

</html>

更新。jsp

<html>

<head>
    <title>Update Student</title>

    <link type="text/css" rel="stylesheet" href="css/style.css">
    <link type="text/css" rel="stylesheet" href="css/add-student-style.css">    
</head>

<body>
    <div id="wrapper">
        <div id="header">
            <h2>FooBar University</h2>
        </div>
    </div>

    <div id="container">
        <h3 id="header"> Update Student </h3>

        <form action="StudentControlllerServlet" method="GET">

            <input type="hidden" name="command" value="UPDATE" />
            <input type="hidden" name="studentID" value="${studentId.studentID}" />
            <table>
                <tbody>
                    <tr>
                        <td><label>First name:</label></td>
                        <td><input type="text" name="firstName" value="${studentId.firstname}" /></td>
                    </tr>

                    <tr>
                        <td><label>Last name:</label></td>
                        <td><input type="text" name="lastName" value="${studentId.lastname}" /></td>
                    </tr>

                    <tr>
                        <td><label>Email:</label></td>
                        <td><input type="text" name="email" value="${studentId.email}" /></td>
                    </tr>

                    <tr>

                        <td><label></label></td>
                        <td><input type="submit" value="update" class="save"  /></td>

                    </tr>

                </tbody>
            </table>
        </form>
        <div align="right">
        <p>
            <a href="StudentControlllerServlet" >Back to List </a>
        </p>
        </div>
        </div>
        </body>
        </html>

共 (0) 个答案