jsp中的请求servlet操作的跳转<a href = 地址与xml中servlet注册的url-pattern到底有什么要求?

来源:1-14 阶段案例

月之荣光

2016-07-07 15:20

在reg.jsp文件中是

<a href = "servlet/TheServlet">gotoServlet</a>

在配置文件中是

      <servlet>
        <servlet-name>TheServlet</servlet-name>
        <servlet-class>servlet.TheServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>TheServlet</servlet-name>
        <url-pattern>/servlet/TheServlet</url-pattern>

而在工程里面的位置也如视频内提示的一样

src--|

 |      servlet--|

 |                 TheServlet

WebRoot--|

 |               WEB-INF--|

 |                               web.xml

 |               reg.jsp

这样整个的流转流程是怎么样的,在1-4节中的说明中,似乎reg.jsp的超链接,获得的请求地址进入web.xml进行匹配判断,得到了对应的servlet,再由servlet定义的Class进行相应的doget()方法。所以1-4节好像在说明:reg.jsp的超链接无论指向何处都没关系,只需要与在web.xml注册的servlet的url-pattern匹配即可?

但在1-13节的讲解中,说明了这个reg.jsp的超链接是直接链接到了项目虚拟地址/servlet/TheServlet,而在web.xml注册的servlet的url-pattern,是指项目中的这个servlet的地址(这里存在问题,这个属于地址么?如果是地址,指示一个TheServlet的文件,那么不需要后缀么?),在修改了url-pattern之后,在启动项目都无法进行了,是否相当于url-pattern要绑定(或者说链接)一个servlet.java?如果这样那么还需要所谓的servlet-class来指示类文件么?

所有主要的问题就两个:1、Jsp文件中的这个get方式的请求的超链接,到底是要指向什么?是一个确实的文件?还是一个随意的地址,只要servlet能接收这个超链接请求并返回信息即可?

2、在web.xml配置注册的servlet的url-pattern属性到底是什么东西,为什么没有首/就会出现连服务都无法启动的情况,是因为它要确实指向一个确实存在的servlet实现类吗?还是一个为了和Jsp超链接请求相互匹配进行处理的匹配数据信息,只是因为在jsp中使用的时候有默认添加上下文地址之类的操作,才导致必须添加首/,而在jsp中不能添加首/?


我的问题可能有些乱,初学JSP,不理解servlet,希望能得到指导

写回答 关注

4回答

JAVA遇见HTML——Servlet篇

本门课程在JSP课程的基础上,深入介绍Servlet的基础知识

160615 学习 · 1029 问题

查看课程

相似问题