2013-11-02 150 views
0

我想從文本框中插入數據到oracle數據庫,所以在我的HTML中有文本框(和3個按鈕 - 新建,更新和保存),所以當我點擊三個按鈕中的任何一個時我redirectServlet,並從這個servlet我想再次轉發我的網頁insertServlet(即當我點擊NEW按鈕),但我得到404錯誤。可能是我的邏輯錯誤,或者wex.xml需要正確映射。任何人都可以幫忙請緊急。從servlet重定向到servlet

**wex.xml code** 
<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>AcerLink</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 

    <display-name>redirectServlet</display-name> 
    <servlet-name>redirectServlet</servlet-name> 
    <servlet-class>redirectServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>redirectServlet</servlet-name> 
    <url-pattern>/redirectServlet</url-pattern> 
    </servlet-mapping> 

    <servlet> 
    <description></description> 
    <display-name>insertServlet</display-name> 
    <servlet-name>insertServlet</servlet-name> 
    <servlet-class>insertServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>insertServlet</servlet-name> 
    <url-pattern>/insertServlet</url-pattern> 
    </servlet-mapping> 
</web-app> 

redirectServlet

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 

* Servlet implementation class redirectServlet 

*/ 

public class redirectServlet extends HttpServlet { 

    private static final long serialVersionUID = 1L; 


    /** 

    * @see HttpServlet#HttpServlet() 

    */ 

    public redirectServlet() { 

     super(); 

     // TODO Auto-generated constructor stub 

    } 


    /** 

    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 

    */ 

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

     // TODO Auto-generated method stub 


    } 

    /** 

    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 

    */ 

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

     // TODO Auto-generated method stub 

     if (request.getParameter("NEW") != null) { 


      response.sendRedirect("/insertServlet"); 


      return ; 



     } else if (request.getParameter("UPDATE") != null) { 

      request.getRequestDispatcher("/redirectServlet").forward(request, response); 




     } else if (request.getParameter("SAVE") != null) { 

      request.getRequestDispatcher("save.jsp").forward(request, response); 

     } 

    } 

} 

insertServlet

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.Statement; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class insertServlet 
*/ 
public class insertServlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public insertServlet() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
     PrintWriter out = response.getWriter(); 
     PrintWriter pwinsert = response.getWriter(); 
//  PrintWriter pwdelete = res.getWriter(); 

     Connection con = null; 
     PreparedStatement ps = null; 
     // ResultSet rs = null; 
     // Statement st = null; 

     String appl=request.getParameter("app"); 
     String sel=request.getParameter("second"); 
     String url= request.getParameter("link"); 

     try { 
      Class.forName("oracle.jdbc.OracleDriver"); 
     } 
     catch(ClassNotFoundException ex) { 
      System.out.println("driver not loaded"); 
      System.exit(0); 
     } 
     String URL = "jdbc:oracle:thin:SCOTT/[email protected]_1:1521:orcl"; 
     try { 
      con = DriverManager.getConnection(URL); 

      if(request.getParameter("choise")==null) { 
       ps = con.prepareStatement("INSERT into TEST_LINKS (ID,APPLICATION,ENTITY,URL) VALUES(TEST_LI.nextval,?,?,?)"); 
       ps.setString(1,appl); 
       ps.setString(2,sel); 
       ps.setString(3,url); 

       int i = ps.executeUpdate(); 
       pwinsert.println(i); 

       if(i!=0) { 
        pwinsert.println("Your data has been stored in the database"); 
       } 
       else { 
        pwinsert.println("Your data could not be stored in the database"); 
       } 
      } 
     } 
     catch(Exception e) { 
      pwinsert.println(e.getMessage()); 
     } 

    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 

} 
+2

採取了所有的東西無關,請。 –

回答

1

response.sendRedirect("/insertServlet");將重定向到ROOT應用。您應該添加您的上下文路徑"/ContextPath/insertServlet"或嘗試通過RequestDispacher訪問。

8

您可以使用

response.sendRedirect("/insertServlet"); 

ServletContext context= getServletContext(); 
RequestDispatcher rd= context.getRequestDispatcher("/insertServlet"); 
rd.forward(request, response); 
+0

這必須在try-catch塊中。 – getsadzeg

4

這裏是最好的解決方案,我想出來的:

response.sendRedirect(request.getContextPath() + "/servlet");