Я работаю над проектом для школы и полностью разочарован.Проект состоит в том, чтобы получить простую демонстрацию JSP / Servlet, работающую на наших личных веб-сайтах, и, возможно, после 20 с лишним часов работы мне все еще не удается это сделать.Действительно разочаровывающая вещь, которую мне дали весь код, и до сих пор не могу заставить это работать.Ну, это не совсем так.Я получил его для работы на моем локальном сервере Tomcat, но я не могу воспроизвести эту магию на моем личном веб-сайте.Итак, вот что у меня есть.
Сначала код.Это назначение состоит из двух классов для сервлетов и двух jsps и файла web.xml.
Вот первый сервлет с именем ControllerServlet.java
package test;
// Import the servlet classes
import javax.servlet.*;
import javax.servlet.http.*;
// Import the standard Java classes
import java.io.*;
import java.util.*;
/**
* Controller Servlet
*/
public class ControllerServlet extends HttpServlet
{
private static String HELLO_JSP = "hello.jsp";
private static String GOODBYE_JSP = "goodbye.jsp";
private static String OTHER_JSP = "main.jsp";
public void init() throws ServletException
{
// Typically initialize your request to page mappings here
}
public void service( HttpServletRequest req, HttpServletResponse res ) throws ServletException
{
try
{
// Get the path - this is our key to our Request map
String pathInfo = req.getPathInfo();
// Find out what the user is requesting
String jsp = null;
if( pathInfo.equalsIgnoreCase( "/hello" ) )
{
String name = req.getParameter( "name" );
PersonBean person = new PersonBean( name );
HttpSession session = req.getSession();
session.setAttribute( "person", person );
jsp = HELLO_JSP;
}
else if( pathInfo.equalsIgnoreCase( "/goodbye" ) )
{
HttpSession session = req.getSession();
PersonBean person = ( PersonBean )session.getAttribute( "person" );
req.setAttribute( "person", person );
session.removeAttribute( "person" );
jsp = GOODBYE_JSP;
}
else
{
jsp = OTHER_JSP;
}
// Foward the request to the jsp
RequestDispatcher dispatcher = req.getRequestDispatcher( "/" + jsp );
dispatcher.forward( req, res );
}
catch( IOException ioe )
{
throw new ServletException( ioe );
}
}
}
Теперь PersonBean.java:
package test;
public class PersonBean implements java.io.Serializable
{
private String name;
public PersonBean()
{
}
public PersonBean( String name )
{
this.name = name;
}
public String getName()
{
return this.name;
}
public void setName( String name )
{
this.name = name;
}
}
Теперь hello.jsp:
<jsp:useBean id="person" class="test.PersonBean" scope="session" />
<HTML>
<HEAD>
<TITLE>Hello, <jsp:getProperty name="person" property="name" /></TITLE>
</HEAD>
<BODY>
<P>Hello, <jsp:getProperty name="person" property="name" /></P>
<A HREF="goodbye">Goodbye</A>
</BODY>
</HTML>
И goodbye.jsp
<jsp:useBean id="person" class="test.PersonBean" scope="session" />
<HTML>
<HEAD>
<TITLE>Good bye, <jsp:getProperty name="person" property="name" /></TITLE>
</HEAD>
<BODY>
<P>Good bye, <jsp:getProperty name="person" property="name" /></P>
</BODY>
</HTML>
Наконец, мой веб-XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>deploy</display-name>
<servlet>
<description>
</description>
<display-name>ControllerServlet</display-name>
<servlet-name>ControllerServlet</servlet-name>
<servlet-class>test.ControllerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControllerServlet</servlet-name>
<url-pattern>/testing/*</url-pattern>
</servlet-mapping>
</web-app>
В файловом менеджере моего веб-сервера есть папка WEB-INF в разделе public_html, поэтомув эту папку я поместил два файла jsps и веб-XML.Под этим была уже существующая папка с именем classes, в которой я создал новую папку под названием test и в этой папке разместил два файла классов.Я думаю, что переход на mysite.com/testing/hello?name=Bradley приведет к правильной ситуации, но, к сожалению, я получаю ошибку 404, в которой говорится, что URL-адрес / hello не найден.
Есть ли у кого-нибудь предложения относительно того, почему, и не может этого добиться?