servlet路径都设置好了,可就是访问不到啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了servlet路径都设置好了,可就是访问不到啊相关的知识,希望对你有一定的参考价值。

Register.jsp
<form action="helpRegister" name= form >
web.xml
<servlet>
<servlet-name>register</servlet-name>
<servlet-class>myservlet.control.HandleRegister</servlet-class>

</servlet>
<servlet-mapping>
<servlet-name>register</servlet-name>
<url-pattern>/helpRegister</url-pattern>
</servlet-mapping>
所有jsp页面都放在office文件下,web.xml放在WEB-INF文件中,HandleRegister.class文件放在classes/myservlet/control文件中
我用的是MVC模式
各位大神指点啊。。。。
是的啊,而且我的所有东西都放在这个项目里的啊,我的金币布够追问了啊

xml改一下,<servlet-name>HandleRegister</servlet-name>,要这样写,上下两个<servlet-name>都改成这样,现在访问不到的原因是因为通过映射找不到你所写的<servlet-class>路径,所以要注意,xml中<servlet-name>一定要和你所创建的Servlet的类名一致追问

还是不行啊

追答

截个图看看

追问

追答

找不到指定的资源,你确定配置文件没有问题了,然后改完配置文件后重新发布项目和重启服务没有?

追问

重启了,重新发布了

追答

看一下你的浏览器地址栏上面的路径是不是http..项目名称/helpRegister

追问

没跳转之前:http://localhost:8080/office/Register.jsp

跳转之后:
http://localhost:8080/helpRegister?logname=&password=&sex=man&age=0&email=&phone=&message=&g=%E6%8F%90%E4%BA%A4

追答

我想问一下,你的项目名称去哪儿了?

追问

是的啊,我也很奇怪啊,但是我加上项目名称也不对啊

追答

office是不是你的项目名称?把项目名称加上了再访问jsp,再去提交表单

参考技术A 400、404、500报哪个错啊大婶追问

404报错

追答

如果报500错误,一般是程序写错了;
如果报404错误,访问地址有错;
如果报405错误,请检查service方法名、方法参数等

servlet中的相对路径和绝对路径

 

servlet中,所有路径的配置都要用绝对路径。

什么是绝对路径,就是以“/”开头的路径(开发中就这样理解)。

实际开发中,“/”所代表的含义不同,但主要分以下两种情况:

1.servlet内部配置路径

servlet内部的含义就是:在客户端看不到,全是在(应用)后台处理的部分(简单说,就是除了JSP以外的所有地方)。包含以下2点:

a. web.xml中servlet 配置的路径

<servlet>
  <servlet-name>helloWorld</servlet-name>
  <servlet-class>
   com.bill99.li.servlet.HelloWorldServlet
  </servlet-class>
 </servlet>

 <servlet-mapping>
  <servlet-name>helloWorld</servlet-name>
  <url-pattern>/test1/helloWorld</url-pattern>

 </servlet-mapping>

我们配置的这个“ /test1/helloWorld”,前面必须加“/” ---- 该“/”代表我们应用的名称。比如我们的应用名是“test”,那访问我们应有的地址就是: http:// 192.168.XX.XX:8080/test ,说白了就是代表项目的名称。

“ /test1/helloWorld”代表的路径就是http:// 192.168.XX.XX:8080/test/test1/helloWorld

b.forward转发的路径(注意:不包含redirect重定向

做完后台业务逻辑处理后,需要做页面的跳转,比如:

req.getRequestDispatcher("/pages/succ.jsp").forward(req, resp);

这时候跳转的页面"/pages/succ.jsp"也必须添加“/”,它代表的含义也一样,是我们应用的名称。

总结:

在应用内部,“/”代表的就是应用的名称!!!

2.页面配置的路径

页面是指什么 ------  肯定是指我们的JSP页面,而JSP页面是服务端解析的,对我们而言是下载到客户端,让浏览器解析为HTML展示出来的页面。

比如,我们的应用url是:http:// 192.168.XX.XX:8080/test

那站点的路径就是:http:// 192.168.XX.XX:8080/   --- 很明显 test 是应用名

客户端的浏览器而言,它认识的只有站点,也就是说,我们的jsp页面,“/”代表的是站点名。

所以在“/”后需要添加上我们应用的名称才能正确的访问到。(也容易理解,一个tomcat下可以部署多个应用,就相当于一个站点多个应用,怎么区别不同的应用呢,当然是不同应用名啦-----这个需要和上面的servlet内部配置路径区分理解一下啊,因为servlet本身就部署在服务端,在站点内部了,内部处理肯定知道它是站点下的哪个应用内,但对于外部而言,只知道一个站点IP。)

页面主要表现有以下3个地方:

a. form的action路径配置

页面举例:

<form action=" /test /test1/helloWorld" method="post">

解析:

应用名是test,/ 代表站点的url http:// 192.168.XX.XX:8080/,所以/test代表 http:// 192.168.XX.XX:8080/test

/test1/helloWorld代表servlet在web.xml中配置的访问路径,所有上面的action可以正确的访问。

但是在真正的应用中,我们经常这样写:

<form action="${pageContext.request.contextPath}/test1/helloWorld" method="post">

${pageContext.request.contextPath} 的效果就是"/应用名" ,这里等于 /test

一样的效果,不解释啦。

b. 页面资源引用

同样,只要是页面中引入的东西(常常需要引入CSS,JS,图片等),都要如此写,比如

<script type="text/javascript" src="${pageContext.request.contextPath}/pages/event/js/addevent.js"></script>

c. jsp/servlet的重定向 redirect

首先必须理解重定向的概念:重定向其实向服务器发送了2次请求,第一次把请求url告诉给服务器,服务器看到这个请求的状态码,马上明白该url是需要浏览器来重新去请求的url,于是呢把该url显示在浏览器的地址栏内,再次向服务器请求(第二次了吧),服务器响应,然后返回。

很明显,只要和页面打交道的,“/”都代表站点名,需要在后面添加应用名以区分是哪个应用的请求。所有。。。。不解释也明白了吧!

总结:

所有涉及前端页面的地方,“/”代表的是站点名,需要我们在“/”加上应用名以明确应用服务!!

=========================================================

基本上可以总结为两点:

a. servlet中所有访问路径都要用绝对路径“/”开头

b. 页面中“/”表示站点路径(在客户端展现出来,只知道它的站点路径,所有需要“/”后追加应用名来区分属于站点下的哪个应用),其他地方的“/”表示应用路径(在服务端的应用程序内调用,肯定是相对于应用的路径啦)

以上是关于servlet路径都设置好了,可就是访问不到啊的主要内容,如果未能解决你的问题,请参考以下文章

自建目录中jsp页面访问servlet路径出错404

servlet的路径跳转及路径问题

我在虚拟机里装了个ubuntu,可是就是找不到共享的文件,怎么办啊,我要用主机程序,这可怎么办啊

无线路由器明明都设置好了,为啥搜索不到无线网络?

帮我看看在Servlet里要访问js文件 路径要怎么设置

为啥在web.xml中配置过了类的路径,但在jsp页面访问时还是提示找不到呢