Сервлет загружается в виде файла, вместо представления HTML на tomcat - PullRequest
2 голосов
/ 06 февраля 2012

У меня большой опыт работы с сервлетами и tomcat, но сегодня я второй раз столкнулся с чем-то странным: после игры с логикой сервлета doGet, когда я получил доступ к сервлету, он начал загружать файл (вместо выполнения логики!).Это происходит во всех браузерах, и это также происходит, когда я развертываю веб-приложение на другой конфигурации tomcat (но все же на eclipse. Может, ошибка в плагине tomcat eclipse?)

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

Кто-нибудь знает эту ошибку?

РЕДАКТИРОВАТЬ: Вот примеры-

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

import db.StoreItems;
/**
 * Servlet implementation class Controller
 */
public class Controller extends HttpServlet {
    private static final long serialVersionUID = 1L;

    String supportMail ;
    int hitCounter =0;
    String counter ;
    StoreItems store;

    public Controller() {
        super();

    }

    @Override
    public void init() throws ServletException {

    supportMail = getInitParameter("email");
    store = new StoreItems();
    counter = getInitParameter("hitCounter");
    hitCounter = Integer.parseInt(counter);


}

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/plain");
        response.getWriter().write(hitCounter);
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

}

Web.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>OnlineStore</display-name>
<servlet>
    <description>
    </description>
    <display-name>Controller</display-name>
    <servlet-name>Controller</servlet-name>
    <servlet-class>Controller</servlet-class>
    <init-param>
        <description>
        </description>
        <param-name>email</param-name>
        <param-value>support@online.store</param-value>
    </init-param>
    <init-param>
        <param-name>hitCounter</param-name>
        <param-value>7</param-value>
    </init-param>
        </servlet>
<servlet>
    <description>
    </description>
    <display-name>LoginServlet</display-name>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Controller</servlet-name>
    <url-pattern>/Controller</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/Login</url-pattern>
</servlet-mapping>
<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>

Вариации: Tomcat 7, затмение индиго, Java 6, сервлет API 2.4.Я попытался изменить рабочее пространство затмения, но оно все равно не сработало.

Ответы [ 4 ]

3 голосов
/ 04 августа 2012

Установить ответ как text.html

response.setContentType("text/html");

Я уверен, что это решит проблему.

0 голосов
/ 24 февраля 2012

Что скачивается? Исходный код сервлета? Вы должны скомпилировать код в файл .class и поместить его в WEB-INF / classes. Eclipse должен делать это автоматически, если вы поместите свой Java-файл в папку с исходным кодом Java.

0 голосов
/ 25 февраля 2012

Кстати, если вы возвращаете онлайн-текст, и это именно то, что ваш сервлет делает с типом контента text / plain, вам лучше использовать, например, jquery ajax, чтобы проанализировать текстовый результат и отобразить его в html или jsp, из которого запрос выдано.

Если вы используете тип содержимого text / html, вы должны увидеть результат, но затем, по крайней мере, обернуть его в минимальные html-теги вашего значения в вашем сервлете.

С уважением s

0 голосов
/ 24 февраля 2012
response.getWriter().write(hitCounter).flush();

должен показать вам результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...