100分求救——怎么找不到我的servlet啊??????????
很简单的一个serlet调用,代码如下:
index.jsp页面中一个简单的表单:
<form name= "frm " method= "post " action= "servlet/com.zc.login.Login " onsubmit= "return check(); ">
<div align= "center "> 用户名:
<input name= "userName " type= "text " size= "12 ">
<br>
密码:
<input name= "userPwd " type= "password " size= "12 ">
<br>
<input type= "submit " name= "Submit " value= "确定 ">
<input type= "reset " name= "Submit2 " value= "重置 ">
</div>
</form>
Login.java代码:
package com.zc.login;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class Login extends HttpServlet{
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{
String userName=req.getParameter( "userName ");
String userPwd=req.getParameter( "userPwd ");
PrintWriter out=res.getWriter();
out.println( "姓名是: "+userName);
out.println( "密码是: "+userPwd);
}
}
web.xml就放在WEB-INF文件夹下,代码为:
<?xml version= "1.0 " encoding= "ISO-8859-1 "?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN "
"http://java.sun.com/dtd/web-app_2_3.dtd ">
<web-app id= '/ '>
<directory-servlet id= 'true '/>
<servlet-mapping>
<servlet-name> invoker </servlet-name>
<url-pattern> /servlet/* </url-pattern>
</servlet-mapping>
</web-app>
我用的是tomcat,已经配置好了我的虚拟目录,并且测试通过,在虚拟目录下建了文件夹WEB-INF
,里面再建了一个文件夹classes,其中放的是Login.java
在index.jsp表单中输入用户名和密码后,出现错误提示,说找不到servlet:
HTTP Status 404 - /my/servlet/com.zc.login.Login
--------------------------------------------
type Status report
message /my/servlet/com.zc.login.Login
description The requested resource (/my/servlet/com.zc.login.Login) is not available.
--------------------------------------------
Apache Tomcat/5.0.28
实在想不明白,请高手帮帮忙啊,谢谢啦,万分感谢!
[解决办法]
<web-app id= '/ '>
<directory-servlet id= 'true '/>
<servlet>
<servlet-name> invoker </servlet-name>
<servlet-class>
com.zc.login.Login <== 这里也要写上,再运行试试。
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> invoker </servlet-name>
<url-pattern> /servlet/* </url-pattern>
</servlet-mapping>
</web-app>
[解决办法]
你的web.xml就这些东东:
<?xml version= "1.0 " encoding= "ISO-8859-1 "?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN "
"http://java.sun.com/dtd/web-app_2_3.dtd ">
<web-app id= '/ '>
<directory-servlet id= 'true '/>
<servlet-mapping>
<servlet-name> invoker </servlet-name>
<url-pattern> /servlet/* </url-pattern>
</servlet-mapping>
</web-app>
好像少了 <Servlet> ... </Servlet>
[解决办法]
<servlet>
<description> This is the description of my J2EE component </description>
<display-name> This is the display name of my J2EE component </display-name>
<servlet-name> MyServlet </servlet-name>
<servlet-class> com.cts.servlet.MyServlet </servlet-class>
</servlet>
------------------------------------
<servlet-class> 标签里面就是指定具体哪个CLASS作为Servlet
[解决办法]
action= "servlet/com.zc.login.Login "
你找不到是正常的吧
我宁可是这么写
action= " <%=path%> /servlet/login "
其中的path是
String path = request.getContextPath();
WEB.XML这里面添加
<servlet>
<servlet-name> login </servlet-name>
<servlet-class> com.zc.login.Login </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> login </servlet-name>
<url-pattern> /servlet/login </url-pattern>
</servlet-mapping>
[解决办法]
"servlet/com.zc.login.Login "需要这么写吗?这接login.do 然后在servlet里进行配置
[解决办法]
action加上行对路径试试看。
[解决办法]
没servlet name怎么映射
[解决办法]
<?xml version= "1.0 " encoding= "utf-8 "?>
<web-app>
<servlet>
<servlet-name> Login </servlet-name>
<servlet-class> com.zc.login.Login </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> Login </servlet-name>
<url-pattern> servlet/com.zc.login.Login </url-pattern>
</servlet-mapping>
</web-app>
楼主把web.xml这么修改下试下
说明:
servlet-name: servlet名称
servlet-class:
CLASS位置 (package.class 例如package 是com CLASS名称是Login
那么就是com.Login 注意区分大小写)
url-pattern: 映射的URL路径
[解决办法]
应该是web.xml的配置错了,你按照楼上的 <servlet> 和 <servlet-mapping> 写全了,看看!
[解决办法]
我用的是tomcat,已经配置好了我的虚拟目录,并且测试通过,在虚拟目录下建了文件夹WEB-INF
,里面再建了一个文件夹classes,其中放的是Login.java
如果你是把Login.java放在classes下,那肯定找不到!
要编译啊!
[解决办法]
每个SERVLET都要配置一次的
没有什么简便的方法的
[解决办法]
你可以先写个控制器servlet,然后在web.xml中配置以将所有的/servlet/*的请求转发到相应的servlet,这样可实现只在web.xml中配一次即可访问所有的servlet.具体代码如下:
控制器servlet:
public class Dispatcher extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri=request.getRequestURI();
String[] ss=uri.split( "/ ");
String servletName=ss[ss.length-1];
servletName= "com.zc.servlet. "+servletName;
Class servlet;
try {
servlet = Class.forName(servletName);
Object obj=servlet.newInstance();
HttpServlet httpservlet=(HttpServlet)obj;
httpservlet.service(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
在web.xml中的配置:
<servlet>
<servlet-name> servletdispatcher </servlet-name>
<servlet-class> com.zc.servlet.Dispatcher </servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> servletdispatcher </servlet-name>
<url-pattern> /servlet/* </url-pattern>
</servlet-mapping>
这样你在浏览器中访问/servlet/Login的时候,控制器会自动转向com.zc.servlet.Login这个servlet并执行service方法
[解决办法]
action= "servlet/com.zc.login.Login 可以这样吗?