2016-05-24 5 views
0

Когда я запустил свой проект Maven в Eclipse на index.jsp, он откроет его. Чем я пытаюсь открыть мой адрент-прокси/EnterAddress здесь, я получаю сообщение об ошибке.Запрошенный ресурс недоступен. Servlet to JSP

index.jsp:

<html> 
<body> 
<h2>Welcome</h2> 
<p> 
We are going to get started with some question. 
First we will need some information about you. 
</p> 
<a href="/EnterAddress">Start</a> 
</body> 
</html> 

AddressServlet:

package Servlet; 

import java.io.IOException; 

import javax.servlet.ServletException; 
import javax.servlet.annotation.WebInitParam; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.*; 

import Bean.SurveyBean; 
import Service.SurveyService; 
@WebServlet(value = "/EnterAddress", initParams = { 
      @WebInitParam(name = "addressPage", 
       value = "/WEB-INF/pages/Address.jsp"), 
      @WebInitParam(name = "QuestionURL", value = "Question") }) 
public class AddressServlet extends HttpServlet { 
    /** 
    * 
    */ 
    private static final long serialVersionUID = 1L; 

    @Override 
    public void init() throws ServletException{ 
     super.init(); 
     } 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     SurveyBean bean = new SurveyBean(); 
      HttpSession sess = req.getSession(); 
      sess.setAttribute("surveyBean", bean); 
      resp.sendRedirect("/pages/Address.jsp"); 
    } 

    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     HttpSession sess = req.getSession(); 
      SurveyBean bean = (SurveyBean) sess.getAttribute("surveyBean"); 
      bean.setName(req.getParameter("name")); 
      bean.setStreet(req.getParameter("street")); 
      bean.setNumber(req.getParameter("number")); 
      bean.setZipcode(req.getParameter("zipcode")); 
      bean.setCity(req.getParameter("city")); 
      bean.setEmail(req.getParameter("email")); 
      sess.setAttribute("surveyBean", bean); 
    } 





} 

web.xml:

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app> 
    <display-name>Archetype Created Web Application</display-name> 
</web-app> 

Address.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>Insert title here</title> 
</head> 
<body> 

<form method="POST"> 
Name: <input type="text" name="name"/> 
Street: <input type="text" name="street"/> 
Number: <input type="text" name="number"/> 
Zipcode: <input type="text" name="zipcode"/> 
email: <input type="text" name="email"/> 
<input type="submit" value="OK"/> 
</form> 

</body> 
</html> 

Image of stucture of jsp files

Я понятия не имею, почему я получаю сообщение об ошибке. Я не получаю ошибку на index.jsp. Но когда я нажмите кнопку Пуск на де JSP я получаю ошибку

Когда я делать то, что отредактированные BalusC Он по-прежнему не работает, у меня нет навязчивой, что я делаю неправильно или как я могу это исправить

+0

Пробовали ли вы с 'значение =«/pages/Address.jsp»)'? –

+0

Да, я уже пробовал, что –

+0

@BalusC, когда я делаю вещи по ссылке, которую вы разместили, я все еще не могу открыть myn/EnterAddress –

ответ

3

Первый, Вот несколько вещей, чтобы иметь в виду:
Любые файлы в JSP WEB-INF не могут быть доступны непосредственно набрав что-то вроде localhost:8080/WEB-INF/foo.jsp в браузере.
Сервлет может получить к ним доступ.

Вот то, что вам нужно сделать

  • Заменить web.xml DOCTYPE тег со следующим:

    <?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
        version="3.1"> 
    

    выше изменение гарантирует, что аннотация будет работать для вашего сервлета , Это не может быть прямой проблемой, потому что я не знаю, можете ли вы получить доступ к сервлету или нет, возврат 404 может быть вызван не обнаружением jsp.

  • Использование response.sendRedirect() такое же, как ввод URL-адреса jsp в браузере, который не получит ресурс, потому что ресурс находится под WEB-INF. Также путь WEB-INF даже не включен в ваш URL.
    Вам нужно будет направить СПЯ сервлет так:

    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/pages/Address.jsp"); 
    dispatcher.forward(request, response); 
    
+0

Я знаю, что вы не можете получить доступ к нему, просто набрав его, но его, когда я нажимаю ссылку, или когда я запускаю адрес jsp в своем затмении. Когда я заменяю web.xml, я не могу даже запустить свой index.jsp, чем когда я помещаю нормальную спину, я все еще могу ее запустить. –

+0

Добавление "/ WEB-INF/что-то /" до "myown.jsp" тоже работало для меня. –

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