2016-03-22 2 views
0

Я хочу создать простую веб-страницу с помощью сервлета. Это был один из моих экзаменационных вопросов, я практиковал на экзамене, но он не работал так, как они ожидают. Однако теперь я хочу уточнить свой вопрос. Мой вопрос: есть ли веб-страница, и она делится на 2 части. В нижней части он должен отображать текстовое поле и текстовую область для ввода комментариев. А также есть кнопка отправки. При нажатии кнопки кнопки, введенные комментарии должны отображаться в верхней части той же страницы. Для этого я создал вызов сервлета Welcome.java и разделил его на 2 части, используя iframes. Затем я создал вызов сервлета test.java и создаю текстовое поле и текстовое поле в этом сервлете. Затем создайте другой вызов сервлета text22.java, чтобы поймать комментарий и отобразить его. Но это не дает ожидаемого результата.
Прилагаю скриншот, как выглядит эта страница сейчас, я хочу отобразить комментарий в верхней части страницы. Пожалуйста, помогите мне решить эту problem.I действительно ценю вашу помощь ...Создание простой веб-страницы с использованием сервлета

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

Когда вы нажмете кнопку «Отправить», она появится в верхней части страницы, где теперь отображается как «нуль». Кстати, я новичок в сервлете и Jsp. Если вы поможете мне, я действительно благодарю – neil

ответ

0

Вам не нужно усложнять эту простую программу сервлетов. Для этого необходимо иметь один jsp и servlet.

Ваше требование: использование той же страницы, с которой вы хотите сначала отправить данные и просмотреть их.

Сначала создайте простую страницу jsp с textbox. Вы должны использовать JSTL вместо scriptlets, для простоты я дал вам код сценария.

Ваш 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> 

Создать соответствующий сервлет сказать 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 должен попасть в сервлет, передав введенный комментарий.

Сервлет должен обработать комментарий и вернуть комментарий в ответ. Возвращенный комментарий может быть добавлен в первую часть страницы, написав код javascript.

+0

Спасибо, я получил эту идею, но проблема в том, что я не могу использовать Javascript или любой другой, могу использовать сервлет, jsp – neil

+0

В этом случае вы можете иметь страницу index.jsp, отображающую форму с текстом поле, текстовую область и кнопку отправки во второй части. В первой части страницы вы можете перебирать список комментариев (полученный из сеанса), который вы обрабатываете в сервлете каждый раз при отправке формы. – kamal

+0

Я попробую это, спасибо ... – neil

Смежные вопросы