powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
9 сообщений из 9, страница 1 из 1
Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
    #39088198
Barry Foo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Apache Tomcat/7.0.52

Имеется вот такой web.xml:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" 
    "http://java.sun.com/j2ee/dtds/web-app_2.2.dtd"> 

<web-app> 
  <servlet> 

    <servlet-name>ptr2login</servlet-name>
    <servlet-class>LoginServlet</servlet-class>


    <servlet-name>ptr2welcome</servlet-name>
    <servlet-class>ShowMainPageServlet</servlet-class>

  </servlet> 

  <servlet-mapping>

    <servlet-name>ptr2login</servlet-name>
    <url-pattern>/login_page</url-pattern>

    <servlet-name>ptr2welcome</servlet-name>
    <url-pattern>/welcome_page</url-pattern>

  </servlet-mapping>

  <!-- 2run:  
     
      http://localhost:8080/ch04/welcome_page
      http://localhost:8080/ch04/login_page
  -->

</web-app>


И вот такие два сервлета:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 
import java.util.*; 

public class LoginServlet extends HttpServlet {

  private void sendLoginForm(HttpServletResponse response, 
    boolean withErrorMessage) 
    throws ServletException, IOException {
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter();

    out.println("<html>"); 
    out.println("<body>"); 
    if (withErrorMessage) 
      out.println("login failed. please try again.<br>"); 
    out.println("<br>"); 
    out.println("<br>please enter your user name and password.");

    out.println("<br><form method=post>");
    
    out.println("<br>user name: <input type=text name=username>"); 
    out.println("<br>password: <input type=password name=password>"); 
    out.println("<br><input type=submit value=submit>"); 
    out.println("</form>"); 
    out.println("</body>"); 
    out.println("</html>"); 

  } 
  public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException {

    System.out.println(this.getClass().getName()+" doGet() : "+System.currentTimeMillis());

    sendLoginForm(response, false); 
  } 

  public void doPost(HttpServletRequest request, 
    HttpServletResponse response) 
    throws ServletException, IOException {
    String userName = request.getParameter("userName"); 
    String password = request.getParameter("password"); 

    System.out.println(this.getClass().getName()+" doPost() : "+System.currentTimeMillis());

    if (userName!=null && password!=null && 
      userName.equals("john") && password.equals("123")) {
      //response.sendRedirect("http://www.sql.ru"); 
      response.sendRedirect("welcome_page"); // http://localhost:8080/ch04/welcome_page
    } 
    else {
      sendLoginForm(response, true); 
    } 
  } 
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.io.*; 

public class ShowMainPageServlet extends HttpServlet {

  public void doGet(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException, IOException {

    System.out.println(this.getClass().getName()+" doGet() : " + System.currentTimeMillis());
    showPage(response);
  } 

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

    System.out.println(this.getClass().getName()+" doPost() : "+System.currentTimeMillis());
    showPage(response);
  } 


  private void showPage( HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 
    out.println("<html>"); 
    out.println("<body>"); 
    out.println("<P>Welcome to the Main Page.</P>"); 
    out.println("</body>"); 
    out.println("</html>"); 
  }

}



При вводе в браузере: http://localhost:8080/ch04/login_page - вместо формы с логином+паролём сразу отображается "Welcome to the Main Page", а в консоли томката лезет "ShowMainPageServlet doGet() : ...." - без вывода чего-либо из login_page.

Что-то я делаю не так. Пните в нужном напр, плз: как заставить это хоз-во работать ?
...
Рейтинг: 0 / 0
Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
    #39088207
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перепроверьте актуальный web.xml
...
Рейтинг: 0 / 0
Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
    #39088221
Barry Foo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

пардон, не понял: что значит "актуальный" ? я как его скопировал сюда, так и не менял больше.
...
Рейтинг: 0 / 0
Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
    #39088229
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barry Fooпардон, не понял: что значит "актуальный" ? я как его скопировал сюда, так и не менял больше.
Ну, мы же не знаем откуда именно скопировал. По коду, вроде, всё ОК, либо я совсем не внимательный. Попробуйте посмотреть логи, возможно там будет более детальная инфа почему /login_page вдруг попадает на ShowMainPageServlet.
...
Рейтинг: 0 / 0
Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
    #39088273
Barry Foo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
[quot Blazkowicz][quot Barry Foo]пардон, не понял: что значит "актуальный" ? я как его скопировал сюда, так и не менял больше.[/quot]
Ну, мы же не знаем откуда именно скопировал. По коду, вроде, всё ОК, либо я совсем не внимательный. Попробуйте посмотреть логи, возможно там будет более детальная инфа почему /login_page вдруг попадает на ShowMainPageServlet.[/quot]

На консоли томката при его загрузке появляется вот это:[spoiler][SRC java]27.10.2015 16:44:10 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
27.10.2015 16:44:10 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
27.10.2015 16:44:10 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 6871 ms
27.10.2015 16:44:10 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
27.10.2015 16:44:10 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.52
27.10.2015 16:44:10 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\ch04
27.10.2015 16:44:11 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\docs
27.10.2015 16:44:11 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\examples
27.10.2015 16:44:11 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\host-manager
27.10.2015 16:44:11 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\manager
27.10.2015 16:44:12 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\ROOT
27.10.2015 16:44:12 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
27.10.2015 16:44:12 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
27.10.2015 16:44:12 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1295 ms

А когда я ввожу в браузере адрес http://localhost:8080/ch04/login_page, то выводится (в консоль) еще и вот:
Код: java
1.
ShowMainPageServlet doGet() : 1445953463048

только это).

Лог "catalina.2015-10-27.log":
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
27.10.2015 16:44:10 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
27.10.2015 16:44:10 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
27.10.2015 16:44:10 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 6871 ms
27.10.2015 16:44:10 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
27.10.2015 16:44:10 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.52
27.10.2015 16:44:10 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\ch04
27.10.2015 16:44:11 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\docs
27.10.2015 16:44:11 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\examples
27.10.2015 16:44:11 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\host-manager
27.10.2015 16:44:11 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\manager
27.10.2015 16:44:12 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory D:\JAVA\tomcat\webapps\ROOT
27.10.2015 16:44:12 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
27.10.2015 16:44:12 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
27.10.2015 16:44:12 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1295 ms
27.10.2015 16:46:42 org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-bio-8080"]
27.10.2015 16:46:42 org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["ajp-bio-8009"]
27.10.2015 16:46:42 org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Catalina
27.10.2015 16:46:43 org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-bio-8080"]
27.10.2015 16:46:43 org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["ajp-bio-8009"]
27.10.2015 16:46:43 org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-bio-8080"]
27.10.2015 16:46:43 org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["ajp-bio-8009"]


Еще один лог, "localhost.2015-10-27.log", уже с ошибкой NoClassDefFoundError javax/websocket/Endpoint:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
javax/websocket/Endpoint:27.10.2015 16:44:11 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
27.10.2015 16:44:11 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
27.10.2015 16:44:11 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@200db9')
27.10.2015 16:46:42 org.apache.catalina.core.StandardContext listenerStop
SEVERE: Exception sending context destroyed event to listener instance of class websocket.drawboard.DrawboardContextListener
java.lang.NoClassDefFoundError: javax/websocket/Endpoint
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
	at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2944)
	at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1208)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1688)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
	at websocket.drawboard.DrawboardContextListener.contextDestroyed(DrawboardContextListener.java:32)
	at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5014)
	at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5659)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1575)
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1564)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: javax.websocket.Endpoint
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
	... 19 more
27.10.2015 16:46:42 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextDestroyed()
27.10.2015 16:46:42 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextDestroyed()



наконец, третий лог, файл localhost_access_log.2015-10-27.txt:
Код: java
1.
127.0.0.1 - - [27/Oct/2015:16:44:23 +0300] "GET /ch04/login_page HTTP/1.1" 200 68



По "NoClassDefFoundError: javax/websocket/Endpoint" я гуглил и понял так, что надо убедиться, что в catalina.properties указаны jar'ы, относящиеся к вебсокетам, которые НЕ должны сканироваться на аннотации. Они у меня так и указаны (см тж аттач):
Код: java
1.
2.
3.
tomcat.util.scan.DefaultJarScanner.jarsToSkip=\
tomcat7-websocket.jar,websocket-api.jar,\
...
...
Рейтинг: 0 / 0
Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
    #39088280
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приаттачьте что ли D:\JAVA\tomcat\webapps\ch04 целиком.
...
Рейтинг: 0 / 0
Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
    #39088281
Barry Foo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

вот, прилепил.
...
Рейтинг: 0 / 0
Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
    #39088331
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barry Foo,

Отличная задачка на поломать голову. Косяк тут:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<servlet> 

    <servlet-name>ptr2login</servlet-name>
    <servlet-class>LoginServlet</servlet-class>


    <servlet-name>ptr2welcome</servlet-name>
    <servlet-class>ShowMainPageServlet</servlet-class>

</servlet> 


У вас объявлен 1 сервлет, а не два. Tomcat хитрым образом взял имя одного, а класс другого.
Должно быть так:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<servlet> 
    <servlet-name>ptr2login</servlet-name>
    <servlet-class>LoginServlet</servlet-class>
</servlet> 

<servlet> 
    <servlet-name>ptr2welcome</servlet-name>
    <servlet-class>ShowMainPageServlet</servlet-class>
</servlet> 



Аналогичная лажа и в servlet-mapping.

Изучайте лучше Servlet 3.х где маппить можно аннотациями без web.xml. Оно проще и понятнее.
...
Рейтинг: 0 / 0
Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
    #39088341
Barry Foo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

ох-х... а ведь на ровном месте, действительно :-)

Большое спс!
ЗЫ. Про аннотации знаю, просто с нуля решил всё выучивать.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat и два сервлета, login + welcome: в браузере лезет сразу welcome
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]