2016-03-22 151 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