package cn.jiemoxiaodi.http;

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class MyHttpServlet extends GenericServlet { @Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// 如果我们确定请求的是用http协议,那么实际上ServletRequest 就是
// HttpServletRequest 所以进行强转 HttpServletRequest request = (HttpServletRequest) arg0; HttpServletResponse response = (HttpServletResponse) arg1; //当我们请求servlet的时候 ,如果他请求方式是get 那么他走一个doGet方法
//当我们请求servlet时候,如果他请求方式是post 那么他走一个doPost的方法 //获得 请求的 方式
String method= request.getMethod();
if(method.equalsIgnoreCase("get")){
doGet(request,response);
}else if(method.equalsIgnoreCase("post")){
doPost(request,response);
} } public void doPost(HttpServletRequest request, HttpServletResponse response) {
System.out.println("dopost");
} public void doGet(HttpServletRequest request, HttpServletResponse response) {
System.out.println("doget");
} }
package cn.jiemoxiaodi.http;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class DServlet extends MyHttpServlet { @Override
public void doPost(HttpServletRequest request, HttpServletResponse response) {
System.out.println("dopost----=--");
} @Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
System.out.println("doget----=--");
} }

1.关于Servlet的线程安全问题
        因为一个servlet的实例在服务器中只存在一份. ==> 当有多个请求访问时,servlet线程将不安全.

如何规避线程安全问题呢? ===>  我们接受线程的信息时,将信息保存在方法的变量中,不要使用成员变量保存.

2.关于servlet中路径配置问题

            <!--

路径配置分为两种情况

路径匹配

/DServlet   ==>  http://localhost:8080/Day10/DServlet

/ABC/DServlet  ==> http://localhost:8080/Day10/ABC/DServlet

/ABC/BCD/DServlet ==> http://localhost:8080/Day10/ABC/BCD/DServlet

/ABC/*  ==>  http://localhost:8080/Day10/ABC/asdlkajsdlkjalsd

/       ==> 匹配所有路径 http://localhost:8080/Day10/2139009123j/asd2klnasd

匹配优先级: 路径匹配中 ,匹配的范围越广,优先级越低.

后缀名匹配

*.do        ==>  http://localhost:8080/Day10/213oiajsdoijoad.do

*.action    ==>  http://localhost:8080/Day10/lnasdljasdlkasljdasd.action

*.abc        ==>   http://localhost:8080/Day10/1039i09ixc0kasd.abc

这种路径匹配在现在学习阶段接触不到. 在学到Filter 和struts2 的时候就用到了.

!!!!!!!注意: 以上两种匹配方式不能同时使用

例如下面是绝对错误的:

/DServlet/*.do  ==> 凡事路径配置中以"/"开头那么就说明含有路径匹配.这种时候再使用*.do 这种后缀名匹配绝对报错.

-->

3.(拓展)关于tomcat中web.xml的信息

        1> defaultServlet 配置的路径是 "/" ==>  所有跟我的路径匹配不上的路径都会走default.default主要干两件事  1.找静态资源  2.找不到静态资源报错.

2>session相关的配置 ==> 30  ==> 学session的时候就知道了

3>将所有MIME类型 都列举出来了.

4>welcome list file ==> 默认的欢迎资源.

4.我们知道servlet默认创建实例的时机是什么时候? ==> 第一次请求该servlet时创建. ==> 如果我们这个servlet创建需要的时间比较久.我们想让servlet随着服务器的启动而启动

那么我们可以这样做:

<servlet>

<servlet-name>AServlet</servlet-name>

<servlet-class>cn.itcast.servlet.AServlet</servlet-class>

<!-- 在启动服务器时加载的意思

配置了该配置,那么这个servlet就会在服务器启动时创建实例.

这个配置中填写的内容是整数 最小可以填0.

数字越小 启动优先级越高. 所以0 表示优先级最高.

如果两个数字大小相同,优先级按照配置顺序,谁先配置 谁先创建.

-->

<load-on-startup></load-on-startup>

</servlet>

Servlet 之 HttpServlet的更多相关文章

  1. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path解决方案

    0.环境: win7系统,Tomcat9配置无误. 1.错误: 项目中某一.jps页面忽然出现错误,鼠标点上去为:The superclass "javax.servlet.http.Htt ...

  2. The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path。问题

    JSP页面顶端出现“红色”的报错信息:The superclass "javax.servlet.http.HttpServlet" was not found on the Ja ...

  3. 错误:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    我们在利用Eclipse进行Java web开发时,可能会出现这样的错误:The superclass javax.servlet.http.HttpServlet was not found on ...

  4. eclipse中 报出The type javax.servlet.http.HttpServlet cannot be resolved. It is indirect错误

    在Myeclispe部署项目后 报错 The type javax.servlet.http.HttpServlet cannot be resolved. It is indirect错误 如果在M ...

  5. Servlet简介与Servlet和HttpServlet运行的流程

    1.Servlet      [1] Servlet简介         > Server + let         > 意为:运行在服务器端的小程序.         > Ser ...

  6. ubuntu下eclipse遇到The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    JSP页面顶端出现“红色”的报错信息:The superclass "javax.servlet.http.HttpServlet" was not found on the Ja ...

  7. 项目忽然出现 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决方法

    0.环境: 新装win8.1系统,Tomcat配置无误. 1.错误: 项目中某一.jps页面忽然出现错误,鼠标点上去为:The superclass "javax.servlet.http. ...

  8. JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    建立了一个Javaweb工程,并在eclipse中配置了Web容器Tomcat.新建的jsp页面,添加一个简单的Java类.可是,JSP页面顶端出现“红色”的报错信息:The superclass & ...

  9. eclipse中web工程新建jsp文件报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    web工程中新建jsp文件提示:The superclass "javax.servlet.http.HttpServlet" was not found on the Java ...

  10. java开发eclipse常见问题(一)The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    最近刚开始用Eclipse开发,刚开始都是按教程一步一步的新建web工程也没出现什么问题. 今天选了一个新的workspace,建了个web工程发现最简单的jsp页面都报错:The superclas ...

随机推荐

  1. ubuntu12.04 安装CS:APP Y86模拟器

    下的第一UBUNTU12.04下Y86模拟器的安装:(參考http://archive.cnblogs.com/a/1865627/ 作适当改动) 1.安装bison和flex词法分析工具 sudo ...

  2. 当泛型方法推断,扩展方法遇到泛型类型in/out时。。。

    说到泛型方法,这个是.net 2.0的时候引入的一个重要功能,c#2.0也对此作了非常好的支持,可以不需要显试的声明泛型类型,让编译器自动推断,例如: void F<T>(T value) ...

  3. 如何在Excel中通过VBA快速查找多列重复的值

    今天项目组的一个同事问我如何快速的找到一个Excel中第3列和第5列的值完全重复的值,我想了想虽然Excel中自带查找重复值的功能,但是好像只能对同一列进行比较,所以就写了一个VBA进行处理,VBA非 ...

  4. 51nod 简单的动态规划

    1006 最长公共子序列Lcs 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). ...

  5. Centos7安装Mono(以4.6.0)为例

    本文记录mono安装的必须步骤,由于只是一个记录因此操作系统及mono版本都以当前环境为准. 1:环境依赖 操作系统为CentOS7.0,先安装mono依赖的各种组件: yum -y install ...

  6. Cocos2d-X3.0 刨根问底(四)----- 内存管理源码分析

    本系列文章发表以来得到了很多朋友的关注,小鱼在这里谢谢大家对我的支持,我会继续努力的,最近更新慢了一点,因为我老婆流产了抽了很多时间来照顾她希望大家谅解,并在此预祝我老婆早日康复. 上一篇,我们完整的 ...

  7. bzoj4282慎二的随机数列

    海带头又上线了QwQ~ 这是一个奇怪的lis问题 显然一定存在一种最优答案使所有辨认不清的数都在答案中. [为什么呢]因为你完全可以用一个'N'来替换一个'K'啊QwQ~ 那么在选完所有'N'之后,一 ...

  8. bzoj 1537: [POI2005]Aut- The Bus 线段树

    bzoj 1537: [POI2005]Aut- The Bus 先把坐标离散化 设f[i][j]表示从(1,1)走到(i,j)的最优解 这样直接dp::: f[i][j] = max{f[i-1][ ...

  9. CommonJS,AMD,CMD区别

    学得比较晕,再次看commonjs,amd, cmd时好像还是没完全弄清楚,今天再整理一下: commonjs是用在服务器端的,同步的,如nodejs amd, cmd是用在浏览器端的,异步的,如re ...

  10. BZOJ4285: 使者

    搞出dfs序,转化为查询矩形点数,树套树搞定. #include<cstdio> #include<cstdlib> #define N 100005 #define IF e ...