回 帖 发 新 帖 刷新版面

主题:关于Servlet的问题

刚刚学习JSP,想使用MVC,Servlet作为控制器。在请求页面时使用action参数控制。如果action没有内容,则由控制器转向index.jsp页面。但是web.xml总配置不对,使用<url-pattern>/eShop/*</url-pattern>找不到Servlet,而改成如下语句,就可以使用Controller.do进行控制。除了<url-pattern>外,其他语句都是一样的。请问这是怎么回事啊?如果使用Controller.do可以控制的话,应该说明能够找到Servlet啊。
<servlet>
    <description>MVC example</description>
    <display-name>Controller</display-name>
    <servlet-name>Controller</servlet-name>
    <servlet-class>org.galaxy_OPEN.www.util.Controller</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Controller</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

回复列表 (共7个回复)

沙发

url-pattern应该是匹配串,当url-pattern为*.do的时候该servlet可以处理任何以.do结尾的如:xxx.do,xxx/xxx.do等;如果url-pattern为/eShop/*的时候,该servlet只处理如eShop/xxx,eShop/xxx/xxx等
如果想使用Controller.do,url-pattern:1可以为*.do,2可以为Conroller.*,3可以为*.*
如果你想是url-parttern为/eShop/*,那么这个action只能处理eShop/xxx(没有扩展名)

板凳

谢谢楼上的回答。但是我把代码改成了:<url-pattern>/eShop/*</url-pattern>,那么,按照楼上的说法,下面的URL:http://localhost:8080/eShop/ProductController?action=displayAll应该能够访问啊?但Tomcat给我的错误是:The reqyested resource(/eShop/ProductController) is not available.这是怎么回事啊?(名称无误!)

3 楼

不能啊,我能通过,http://localhost:8080/testWeb/eShop/s////s?fdfds=fdfdf这样的特例都能通过,你再仔细查一下

4 楼

你的上下文好象是eShop你访问的方式应该是http://localhost:8080/eShop/eShop/ProductController?action=displayAll

5 楼

谢谢楼上,我好像有点明白了。再查一下资料看看。再次感谢!

6 楼

正确是:http://localhost:8080/eShop/eShop/ProductController?action=displayAll

7 楼


你要用的是过滤器吧。。。呵呵,
<filter>
    <description>MVC example</description>
    <display-name>Controller</display-name>
    <filter-name>Controller</filter-name>
    <filter-class>org.galaxy_OPEN.www.util.Controller</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>Controller</filter-name>
    <url-pattern>*.do</url-pattern>
  </filter-mapping>

我来回复

您尚未登录,请登录后再回复。点此登录或注册