2017-02-17 21 views
1

Необходимо создать приложение, не использующее аннотации, которые используются в> Java3 и с небольшим количеством проблем, начиная с. Похоже, что настройка в web.xml/view/controller логична и должна работать. Дает ошибку 404, если я использую аннотации, это не так. Полагаю, именно поэтому в задании говорится, что нельзя использовать аннотации! любые советы от старых таймеров по S.O?Java Web App НЕ использует аннотацию

P.S любой совет действительно поможет мне запустить это приложение, я читаю в Интернете, и решения, которые я прочитал, похоже, не работают. И большинство в конечном итоге предлагает использовать аннотации ... которые я не могу использовать!

welcome.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!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=UTF-8"> 
<title>Welcome Page</title> 
</head> 
<body> 

<h1>Welcome Page</h1> 

<br/> 

<form action="/OptionsForYou" name="options"> 

<select> 
    <option>---Select---</option> 
</select> 

<button type="submit" value="submit">Submit</button> 

</form> 

</body> 
</html> 

OptionsWork.java

package com.server; 

import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class OptionsWork 
*/ 

public class OptionsWork extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 
     String options = req.getParameter("options"); 
     System.out.println(options); 
    } 

} 

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>Options</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> 
    <servlet> 
     <servlet-name>OptionsWork</servlet-name> 
     <servlet-class>com.server.OptionsWork</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>OptionsWork</servlet-name> 
     <url-pattern>/OptionsForYou</url-pattern> 
    </servlet-mapping> 
</web-app> 
+0

Перепроверьте свои зависимости .. – Akshay

+0

попробуйте указать загрузку при запуске и что-то в Sysout в реализации, чтобы убедиться, что сервлет загружен или нет. Также просто мысль, вы должны указать метод запроса в

, чтобы правильный метод выполнялся на сервлет. –

ответ

0

Дело в том, что и если ваш webapp не развернут в контексте ROOT, вам нужно указать путь контекста в любой ссылке, включая атрибут формы action.

Допустим, ваше приложение развертывается как myApp (т.е. в Tomcat в $TOMCAT_ROOT/webapps/myApp папке), то ваш welcome.jsp имеет URL http://localhost:8080/myApp/welcome.jsp и OptionsWork сервлет «сидит» на http://localhost:8080/myApp/OptionsForYou URL. Но если вы укажете только /OptionsForYou в <form action="/OptionsForYou" name="options">, то вы вызываете http://localhost:8080/OptionsForYou, что, действительно, не существует, и вы получаете ошибку 404.

Итак, добавьте <%= request.getContextPath() %>перед тем/OptionsForYou включать путь контекста в действии, то есть ваш <form> тег должен выглядеть

<form action="<%= request.getContextPath() %>/OptionsForYou" name="options"> 

и он должен работать.

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

  • Нет связанных вопросов^_^