Servlet 之 HttpServlet
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的更多相关文章
- 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 ...
- 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 ...
- 错误: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 ...
- 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 ...
- Servlet简介与Servlet和HttpServlet运行的流程
1.Servlet [1] Servlet简介 > Server + let > 意为:运行在服务器端的小程序. > Ser ...
- 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 ...
- 项目忽然出现 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. ...
- JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
建立了一个Javaweb工程,并在eclipse中配置了Web容器Tomcat.新建的jsp页面,添加一个简单的Java类.可是,JSP页面顶端出现“红色”的报错信息:The superclass & ...
- 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 ...
- java开发eclipse常见问题(一)The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
最近刚开始用Eclipse开发,刚开始都是按教程一步一步的新建web工程也没出现什么问题. 今天选了一个新的workspace,建了个web工程发现最简单的jsp页面都报错:The superclas ...
随机推荐
- JQuery中each()的使用方法说明
JQuery中each()的使用方法说明 对于jQuery对象,只是把each方法简单的进行了委托:把jQuery对象作为第一个参数传递给jQuery的each方法.换句话说:jQuery提供的eac ...
- 聊聊 Web 项目二维码生成的最佳姿势
在设计和实现的过程之后,你永远不知道部署上去的程序会已什么样的姿势运行. 本篇借一次生成二维码逻辑的不同实现,阐述 Web 项目中二维码生成的正确姿势. 文中如有批量,欢迎各位看客老爷拍砖.试运行前5 ...
- 利用Highcharts插件制作动态图表
向大家推荐一款js插件,用于绘制图表Highcharts,具体操作可参考官方网站:http://www.hcharts.cn/ 1.如下为本人制作的图形效果如下,当然其效果远不止这些,大家还可以深入研 ...
- linux基础知识与技能3
3.2.vi的高级使用* 查找在命令模式下,输入/xxx,就可以查找到xxx * 快速切换行在命令模式下,输入:num,就可以快速切换到num行 * 设置显示行号在命令模式下,输入:set nu,就可 ...
- MongoDB学习笔记一
操作系统:Windows7 1.下载MongoDB 2.6.5服务端,并安装 网址:http://pan.baidu.com/s/1dDfoJAh 说明:网上很多都不需要安装的,这个需要安装. 2.添 ...
- Java static 静态代码块执行分析
假设有这样一个类: public class Utils { static { Log.i("static","isLoad!"); } public stat ...
- ASP.NET Identity 简介
翻译自:http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity ,略有改动. 背景:A ...
- .dwg(sw)-exb
尺寸风格:除了标准外合并,合并好后删除. 文本风格:除了标准外合并,合并好后删除.
- a版本冲刺第七天
队名:Aruba 队员: 黄辉昌 李陈辉 林炳锋 鄢继仁 张秀锋 章 鼎 学号 昨天完成的任务 今天做的任务 明天要做的任务 困难点 体会 408 学习活动的消息传递和日志分析 因为大家都在赶进 ...
- Ubuntu操作系统相关
1.安装 三种网络类型 修改密码 重启unbuntu系统,出现starting启动界面后,长按shift键. 出现如下引导界面: (注意:这里保持默认的选项就行,即白色横条选择在*Ubuntu上,不要 ...