javaWeb

javaWeb是指使用java技术实现所有web程序的技术的总称。我们称之为javaWeb。

1、请求和响应(成对出现)

2、Web资源的分类

web资源分为两大类,分别是静态资源和动态资源。

静态资源指的是:html,Js,CSS,img图片,视频文件,txt文件等等。都是静态资源。

动态资源指的是:Servlet程序,jsp动态页面。

手动编写servlet实现

  • 实现servlet接口(javax.servlet.Servlet)

  • 重写service方法(service方法每次请求都会调用一次)
  • 在WebContent/WEB-INF/web.xml中配置servlet的访问路径 。浏览器访问servlet的路径

    web.xml(新建web工程的时候,eclipse自动创建出来的)的位置:

  • 把项目部署到tomcat中,去启动tomcat。在地址栏中输入信息,访问servlet

<servlet>元素是配置Servlet所用的元素。

<servlet-mapping>元素在Servlet和URL样式之间定义一个映射,即servlet类提供一个url,在地址栏输入对应的映射路径就可以访问你的servlet。

<servlet>
<!-- 给Servlet 配置一个名字 -->
<servlet-name>Hello</servlet-name>
<!-- servlet的全类名 -->
<servlet-class>com.lmx.servlet.Hello</servlet-class>
</servlet>
<!-- mapping映射设置 -->
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<!--url-pattern(访问路径) 是给 servlet 程序配置一个访问地址
/hello 表示 http://ip地址:端口号/工程名/配置的地址
实际地址:http://127.0.0.1:8080/day06/hello -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>

修改web.xml后必须重启服务器才会生效

Servlet的生命周期

1)构造 servlet,然后使用 init 方法将其初始化。

2)处理来自客户端的对 service 方法的所有调用。

3)从服务中取出 servlet,然后使用 destroy 方法销毁它,最后进行垃圾回收并终止它。

HTTP中Get与Post的区别

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!

模拟Get请求和Post请求的分发


public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException { // 将servletRequest对象强转成为 HttpServletRequest对象
HttpServletRequest httpRequest = (HttpServletRequest) req;
// 获取请求的方式
String method = httpRequest.getMethod();
// get请求获取到"GET" ,post请求获取到"POST"字符串
System.out.println("请求的方式:" + method);
// 根据请求的方式 执行不同的方法去做不同的处理
if ("GET".equals(method)) {
doGet();
} else if ("POST".equals(method)) {
doPost();
}
} public void doPost() {
System.out.println("这是POST请求的处理方法");
} public void doGet() {
System.out.println("这是GET请求的处理方法");
}


继承HttpServlet类实现我们自己的Servlet程序

1)首先创建一个Class,去继承HttpServlet类

2)重写httpServlet 中的 doGet方法和doPost方法实现具体的业务逻辑操作

3)需要在web.xml文件中配置Servlet的请求地址。

ps:tomcat关联源码下载的包如下图所示。

 为什么我们继承HttpServlet,就可以实现了Servlet程序呢?

因为HttpServlet继承了GenericServlet,而在GenericServlet类中它又实现了Servlet接口。

所以我们在实现开发中,只需要继承HttpServlet类,并且根据你自己的业务需要重写doGet()请求和doPost()请求即可

通过Eclipse自动新建一个Servlet程序

 Servlet类的继承体系

ServletConfig类

  ServletConfig表示Servlet在web.xml文件中配置的配置信息。

a) ServletConfig类的三大作用

 

1.获取Servlet在web.xml文件中配置的Servlet名称(也就是servlet-name的值<servlet-name>ConfigServlet</servlet-name>)。

2.获取Servlet初始化信息。(web.xml文件中<Servlet>标签中 <init-param>的初始化信息 )

3.获取ServletContext域对象

由文档可知configuration 是在初始化中获取信息。由Tomcat创建,并传入

A servlet configuration object used by a servlet container to pass information to a servlet during initialization.

所以init()方法必须勾选上

ServletContext

什么是ServletContext

 

第一:ServletContext是一个接口。

第二:ServletContext是一个域对象!

第三:每个Web工程,都对应一个ServletContext对象!

ServletContext有什么作用?

 

第一:ServletContext可以获取web.xml文件中的配置上下文参数 -----------<context-param>:它可以配置整个web工程的上下文参数

第二:ServletContext可以获取web工程在服务器的工程名

第三:ServletContext可以获取web工程中文件夹或文件在服务器硬盘上的绝对路径

第四:ServletContext可以设置、获取web工程的全局属性

protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 获取ServletConfig对象
ServletConfig config = getServletConfig(); // 获取Servlet的上下文对象
ServletContext context = config.getServletContext(); // 获取web.xml文件中配置的参数的值
// 正确。ServletContext只能获取context-param配置的参数
String passwordValue = context.getInitParameter("password");
System.out.println("获取context-param参数:" + passwordValue); // ServletContext无法获取Servlet中配置的init-param参数
String usernameValue = context.getInitParameter("username");
System.out.println("获取servlet配置的init-param参数:" + usernameValue);
}

在eclipse中创建一个Web项目的时候,虽然有web.xml生成,但是再添加Servlet类文件的时候总是看不见web.xml的更新,所以异常的郁闷!上网查了查,原来我们在创建Web项目的时候,会弹出一个对话框,“Dynamic web module version”这个选项默认成了3.0,按照老规范,应该是在eclipse的WebContent \ WEB-INF \ 目录下创建web.xml的。而新规范是可以不用web.xml的,如tomcat 7.0就支持新规范,这样相关的servlet配置会以注解的形式直接写到代码里面了,比如@WebServlet。 当然如果你用老的项目导入,可以选择Dynamic web module version这个选项设成2.5,这样web.xml就会自动更新了。

1.接口作为参数和返回值,都是同样的作用,所有继承了这个接口的类,都可以使用。也就是说,你给这个方法传参数的时候,可以把继承了这个接口的类的实例传给这个方法,同样的道理,你可以把继承了这个接口的类返回。

2.接口做为参数传递,传递的是实现了接口的对象; 
接口作为类型返回,返回的是实现了接口的对象。

Servlet小结

Tomcat & Servlet的更多相关文章

  1. What is the difference Apache (Http Server) and Tomcat (Servlet Container)

    The Apache Project The Apache Project is a collaborative software development effort. Its goal is to ...

  2. TOMCAT ---> servlet概念

    1 TOMCAT ---> servlet概念 2 TOMCAT 目录结构 (各个文件夹都存放什么东西) 3 TOMCAT 程序的层级 web | |---- js,jsp,html,css ( ...

  3. Tomcat&Servlet

    Tomcat&Servlet 一.web开发相关的概念 1. 软件架构 1.1 C/S架构 C:Client客户端, S:Server服务器 比如:QQ.微信.大型网游 优点: 显示效果炫 安 ...

  4. Android网络(3):HttpClient作client,Tomcat Servlet作server的交互演示样例

    前面相继介绍了Android网络编程里的Socket传输图片.HttpURLConnection,今天看HttpClient. 第一部分:JavaEE版的Eclipse配置Tomcat [备注:开发后 ...

  5. Web开发之Tomcat&Servlet

    <!doctype html>01 - JavaEE - Tomcat&Servlet figure:first-child { margin-top: -20px; } #wri ...

  6. tomcat&servlet初记

    tomcat&servlet初记 1. web相关概念 2. web服务器软件的学习:tomcat 3. servlet入门学习 web相关概念 1,软件架构 1,cs架构:客户端/服务器端 ...

  7. JavaWeb基础(day15)( http + tomcat + servlet + 响应)

    HTTP+Tomcat+Servlet+响应 HTTP HTTP  超文本传输协议(Hyper Text  Transfer  Protocol  ),一种网络协议. 协议的组成和过程 HTTP协议由 ...

  8. tomcat servlet 线程

    在服务器里,有一个servlet,当客户端第一次访问服务器时,tomcat会 帮我们建一个servlet的对象出来,(注意: tomcat里面可能部署了10个Servlet,如果某一个Servlet从 ...

  9. Tomcat+Servlet面试题都在这里

    下面是我整理下来的Servlet知识点:  图上的知识点都可以在我其他的文章内找到相应内容. Tomcat常见面试题 Tomcat的缺省端口是多少,怎么修改 Tomcat的缺省端口是多少,怎么修改 ...

  10. Tomcat &servlet字符集编码问题

    1.字符编码的原由 1.1 request和response的默认编码是? 如果未指定字符编码,则Servlet规范要求使用ISO-8859-1的编码. HTTP消息正文(请求或响应)的字符编码在Co ...

随机推荐

  1. 泰泽智能电视(Tizen smart TV)问世

        6月2日至4日,泰泽开发人员大会(TDC)在美国洛杉矶举行,会上韓国三星公司展出了一台泰泽智能电视(原型机).        智能电视(Smart TV not to be confused ...

  2. 使用RMAN Active duplicate创建异地auxiliary Database

    1g的RMAN duplicate 可以通过Active database duplicate和Backup-based duplicate两种方法实现.这里的测试使用的是Active databas ...

  3. <<linux device driver,third edition>> Chapter 2: Building and Running Modules

    Kernel Modules Versus Applications Kernel modules programming is similar to event driven programming ...

  4. PAT A1073 Scientific Notation (20 分)——字符串转数字

    Scientific notation is the way that scientists easily handle very large numbers or very small number ...

  5. 【ZOJ 3463】Piano

    ZOJ 3463 题意:有一个钢琴,一个人把左手放在L位置上,右手放在R位置上,要弹某\(n\)个键,每个手最多能够得着9个位置,并且两只手不能交叉.把手移动的代价是大拇指移动的距离的平方根.问弹完这 ...

  6. Django 学习 (第五部)

    表设计: from django.db import models # Create your models here. # class Foo(models.Model): # name = mod ...

  7. 01-Mirrorgate简介

    1.项目信息 MirrorGate是一款WallBoard应用程序,旨在为团队提供与软件开发相关的所有不同领域的快速反馈.       项目地址:https://github.com/BBVA/mir ...

  8. 3.5《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—第三章小结

    本章使用的重要命令总结在Table 5中 命令 描述 示例 curl 与URL交互 $ curl -O example.com which 指出程序的在计算机的路径 $ echo bar >&g ...

  9. Luogu2792 JSOI2008 小店购物 最小树形图

    传送门 被题意杀 本以为一个种类的物品一定要一起买 看了题解才知道可以先把所有要买的物品买一个,剩下要买的物品就可以得到这个种类的物品能够得到的最大优惠-- 所以现在只需要知道:第一次买所有物品一遍时 ...

  10. PowerDesign 16.0 生成的SQL Server2000 数据库脚本时MS_Description不存在的问题解决

    根据网上查询到的资料,找到了解决方法,原文出自:http://www.cnblogs.com/24tt/p/5047257.html PowerDesign 16.0 生成的Script语句,Sql2 ...