2015-04-04 2 views
0

в настоящее время читает Head First Servlet Jsp. В настоящее время я застрял в создании сервлета. Вероятно, это глупый вопрос, но как правильно настроить шаблон url сервлета? Я использую eclipse mars, и это мой первый раз с jsp/servlets. Я всегда проверяю генерировать веб-XML при создании динамических веб-проектаКак сопоставить сервлет java

Это то, что в web.xml по умолчанию

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
    id="WebApp_ID" version="3.1"> 
    <display-name>HeadFirst</display-name> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>index.htm</welcome-file> 
     <welcome-file>index.jsp</welcome-file> 
     <welcome-file>default.html</welcome-file> 
     <welcome-file>default.htm</welcome-file> 
     <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

Он работает с помощью этого

http://localhost:8080/HeadFirst/Ch2Servlet 

, но когда я добавляю это просто ниже отображаемого имени

<servlet> 
    <servlet-name>Ch2Servlet</servlet-name> 
    <servlet-class>com.test.hello</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Ch2Servlet</servlet-name> 
    <url-pattern>/HelloWorld</url-pattern> 
</servlet-mapping> 

это дает мне ошибку 404, и это адрес

http://localhost:8080/HeadFirst/servlet/com.test.hello.Ch2Servlet 

Вот мой сервлет класс

@WebServlet("/Ch2Servlet") 
public class Ch2Servlet extends HttpServlet { 
    private static final long serialVersionUID = 1L; 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     PrintWriter out = response.getWriter(); 
     java.util.Date today = new java.util.Date(); 
     out.println("<h1>Hello World</h1>" + "<br>"); 
     out.println("Date today is " + today + "<br>"); 
    } 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    } 
} 

кстати я прочитал это, но до сих пор путаюсь Java Servlet URL Mapping Servlet Mapping using web.xml редактировать добавил мой класс serlvet

+0

Я вижу, вы уже с помощью аннотаций, чтобы изменить URL просто изменить значение '@WebServlet ("/ Ch2Servlet") '. – Titus

+0

Я попытался изменить аннотацию и этот URL теперь работает @WebServlet («/ HelloWorld») HTTP: // локальный: 8080/Headfirst/HelloWorld так что аннотации делает шаблон URL бесполезными или устаревшим – Onedaynerd

+0

необходимо перезагрузить сервер после вы меняете отображение. Да, аннотация заменяет метод web.xml для изменения отображения. – Titus

ответ

3

URL-адрес не является:

http://localhost:8080/HeadFirst/servlet/com.test.hello.Ch2Servlet 

Это будет:

http://localhost:8080/HeadFirst/HelloWorld 

Более конкретно, это будет значение, которое вы установили в качестве <url-pattern>...</url-pattern>

+0

Я не вижу '/ servlet' в шаблоне URL для сервлета. –

+0

@LuiggiMendoza Вы правы, я пропустил это. – Titus

+0

Это генерируется eclipse, когда я нажимаю run как приложение – Onedaynerd

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