Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
309 views
in Technique[技术] by (71.8m points)

java - Why should url-pattern in servlet mapping start with forward slash(/)

I was reading Head First JSP and Servlets book. I was going through the mapping of servlet. And my doubt here is

<servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>com.avinash.TestServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/ServletBeer.do</url-pattern>
</servlet-mapping>
  1. Why should the url-pattern start with forward slash(/)?
  2. What does the forward slash(/) represent? Does it represent our webapp name?
  3. What happens if the url-pattern do not start with forward slash(/)?
  4. Is it a specification to start with forward slash(/)?

And in the book it is clearly mentioned:

Don't forget the forward slash(/) in the url-pattern.

Can you explain?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

The / in the url-pattern means the root of the web application that uses this web.xml. So when you give /ServletBeer.do. That means http://<yourhost>:<port>/<your context Root>/ServletBeer.do. When ever you hit this url, the servlet you which have mapped with this i.e com.avinash.TestServlet will be invoked.

Its not mandatory that you have to use / in all your url mapping - that purely depends on how you want to configure it. / is just a regular expression. You can also use *.jsp in your url-pattern - which will actually invoke this servlet everytime you request any jsp in your web- application. Consider the section 12.2 Specification of Mappings ** from **JSR-000315 Java Servlet 3.0 Final Release

12.2 Specification of Mappings In the Web application deployment descriptor, the following syntax is used to define mappings:

■ A string beginning with a ‘/’ character and ending with a ‘/*’ suffix is used for path mapping.

■ A string beginning with a ‘*.’ prefix is used as an extension mapping.

■ The empty string ("") is a special URL pattern that exactly maps to the application's context root, i.e., requests of the form http://host:port/<contextroot>/. In this case the path info is ’/’ and the servlet path and context path is empty string (““).

■ A string containing only the ’/’ character indicates the "default" servlet of the application. In this case the servlet path is the request URI minus the context path and the path info is null.

■ All other strings are used for exact matches only


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...