servlet初步认识

一、http协议

超文本传输协议:

浏览器往服务器发送 ---- 请求

服务器往浏览器回写 ---- 响应

1、请求:(request)

1)请求行:请求信息的第一行

格式:请求方式 访问的资源 协议/版本 egg:GET /myhtml.html HTTP/1.1

请求方式:get和post

get会把参数放在url的后面 post不会

get参数大小有限制,post请求却没有限制

get请求没有请求体;post请求有请求体 请求参数放在请求体中

2)请求头:请求信息的第二行到空行结束

常见的请求头:

Accept: text/html,image/bmp --支持数据类型    text/html text/css text/javascript 大类型/小类型 mime类型

Accept-Charset: ISO-8859-1 --字符集

Accept-Encoding: gzip --支持压缩

Accept-Language:zh-cn --语言环境

Host: www.click369.cn:80 --访问主机

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  --缓存文件的最后修改时间

Referer: http://www.click369.com/index.jsp --来自哪个页面、防盗链

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

Cookie

Connection:Keep-Alive   --链接状态

3)请求体:空行以下的内容

只有post才有请求体:放请求参数 egg:username=tom&password=123

2、响应:(response)

1)响应行:响应信息的第一行

格式:协议/版本 状态码 状态码说明 egg:HTTP/1.1 200 OK

状态码:

200 正常响应成功

302 重定向

304 读缓存

404 用户操作资源不存在

500 服务器内部异常

2)响应头:从响应信息的第二行到空行结束

常见的响应头:

Location: http://www.it315.org/index.jsp --跳转方向 和302一起使用的

Server:apache tomcat --服务器型号

Content-Encoding: gzip --数据压缩

Content-Length: 80 --数据长度

Content-Language: zh-cn --语言环境

Content-Type: text/html; charset=GB2312 --数据类型

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT --最后修改时间

Refresh: 1;url=http://www.it315.org --定时刷新

Content-Disposition: attachment; filename=aaa.zip --下载

Set-Cookie:SS=Q0=5Lb_nQ; path=/search

Expires: -1 --缓存

Cache-Control: no-cache   --缓存

Pragma: no-cache   --缓存

Connection: Keep-Alive   --连接

3)响应体:空行以下的内容

用户浏览器页面上展示的内容

二、tomcat服务器

1、常见的JavaEE Web服务器

WebLogic oracle公司 大型的JavaEE服务器 收费

WebSphere IBM 公司 大型的JavaEE 服务器 收费

Resin Caucho公司   中型的JavaEE 服务器 免费的

jBoss 红帽公司       大型的JavaEE服务器 免费的

tomcat 阿帕奇基金组织 小中型的服务器 免费 纯Java语言写的

2、tomcat服务器

解压后的目录

bin:放的是一些可执行文件

con:放的是一些配置文件

lib:核心类库

logs:放一些日志文件

temp:存放一些临时文件

webapps:存放web项目的

work:存放一些运行过程中生成的文件

使用:开启服务器:bin 里面有一个 startup.bat 双击

正常关闭:  bin 里面有一个 shutdown.bat 双击  快捷键正常关闭 ctrl+c

强制关闭:点击叉号 不推荐

3、安装后可能出现的问题

1)黑窗口一闪而过:正确配置一下 JDK 环境变量 JAVA_HOME

2)起开之后报错:tomcat 默认的端口8080 被其他进程占用

解决: a、把占用了tomcat端口关掉

b、修改tomcat端口号:con 里面 server.xml里面可以修改tomcat默认端口号

三、Servlet概述

1、概述

运行在服务器端的小程序,定义了一个Java类能被浏览器所访问的规则 其实就是一个接口;

2、作用:用来 接收请求 处理请求 响应请求

Servlet 由服务器创建 管理 销毁 我们只是使用它

3、创建一个Servlet实现类————服务器通过反射的方式 创建Servlet对象,调用其方法

//Servlet是单例的。可能会存在线程安全问题,尽量不要定义成员变量。
		public class MyServlet implements Servlet {
			//当Servlet被创建时调用 而且只调用一次 一般在这个方法里面,我们会做一些初始化的事情
			public void init(ServletConfig config) throws ServletException {
				System.out.println("Servlet被创建了");
			}
			// 核心方法 对外提供服务 每一次请求会调用该方法
			public void service(ServletRequest requst, ServletResponse response)
					throws ServletException, IOException {
				System.out.println("请求来了");
			}
			// 当Servlet被销毁时调用
			public void destroy() {
				System.out.println("Servlet被销毁了");
			}
			//获取配置对象的方法
			public ServletConfig getServletConfig() {
				return null;
			}
			//获取 Servlet版本信息 作者等信息 一般不用
			public String getServletInfo() {
				return null;
			}
		}

4、Servlet的生命周期

被创建时调用 init()------对外提供服务调用service()-----Servlet销毁时调用destroy()

1)init()

Servlet第一次被访问时,被创建,调用init()方法,只执行一次。

2)service()

每一次被访问时,会调用service()方法提供服务。

3)destroy()

服务器关闭时,servlet被销毁;服务器正常关闭是,在销毁Servlet之前,会调用destory()方法。

5、ServletConfig对象————配置对象

ServletConfig是一个接口 在Servlet初始化的时候 由服务器创建其子类对象传递给 init()方法

1)获取web.xml 中配置的初始化参数

String getInitParameter(String name)

Enumeration getInitParameterNames()

//在web.xml里面进行配置虚拟路径

<servlet>

<servlet-name>mydemo</servlet-name>  //给Servlet配一个别名

<servlet-class>org.westos.servletdemo.MyServlet</servlet-class> //配置Servlet全类名

</servlet>

<servlet-mapping> 配置一个映射

<servlet-name>mydemo</servlet-name>

<url-pattern>/demo</url-pattern> 配置一个虚拟路径用来作为浏览器要访问的资源路径

</servlet-mapping>

2)获取ServletContext全局域上下文对象 //代表了整个web应用,在域的范围内共享数据

ServletContext getServletContext()

3)获取servlet配置的名称 就是在web.xml中给servlet起的名字

String getServletName()

6、JavaWeb中四大域对象

1)ServletContext 全局域对象 统管整个服务器资源,域对象的作用,在一定范围内可以共享数据

2)session:会话域 可以包含多次请求和多次响应,并且可以在多次请求和多次响应间共享数据,只要不关闭浏览器

3)request:请求域 在一次请求间共享数据,重定向后请求域中数据不可用

4)pageContext:页面域 在一个页面间共享数据(最小域)

4个域对象 都有下面三个方法

setAttribute("num", "100");//在域中存储数据

getAttribute("num");//取出域中的数据

removeAttribute("num");//清除域中的数据

ServletContext全局上下文对象作用:

a:在域中的资源间共享数据

b:用来获取服务器的真实路径

servletContext.getRealPath("/"); //egg: servletContext.getRealPath("/WEB-INF/a.txt");

ServletContext只能用于web环境。如果是非web环境,则使用ClassLoader来获取真实路径

获取src下的文件"a.txt":

//1.获取该类对应的类加载器对象

ClassLoader loader = this.getClass().getClassLoader();

//2.获取文件运行的真实路径

URL url = loader.getResource("a.txt");

String path = url.getPath();

c:获取文件类型 getMimeType("真实路径")

7、request和response对象————由服务器创建,管理,销毁

1)request请求对象

ServletRequest(接口)<---继承 HttpServletRequest(接口)<---实现 [email protected]

入门egg:

//接受页面的传过来的参数

request.setCharacterEncoding("utf-8");

String value = request.getParameter("key");

2)response响应对象

ServletResponse(接口)<---继承 HttpServletResponse(接口)<---实现 [email protected]

入门egg:

//响应一段字符串到页面

response.setContentType("text/html;charset=utf-8");// 设置响应编码

PrintWriter writer = response.getWriter();//发送字符数据的对象

writer.write("<font color='red' size='7'>Hello Welcome</font>");

// 也可以获取响应对象中的字节输出流实现

ServletOutputStream fos = response.getOutputStream();

8、HttpServlet————一般要创建一个Servlet就继承HttpServlet就可以了

//public abstract class HttpServlet extends GenericServlet implements Serializable
		public class MyServlet extends HttpServlet {
			public void doGet(HttpServletRequest request, HttpServletResponse response)
					throws ServletException, IOException {
			}
			public void doPost(HttpServletRequest request, HttpServletResponse response)
					throws ServletException, IOException {
				this.doGet(request, response);
			}
		}	

原文地址:http://blog.51cto.com/378213986/2056144

时间: 2024-08-30 08:13:27

servlet初步认识的相关文章

Servlet初步

@WebServlet("/HelloServlet") public class HelloServlet extends HttpServlet {     private static final long serialVersionUID = 1L;          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IO

Servlet初步认识(一)

1.什么是Servlet呢? 简单来说Servlet是sun公司(该公司目前已经被甲骨文收购)制订的一种用来扩展web服务器功能的组件规范. 所谓的扩展web服务器功能,就是web服务器(比如apache web server)只能够处理静态资源的请求,不能够处理动态资源的请求,所以需要扩展.在早期的开发中一般使用CGI程序来进行扩展,不过开发起来复杂,并且移植性不好.(注:CGI[Common Gateway Interface]通用的网关接口,可以使用perl,c等语言来开发符合CGI接口标

J2EE学习笔记02 Server.xml知识点及Servlet初步

内容概要: 1.继续讲解server.xml中的一些设置知识点 2设置外部WEBAPP及使用根目录开发 3.重头戏Servlet及相关知识 关键词: TomCat,web.xml,connectionTimeout="20000" ,appBase = "webapps",线程池配置,servlet版的HelloWorld 详细内容: 一.继续讲解server.xml中的一些设置知识点 接下来,我们还是看我们的TomCat. 我们上节课呢,我们开发了myweb,我们

对于servlet初步理解

Servlet在MVC框架中经常担当控制器(Controller)的角色,其作用类似于调度员,下面我们就根据一个简单JavaEE的示例来理解Servlet的机制和原理. 树结构如上,其中 login.jsp作为测试用户登录页面. welcome.jsp作为登录成功页面 DaDao.java作为数据库操作类 LoginServlet.java就是我们所说的Servlet类 我们来看具体内容: login.jsp <%@ page language="java" contentTyp

java web入门-servlet初步

Java web三大组件:Servlet.Filter.Listener. servlet是单例的,一个对象只会有服务器创建一个对象. 每个servlet必须实现javax.servlet.Servlet接口 实现servlet接口的三个方式: 实现javax.servlet.Servlet接口 继承javax,servlet.GenericServelet类 继承javax.servlet.http.HttpServlet类 servlet接口五个方法: public void init(Se

web学习笔记-servlet

web学习笔记-servlet 概念 servlet是一个小应用程序,用于处理从客户端发送的请求及服务端的响应. 详情参见: 百度百科的定义 在idea创建servlet 在src右键新建servlet,如图所示: 然后会报异常可以下载包,也可以添加tomcat中的包,添加tomcat->lib-->servlet-api.jar作为libraries. 然后再打开web.xml此时会发现多出一个servlet标签 ServletDemo1 servelt.ServletDemo1 "

简单BBS项目

项目的基本要求: 掌握递归 掌握JavaScript+html+css+jsp+servlet初步应用 掌握分页写法 初步掌握前台/后台的概念 简单的功能需求: 1.能够树形展现 2.能够平板型展现 3.能够回复帖子 4.后台能够管理帖子,如:删除 <1.新建项目:右键new/project/Dynamic Web Project,项目名称为BBS,配置tomcat. <2.设计数据库的表:保留建表的语句到项目中,在项目new/folder然后引入bbs.sql: *****bbs.sql**

HttpClient_001_初步实现项目01的servlet,与项目02的servlet,之间数据访问

HttpClient_001_初步实现项目01的servlet,与项目02的servlet,之间数据访问 代码下载地址: http://download.csdn.net/detail/poiuy1991719/8594485 项目01: URLUtil类: package com.west.test.httpclient; /** *01:定义访问路径 *com.west.test.httpclient.PostServlet */ public class URLUtil { public

JSP初步总结

我们知道,JSP是一种动态网页技术,并且它是服务器端技术,浏览器不能直接显示.我们还是从传统认识一个新事物的三个步骤来讲:     1.What?     JSP是SunMicrosystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.它是Java Server Pages的简称.JSP技术有点类似ASP技术,它在传统的网页HTML文件中插入了Java程序段和JSP标记,从而形成了JSP文件.看到这里我们可以有个初步的了解,JSP=HTML+Java+标签,说白了就是在HTML代码中