笔记--web基础及servlet基础

java高级编程及web基础。
/*
*jdk5.0新特性
	*泛型:应用在集合上
	*编写通用性较强的代码
		*自定义泛型方法和类
		 public <T> void run(){}
	*枚举
		*enum 类名
		{
			BOSS("22"),HR("33");
		}
	*可变参数:
		*int...nums
		*可以把nums当成数组
		*只能有一个可变参数,可变参数放在末尾
	*反射:
		*通过编译后的class文件获取类中的所有内容
		*获取Class对象
			*通过类名   User.class
			*通过实例对象   new User().getClass()
			*Class.forName("包名+类名");
			
		*构造器,属性,方法,获取到的都是对象
*web
	*服务器
		*网络架构
			*C/S  eg:QQ
				*优点:交互性好,服务器压力小
				*缺点:客户端更新,下载
			*B/S  eg:淘宝
				*优点:服务器压力大
				*缺点:服务器更新即可
		*web网页,Javaweb 使用Java开发网页
		*静态web资源
			*html,css,javascript
		*动态web资源
			*数据发生变化
			*servlet/jsp
			*ASP  .net   微软开发
			*PHP  开源(开发网站速度快)
			*ruby  日本开发的
			
			*java:后台管理系统,处理大数据
			
		*服务器介绍
			*原理:网络编程
			*概念:
				*硬件:一台主机
				*软件:安装了服务器的软件
			*ping www.baidu.com 63.135.169.121
			*常见服务器:	
				*weblogic  BEA公司开发,被Oracle收购  收费  支持javaEE所有规范
					*JAVA MySql(oracle) weblogic
				*webSphere IBM公司开发  收费  支持javaEE所有规范
					*银行喜欢用
				*Tomcat  Apache开发(开源组织)免费 只支持servlet/jsp
			*Tomcat安装注意事项
				*安装jdk,配置Java环境变量
				*解压版:解压到当前文件夹,目录不要有中文
				*启动服务器:tomcat/bin/startup.bat双击启动
				*访问服务器:http://localhost:8080
				*关闭服务器:tomcat/bin/shutdown.bat双击关闭	
			*常见启动问题:
				*双击启动一闪而过,是环境变量配置有问题。
				*端口占用:
					*解决:
						*结束占用端口的应用程序
							*找到占用端口的应用程序
							*netstat -ano找出应用程序,在任务管理器中结束程序
						*修改服务器的端口号
							*修改配置文件(不要轻易修改)
							*tomcat/conf/server.xml配置文件
								<Connector port="80" protocol="HTTP/1.1"
								connectionTimeout="20000"
								redirectPort="8443"/>
			*tomcat目录结构
				*bin      启动项
				*conf     配置文件项
				*lib      服务器运行时使用的jar包
				*logs     日志文件,运行时产生的日志
				*temp     运行时的临时文件
				*webapps  web应用们
				*work     jsp翻译成servlet程序
			*如果动态的文本资源,把web资源发布到服务器的webapps目录下,有固定的目录结构
				*静态web资源
					*html,css,javascript
				*动态web资源
					*数据发生变化
					*servlet/jsp
				*开发动态的web资源程序,目录结构如下
					*servlet/jsp主要包含,就成为动态的web资源
					*website
					     |     ---  存放HTML,CSS,JavaScript,jsp,图片
						 WEB-INF
							|
							web.xml    程序的入口,配置文件,必须存在
							classes    文件夹,可选,名称固定
							lib        文件夹,可选,名称固定
			*tomcat和myEclipse的集成
				*Windows--选项--myEclipse--servers--选择tomcat--选择enable--选择tomcat根目录
				*配置jdk--选择jdk
				*启动服务器
			*虚拟路径
				*默认和项目名相同
				*webroot变成了虚拟路径
			*直接复制项目,需要修改虚拟路径
				*右键项目--选择属性--myEclipse--web--修改虚拟路径
		*部署web项目的三种方式
			*项目复制到webapps目录下
			*通过配置虚拟路径
				*修改配置文件
					*写到tomcat/conf/server.xml
					*找到<host>,把下面的东西配置到host标签中间
					*目的:通过配置,配置访问路径,找到准确的资源
						*<context docBase="文件夹的真是目录" path="访问路径"></context>
			*自己编写一个配置文件
				*自定义以.xml结尾的文件,在$CATALINA_HOME/conf/[enginename]/[hostname]/directory目录下
				*把以.xml结尾的文件名当成访问路径					
				*在xml的文件中编写
*HTTP:超文本传输协议
	*基于TCP连接的传输协议
	*默认端口号80
	*基于请求额响应的模式(先有请求,后有响应)
	*客户端连上服务器后,若想获得服务器中的某个资源
	 需要遵守一定的通信格式,http协议用于定义客户端于服务器端通信的格式
	*版本
		*HTTP1.0:链接后,只能获取一个web资源
		*HTTP1.1:链接后,可以获取多个web资源
	*请求:
		*请求行:
			*提交方式:post,get,options,head
				*常用post,get。
				*区别:get把参数显示在地址栏,安全级别低,不支持大数据
					   post把参数封装在请求体中,安全级别高,支持大数据
			*请求地址:请求资源
			*协议版本:http1.1
		*请求头:以键值对形式出现,一般重要的头信息都是一个可以对应一个value
				 一个可以可以对应多个value
				Accept: text/html,image/*    
				Accept-Charset: ISO-8859-1
				Accept-Encoding: gzip
				Accept-Language:zh-cn 
				Host: www.itcast.com:80
				If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
					*必须和响应头信息一起来控制本地的缓存
				Referer: http://www.itcast.com/index.jsp
					*记住当前网页的来源(防盗链)
				User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
					*用户代理,判断浏览器的版本
				Connection: close/Keep-Alive   
				Date: Tue, 11 Jul 2000 18:23:51 GMT
		*空行:http协议数据规范
		*请求体:post提交的参数列表
	*响应:
		*响应行:
			*协议版本:http1.1
			*状态码
				*200  请求成功,一切OK
				*302  请求重定向
				*304  服务器资源没有改动,通知客户端查找本地缓存
				*404  客户端访问的资源部存在
				*500  服务器内部出错
			*状态码描述
		*响应头:以键值对形式出现,一般重要的头信息都是一个可以对应一个value
				 一个可以可以对应多个value
				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
					*和请求头If-Modified-Since一起控制缓存,304
				Refresh: 1;url=http://www.it315.org
					*完成页面的定时跳转
				Content-Disposition: attachment; filename=aaa.zip
					*设置文件是以附件的形式打开的。
				Expires: -1
				Cache-Control: no-cache  
				Pragma: no-cache   
					*以上三个是禁用缓存(网银)
				Connection: close/Keep-Alive   
				Date: Tue, 11 Jul 2000 18:23:51 GMT
		*空行:http协议数据规范
		*响应体:
	*转发和重定向
		*重定向:第一次发送请求,服务器回复请求码302,内容是另外的地址,客户端需要再发送一次请求
		*转发:
*/
/*
*servlet
	*什么是servlet?
		*实现servlet接口,重写5个方法
		*servlet是一个小的Java程序,运行在服务器中,接收和响应从客户端发送过来的请求
		*快速入门
			*编写一个类,实现servlet接口,重写5个方法
				*编写一个类,实现GenericServlet接口,重写1个方法
			*配置文件,配置servlet信息
	*生命周期:实例被创建,对外提供服务,销毁
		*void init(ServletConfig arg0):servlet被创建后,初始化servlet
		*void service(ServletRequest arg0, ServletResponse arg1):服务从客户端发送过来的请求
		*void destroy():从服务器中移除servlet
		*
	*servlet的关系:
		*servlet接口
			|
			GenericServlet
				|
				HttpServlet
					|
					MyServlet
		*为什么会有GenericServlet?为什么会有HttpServlet?
			*继承GenericServlet,不要复写所有servlet接口的方法
			*HttpServlet,servlet是基于协议的。
			
	*开发步骤
		*编写一个类,继承HttpServlet
		*重写doGet()和doPost()
			*表单是get方式提交,调用doGet
			*表单是doPost方式提交,调用doPost
			*doGet和doPost互相调用
		*配置web.xml
	*servlet自动加载
		*servlet默认是第一次访问的时候创建实例。通过配置,服务器启动,创建实例
		*init做初始化操作,非常消耗时间。
		*在web.xml的servlet标签下,配置<load-on-startup>1</load-on-startup>
			*值是正数,越小,优先级越高
	*配置访问路径:三种方式
		eg:<servlet-mapping>
				<url-pattern>/demo3</url-pattern>
			</servlet-mapping>
		*以完全路径匹配:
			*以/开头   eg,/demo3
		*目录匹配
			*以/开头,/*   eg,/demo
		*扩展名匹配
			*不能以/开头,*.do    eg,demo.do
		*优先级:完全路径匹配>目录匹配>扩展名匹配
*web开发中的路径问题:
	*相对路径
		*一个文件相对于另一个文件的位置关系
		*不能以/开头,写法:./demo(当前目录的demo) == demo        ../demo上级目录的demo
		*webroot下的资源想访问servlet资源,分别从地址栏可以看出,都是在项目名下直接访问,
		 所以直接写相对的资源路径./demo3 or demo3
		*在webroot下的文件夹下面的资源,想访问servlet资源,因为webroot下的文件夹才是和servlet资源是同一目录下的
		 所以需要退回上一级去访问资源,相对路径写为:../demo3
	*绝对路径
		*以/开头
		*访问demo3:/day09/demo3
		*客户端绝对路径
			*‘/day09/demo3’  需要写项目名
		*服务端绝对路径
			*‘/demo3’        不能写项目名
			
*ServletConfig对象,和配置文件相关【init(ServletConfig arg0)】
	*配置初始化参数
		*在web.xml的servlet标签下配置
			<servlet>
				<!-- 配置初始化参数 -->
				<init-param>
					<param-name>username</param-name>
					<param-value>root</param-value>
				</init-param>
			  </servlet>
		*如果要是配置在某个servlet的标签下,那么只能在该servlet下获取该初始化参数
	*getServletName():获取配置文件中的servlet名称
	*getInitParameter(arg0):获取初始化参数
	*getInitParameterNames():获取初始化参数的名称
	
*ServletContext对象  域对象
	*定义:web服务器启动时,会为每一个web应用程序创建一个对应的ServletContext对象,它代表当前web应用
	 一个web应用对应一个ServletContext对象
	 一个web应用下有多个servlet程序
	 所有servlet程序共享一个ServletContext对象
	*ServletConfig对象中维护了ServletContext对象的引用
	*作用:
		*获取文本应用全局初始化参数
			<context-param>
			  <param-name>encoding</param-name>
			  <param-value>utf-8</param-value>
			</context-param>
			*getInitParameter(String name):获取初始化参数
			*getInitParameterNames():获取初始化参数的名称
		*实现数据共享
			*getAttribute(name);  获取数据
			*setAttribute(name, obj); 存入数据
			*removeAttribute(name);   删除数据
		*读取资源文件
			*getResourceAsStream(path);通过文件地址获取输入流
			*getRealPath(path);通过文件地址获取文件的绝对磁盘路径,即带盘符
*/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值