简单的servlet 问题:刚开始学Servlet,运行的时候老是说找不到Servlet类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的servlet 问题:刚开始学Servlet,运行的时候老是说找不到Servlet类相关的知识,希望对你有一定的参考价值。

就是一个简单的登陆,是在Eclipse里写的,有登陆界面index.jsp,Servlet类Hs.java,跳转到的页面if.jsp
index.jsp里主要是:
<form id="form1" name="form1" method="post" action="hua/servlet/Hs">
用户名:<input type="text" name="username" />
密码:<input type="password" name="password" />
<input type="submit" name="Submit" value="提交" />
</form>
Hs.java,是在servlet包里的,代码如下:
package servlet;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Hs extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
String name=request.getParameter("username");
String pass=request.getParameter("password");

if ("abc".equals(name)&&"123".equals(pass))
response.sendRedirect("if.jsp");

else response.sendRedirect("index.jsp");// TODO Auto-generated method stub


然后用if.jsp简单显示成功
Web.xml中
<servlet>
<description></description>
<display-name>Hs</display-name>
<servlet-name>Hs</servlet-name>
<servlet-class>servlet.Hs</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hs</servlet-name>
<url-pattern>/Hs</url-pattern>
</servlet-mapping>
最后Server.xml中加的是<Context path="/servlet" docBase="E:\eclipse\workspace\hua\WebContent" reloadable="true"/>
访问http://localhost:8080/servlet的时候,提交信息就说Servlet Hs is not avalible.

404错误--找不到你要跳转访问的页面!
应该是你在跳转时路径的url错误,建议url使用绝对路径!
参考技术A 404 肯定是路径访问不到的问题。
看看 配置文件的路径 和 页面中的路径 时候一致
参考技术B 首先,你应该访问的是index.jsp.其次,form的action属性错误,配置文件里是/Hs,所以你请求的时候应该是Hs 参考技术C 404应该是页面跳转错误吧
应该是xml文件错误
参考技术D 应该先访问index.jsp才对啊,访问/servlet是什么意思。

核心知识Servlet

一、 探究 servlet

在刚开始学习servlet 我觉得你起码要知道这几个问题,首先就是什么是 servlert,有什么用,还一个就是 servlet 到底有没有过时,这几个应该是你比较关心的问题,起码你能够用自己的话把这些问题给别人说明白,那就 ok 了

那么,什么是 servlet?

Servlet 本质上就是一个接口,那么接口是干嘛的,接口就是规范啊,所以 servlet 就是 java 定的一种规范,那么再详细点来说,servlet 就是 java 定义的一套用于处理网络请求的规范, 你查看 servlet 的源码会发现它有如下五个方法

  1. Init
  2. getServletConfig
  3. service
  4. getServletInfo
  5. destory

也就是说,你写的任何一个 servlet 都要实现这五个方法。我们说 servlet 是用来处理网络请求的,那么 servlet 可以直接处理吗?答案是不能的,这里需要一个 servlet 容器,也许有很多人对 servlet 的概念不了解,很简单,我们学习的 tomcat 就是一个 servlet 容器,容器是什么,就是盛装东西的啊,那么 servlet 容器就是装 servlet 的啊,我们的 servlet 是需要部署在tomcat 中的,不然,servlet 一个人什么也做不了。

我不知道,为什么现在好多人说 servlet 过时了,难道就是因为那些流行框架的出现吗?比如说 SpringMVC,可是他们的底层不都是 servlet

以上是关于简单的servlet 问题:刚开始学Servlet,运行的时候老是说找不到Servlet类的主要内容,如果未能解决你的问题,请参考以下文章

Myeclipse+AJAX+Servlet

实现一个Servlet程序

Spring配置文件02(${servletName}-servlet.xml)

Spring Boot 要怎么学?要学哪些东西?要不要先学 SSM?松哥说说看法

SpringBoot 的应用场景是什么?

核心知识Servlet