On Sat, Apr 17, 2010 at 8:43 AM, bosun <[email protected]> wrote:
Is there a order requirement in <servlet/> element? Or should only one
servlet defined in this section?  Anyone know how does invocation make on
servlets in section of <servlet/> and <servlet-mapping/> in web.xml ?   Does
invocation go through chains of servlet?

It's because of incorrect <servlet> and <servlet-mapping> declaration in
your old web.xml.
Should use each <servlet> to define 1 servlet only (no limit on numer of
servlet)
The link in web.xml file reference to those syntax
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
or you can just google "web.xml" for easier explanation.

On Sat, Apr 17, 2010 at 8:43 AM, bosun <[email protected]> wrote:

> From my observation, <form action="/sign" method="post"> in guestbook.jsp
> is expected to trigger doPost method in SignGuestBookServlet but instead, it
> invoks doGet method in GuestbookServlet as it's the first servlet defined in
> web.xml.  Thus, it causes the error message like HTTP method POST is not
> supported by this URL.
>
> I have been working on this issue for hours and finally I made it worked
> but I have to delete the servlet guestbook from entries in <servlet/> and
> <servlet-mapping/> in web.xml.  But in tutorial, it didn't mention the
> deletion.  It also works if I moved up the servlet sign to the first entry.
>   I don't understand why it behaves like this.  It looks to me that doGet
> method in GuestbookServet other than doPost method in SignGuestbookServlet
> gets invoked immediately after a user clicks Post Greetings, which posts
> data in the form.  Is there a order requirement in <servlet/> element? Or
> should only one servlet defined in this section?  Anyone know how does
> invocation make on servlets in section of <servlet/> and <servlet-mapping/>
> in web.xml ?   Does invocation go through chains of servlet?
>
> After deletion, web.xml now looks like below:
> <?xml version="1.0" encoding="utf-8"?>
> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns="http://java.sun.com/xml/ns/javaee";
> xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"; version="2.5">
>  <servlet>
> <servlet-name>sign</servlet-name>
>  <servlet-class>guestbook.SignGuestbookServlet</servlet-class>
> </servlet>
>  <servlet-mapping>
> <servlet-name>sign</servlet-name>
>  <url-pattern>/sign</url-pattern>
> </servlet-mapping>
>  <welcome-file-list>
> <welcome-file>guestbook.jsp</welcome-file>
>  </welcome-file-list>
> </web-app>
>
> On Fri, Apr 16, 2010 at 12:42 PM, bosun <[email protected]> wrote:
>
>> Hi Chau,
>> I used the code in the tutorial with a slightly change.  Data is posted by
>> POST method in the form so SignGuestbookServlet should use doPost to handle
>> it.
>> Anothe thing I am confused is that I can't see log message in Eclipse
>> console if I added custom message like log.info or system.out.printlin
>> alough I givie guestbook.level = INFO in logging.properties.
>>
>> Code below is SignGuestbookServlet.java:
>> import com.google.appengine.api.users.UserService;
>> import com.google.appengine.api.users.UserServiceFactory;
>> public class SignGuestbookServlet {
>>     private static final Logger log =
>> Logger.getLogger(SignGuestbookServlet.class.getName());
>>
>>     public void doPost(HttpServletRequest req, HttpServletResponse resp)
>>                 throws IOException {
>>         UserService userService = UserServiceFactory.getUserService();
>>         User user = userService.getCurrentUser();
>>
>>         String content = req.getParameter("content");
>>         if (content == null) {
>>             content = "(No greeting)";
>>         }
>>         if (user != null) {
>>             log.info("Greeting posted by user " + user.getNickname() + ":
>> " + content);
>>         } else {
>>             log.info("Greeting posted anonymously: " + content);
>>         }
>>         resp.sendRedirect("/guestbook.jsp");
>>     }
>> }
>> Code below is guestbook.jsp:
>>
>> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
>> <%@ page import="com.google.appengine.api.users.User" %>
>> <%@ page import="com.google.appengine.api.users.UserService" %>
>> <%@ page import="com.google.appengine.api.users.UserServiceFactory" %>
>> <html>
>>   <body>
>> <%
>>     UserService userService = UserServiceFactory.getUserService();
>>     User user = userService.getCurrentUser();
>>     if (user != null) {
>> %>
>> <p>Hi, <%= user.getNickname() %>! (You can
>> <a href="<%= userService.createLogoutURL(request.getRequestURI()) %>">sign
>> out</a>.)</p>
>> <%
>>     } else {
>> %>
>> <p>Hello!
>> <a href="<%= userService.createLoginURL(request.getRequestURI()) %>">Sign
>> in</a>
>> to include your name with greetings you post.</p>
>> <%
>>     }
>> %>
>> Comment Board:
>> <form action="/sign" method="post">
>>     <div><textarea name="content" rows="3" cols="60"></textarea></div>
>>     <div><input type="submit" value="Post Greeting" /></div>
>> </form>
>>   </body>
>> </html>
>>
>> code below is GuestbookServlet.java:
>> package guestbook;
>> import java.io.IOException;
>> import javax.servlet.http.*;
>> import com.google.appengine.api.users.User;
>> import com.google.appengine.api.users.UserService;
>> import com.google.appengine.api.users.UserServiceFactory;
>>
>> @SuppressWarnings("serial")
>> public class GuestbookServlet extends HttpServlet {
>>  public void doGet(HttpServletRequest req, HttpServletResponse resp)
>> throws IOException {
>>   UserService userService = UserServiceFactory.getUserService();
>>         User user = userService.getCurrentUser();
>>         //log.info("user name is " + user.getNickname());
>>         if (user != null) {
>>             resp.setContentType("text/plain");
>>             resp.getWriter().println("Hello, " + user.getNickname());
>>         } else {
>>
>> resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
>>         }
>>   }
>> }
>>
>> On Fri, Apr 16, 2010 at 12:16 PM, Chau Huynh <[email protected]> wrote:
>>
>>> And next you'll need to post your servlet ;-)
>>>
>>> Just wonder if you code SignGuestbookServlet servlet yourself - in such
>>> a case, you might code doGet() while your JSP posts to the servlet? Error
>>> message from your post: "HTTP method POST is not supported by this URL"
>>>
>>>
>>> On Fri, Apr 16, 2010 at 10:59 PM, bosun <[email protected]> wrote:
>>>
>>>> Hi Rajeev,
>>>>
>>>> Thank you for helping me troubleshooting this issue.
>>>>
>>>> Below is web.xml
>>>>
>>>> <?xml version="1.0" encoding="utf-8"?>
>>>> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>> xmlns="http://java.sun.com/xml/ns/javaee";
>>>> xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
>>>> xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
>>>> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"; version="2.5">
>>>>  <servlet>
>>>>   <servlet-name>Guestbook</servlet-name>
>>>>   <servlet-class>guestbook.GuestbookServlet</servlet-class>
>>>>   <servlet-name>sign</servlet-name>
>>>>         <servlet-class>guestbook.SignGuestbookServlet</servlet-class>
>>>>  </servlet>
>>>>  <servlet-mapping>
>>>>   <servlet-name>Guestbook</servlet-name>
>>>>   <url-pattern>/guestbook</url-pattern>
>>>>         <servlet-name>sign</servlet-name>
>>>>         <url-pattern>/sign</url-pattern>
>>>>  </servlet-mapping>
>>>>  <welcome-file-list>
>>>>   <welcome-file>guestbook.jsp</welcome-file>
>>>>  </welcome-file-list>
>>>> </web-app>
>>>>
>>>> below is appengine-web.xml
>>>>
>>>> <?xml version="1.0" encoding="utf-8"?>
>>>> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0";>
>>>>  <application></application>
>>>>  <version>1</version>
>>>>
>>>>  <!-- Configure java.util.logging -->
>>>>  <system-properties>
>>>>   <property name="java.util.logging.config.file"
>>>> value="WEB-INF/logging.properties"/>
>>>>  </system-properties>
>>>>
>>>> </appengine-web-app>
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Apr 16, 2010 at 10:29 AM, Rajeev Dayal <[email protected]>wrote:
>>>>
>>>>> Can you post the contents of your web.xml file and your
>>>>> appengine-web.xml file?
>>>>>
>>>>>   On Thu, Apr 15, 2010 at 10:21 PM, bosun <[email protected]>wrote:
>>>>>
>>>>>>  I forgot mention in my post about the version of Eclipse I am using
>>>>>> is Galileo.  I downloaded Google plugin for this version.
>>>>>>
>>>>>> The link to the Tutorial where I am stuck on is:
>>>>>> http://code.google.com/intl/en/appengine/docs/java/gettingstarted/usingjsps.html
>>>>>>
>>>>>> In Eclipse console, all log messages after server restarted are like
>>>>>> below:
>>>>>>
>>>>>>  Apr 16, 2010 2:05:54 AM
>>>>>> com.google.apphosting.utils.config.AppEngineWebXmlReader 
>>>>>> readAppEngineWebXml
>>>>>> INFO: Successfully processed
>>>>>> C:\EclipseGalileo\workspace\Guestbook\war\WEB-INF/appengine-web.xml
>>>>>> Apr 16, 2010 2:05:54 AM
>>>>>> com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
>>>>>> INFO: Successfully processed
>>>>>> C:\EclipseGalileo\workspace\Guestbook\war\WEB-INF/web.xml
>>>>>> The server is running at http://localhost:8888/
>>>>>> Apr 16, 2010 2:07:08 AM
>>>>>> com.google.appengine.tools.development.LocalResourceFileServlet doGet
>>>>>>  WARNING: No file found for: /favicon.ico
>>>>>> Apr 16, 2010 2:07:25 AM
>>>>>> com.google.appengine.tools.development.LocalResourceFileServlet doGet
>>>>>>  WARNING: No file found for: /favicon.ico
>>>>>>
>>>>>> Please advise where it goes wrong.
>>>>>>
>>>>>> Thanks!
>>>>>>
>>>>>>
>>>>>> On Thu, Apr 15, 2010 at 9:57 PM, bobo <[email protected]> wrote:
>>>>>>
>>>>>>> Hi
>>>>>>>
>>>>>>> I run Google App Engine (Java) locally with Eclipse.  Following the
>>>>>>> tutorial of Getting Started - Java,  I lean it step by step and my
>>>>>>> local server works well until the section Using JSPs.  After adding
>>>>>>> SignGuestbookServlet.java and greeting form in guestbook.jsp as well
>>>>>>> as editing web.xml for servlet mapping for sign and /sign,  I
>>>>>>> restarted the server. My browser displayed error message immediately
>>>>>>> after I tried to post a greeting message:
>>>>>>>
>>>>>>> HTTP ERROR 405
>>>>>>> Problem accessing /sign. Reason:    HTTP method POST is not supported
>>>>>>> by this URL
>>>>>>>
>>>>>>> In Eclipse console,  the red error message like:
>>>>>>> Apr 16, 2010 1:34:31 AM
>>>>>>> com.google.appengine.tools.development.LocalResourceFileServlet doGet
>>>>>>> WARNING: No file found for: /favicon.ico
>>>>>>>
>>>>>>> I googled this error but seems no one having this problem before.  I
>>>>>>> am stuck on this point and anyone who can shed me a light?
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>>>
>>>>>>   --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Google App Engine for Java" group.
>>>>>> To post to this group, send email to
>>>>>> [email protected].
>>>>>> To unsubscribe from this group, send email to
>>>>>> [email protected]<google-appengine-java%[email protected]>
>>>>>> .
>>>>>> For more options, visit this group at
>>>>>> http://groups.google.com/group/google-appengine-java?hl=en.
>>>>>>
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Google App Engine for Java" group.
>>>>> To post to this group, send email to
>>>>> [email protected].
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected]<google-appengine-java%[email protected]>
>>>>> .
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/google-appengine-java?hl=en.
>>>>>
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Google App Engine for Java" group.
>>>> To post to this group, send email to
>>>> [email protected].
>>>> To unsubscribe from this group, send email to
>>>> [email protected]<google-appengine-java%[email protected]>
>>>> .
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/google-appengine-java?hl=en.
>>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Google App Engine for Java" group.
>>> To post to this group, send email to
>>> [email protected].
>>> To unsubscribe from this group, send email to
>>> [email protected]<google-appengine-java%[email protected]>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/google-appengine-java?hl=en.
>>>
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine for Java" group.
> To post to this group, send email to
> [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine-java%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to