2016-03-22 185 views
0

我想使用servlet創建一個簡單的網頁。這是我考試中的一個問題,我在考試時做了實際操作,但沒有像預期的那樣工作,但現在我想澄清我的問題。 我的問題是有一個網頁,它分爲2個部分。在底部它應該顯示一個文本框和一個文本區域來輸入註釋。還有一個提交按鈕。當提交按鈕點擊時,輸入的評論應顯示在同一頁面的頂部。 爲此,我創建了一個名爲Welcome.java的servlet,並使用iframe將它分爲兩​​部分。然後我創建了一個名爲test.java的servlet並在該servlet中創建了一個文本框和textarea。然後創建另一個servlet調用text22.java來捕獲註釋並顯示它們。但它沒有給出預期的輸出。
我附上了這個頁面現在的樣子的截圖,我想在頁面頂部顯示評論。請幫我解決這個疑難問題真的很感謝你的幫助......使用servlet創建簡單的網頁

Welcome.java

import java.io.IOException; 
    import java.io.PrintWriter; 
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 

    /** 
    * 
    * @author neil 
    */ 

public class Welcome extends HttpServlet { 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     try { 


      out.println("<iframe src='test22' name='if1' width='100%' height='400px'>"); 
      out.println("</iframe>"); 
      out.println("<iframe src='test' name='if1' width='100%' height='200px'>"); 
      out.println("</iframe>"); 


     } finally { 
      out.close(); 
     } 
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 


    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 


    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    }// </editor-fold> 
} 

test.java

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* 
* @author neil 
*/ 
public class test extends HttpServlet { 


    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     try { 

      out.println("User Name" + "<input type='text' name='username'/>" + "<br>" + "<br>"); 
      out.println("<textarea name='comment' rows='25' cols='20'>" + "Write your comment"); 
      out.println("</textarea>"); 
      out.println("<input type='submit' value='Submit'/>"); 




     } finally { 
      out.close(); 
     } 
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 


    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    }// </editor-fold> 
} 

test22.java

import java.io.IOException; 
import java.io.PrintWriter; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* 
* @author neil 
*/ 
public class A extends HttpServlet { 


    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     try { 
      ServletContext sc=request.getServletContext(); 
      String com= (String) sc.getAttribute("text"); 

      if(null==com){ 
       com = request.getParameter("comment"); 
      }else{ 
       com=com+"<br>"+request.getParameter("comment"); 
      } 


      out.println(com); 

      sc.setAttribute("comment", com); 

     } finally {    
      out.close(); 
     } 
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 


    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 


    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    }// </editor-fold> 
} 

Image

+0

當你點擊提交控件時,它是怎麼回事? –

+0

當點擊提交按鈕,它應該出現在頁面的頂部,它現在顯示爲空,順便說一下,我是新來的servlet和Jsp,如果你幫我我真的很感謝 – neil

回答

0

您不必將這個簡單的servlet程序複雜化。您需要有一個jspservlet來執行此操作。

您的需求是使用相同的頁面先提交數據並查看它。

首先用textbox創建簡單的jsp頁面。你應該使用JSTL而不是scriptlets,爲了簡單起見,我給了你scriptlet代碼。

index.jsp看起來是這樣的,

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!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>Submit and View Page</title> 
</head> 
<body> 
    <!-- This part will enable only after submit your username --> 
    <% 
     if(null != request.getParameter("username")){ 
     out.println("<fieldset><legend>Entered Name</legend>"); 
     out.println(request.getParameter("username")); 
     out.println("</fieldset>"); 
     } 
    %> 
    <!-- End of view data --> 
    <form action="HelloServlet"> 
     <label>User Name: </label><input type='text' name='username'/></br> 
     <input type='submit' value='Submit'/> 
    </form> 
</body> 
</html> 

創建相應的servlet說HelloServlet

package com; 

import java.io.IOException; 

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

public class HelloServlet extends HttpServlet { 

    private static final long serialVersionUID = 1L; 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 

     // Receive the username 
     String username = req.getParameter("username"); 

     // Set it into request object 
     req.setAttribute("username", username); 

     // Forward it into same index page 
     req.getRequestDispatcher("index.jsp").forward(req, resp); 
    } 
} 

配置部署描述符web.xml

<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 

    <display-name>Sample_Servlet</display-name> 

    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
     <servlet-name>HelloServlet</servlet-name> 
     <servlet-class>com.HelloServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>HelloServlet</servlet-name> 
     <url-pattern>/HelloServlet</url-pattern> 
    </servlet-mapping> 

</web-app> 

確保您的文件夾結構如下所示,還有你從教程開始學習。

Servlet Sample

+0

Thqnk你的幫助,但我不明白的是我在index.jsp中包含的內容。 – neil

+0

你的index.jsp是我的代碼的第一部分。 –

0

Ajax和JavaScript可以使用,無需刷新整個頁面來更新頁面內容。

甲開發該應用程序的方法是如下:

有隻需要一個網頁,其包含代碼來劃分頁分成2 parts.It應顯示的文本框,文本區域和第二按鈕部分。第一部分是div(用於顯示註釋)。此頁面還應包含用於點擊按鈕的代碼。點擊按鈕時,應啓動Ajax調用。這個ajax調用應該通過傳入輸入的註釋來擊中一個servlet。

servlet應該處理註釋並返回註釋作爲響應。通過編寫javascript代碼,可以將返回的註釋添加到頁面的第一部分。

+0

謝謝,我有這個想法,但問題是我不允許使用Javascript或任何其他,只能使用servlet,jsp – neil

+0

在這種情況下,你可以有一個index.jsp頁面顯示一個帶有文本的表單框,文本區域和第二部分中的提交按鈕。在頁面的第一部分中,您可以迭代每次在提交表單時在Servlet中處理的評論列表(從會話中獲取)。 – kamal

+0

我會盡力,謝謝... – neil