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.
