Я пришел в мозговой замок с этим в основном, после того, как пользователь нажимает кнопку «Отправить», он переходит на пустую страницу, даже не доходит до сервлета. Я положил System.out.println
, чтобы проверить, достигает ли он сервлета, но это не так. Вот web.xmlJava Servlet Blank Страница после кнопки Отправить
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>servlet03</servlet-name>
<servlet-class>servlets.Week01_03</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet03</servlet-name>
<url-pattern>/week01_03servlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Вот сервлет
package servlets;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Week01_03 extends HttpServlet
{
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
System.out.println("Hello");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String userString = request.getParameter("userString");
out.close();
char[] vowel = {'a', 'e', 'i', 'o', 'u'};
int[] count = {0, 0, 0, 0, 0};
for (int i = 0; i < userString.length(); i++)
{
switch (userString.charAt(i))
{
case 'a':
case 'A':
count[0]++;
break;
case 'e':
case 'E':
count[1]++;
break;
case 'i':
case 'I':
count[2]++;
break;
case 'o':
case 'O':
count[3]++;
break;
case 'u':
case 'U':
count[4]++;
break;
default:
break;
}
}
try
{
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Week01_03</title>");
out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"Week01_02.css\">");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet Week 01, Exercise 03</h1>");
out.println("<p class=\"inline\">You typed: '<pre class=\"inline\">" +
userString + "</pre>'</p>");
out.println("<h3>Vowel usage:</h3>");
out.println("<table>");
for (int i = 0; i < vowel.length; i++)
{
out.println("<tr" + (i%2==0 ? " class=\"shaded\"" : "") + ">" +
"<td>'" + vowel[i] +
"'</td><td>" + count[i] +
"</td></tr>");
}
out.println("</table>");
out.println("</body>");
out.println("</html>");
}
finally
{
out.close();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws javax.servlet.ServletException
* @throws java.io.IOException
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws javax.servlet.ServletException
* @throws java.io.IOException
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*/
public String getServletInfo()
{
return "Short description";
}// </editor-fold>
}
Вот HTML-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Week 01, Exercise 03</title>
<link rel="stylesheet" type="text/css" href="Week01_03.css">
</head>
<body>
<h1>Week 01, Exercise 03</h1>
<form action="week01_03servlet" method="post">
<p>Type some text in the box:
<input type="text" name="userString"></p>
<p>and then click the button,
and I'll tell you the frequency of vowel usage:
<input type="submit" value="Submit"></p>
</form>
</body>
</html>
спасибо за любые ответы.
В чем смысл 'out.close();'? – A4L
Какую ссылку вы использовали на странице html с формой? Вы попробовали прямую ссылку на ваш сервлет? –
Ну, я думал, что сделал ссылку на сервлет с формой «action =» week01_03servlet « – user3805878