⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servlet.txt

📁 servlet学习笔记
💻 TXT
字号:
ASE SE SSE SA PM

三层结构
浏览器--应用服务器--数据库
web服务器--应用服务器:	通用代码,可扩展--规范
web server  application server
规范(servlet jsp) 两者都要遵守
container容器--web server

deploy部署:
应用程序--web server--浏览器

Servlet(5天)
基础 原理 first servlet
表单处理
生命周期
资源访问(数据库 mvc)--小项目
持久 状态--会话 cookie
过滤器
监听器

///基础
servlet运行 增强-->request--reponse 服务
作用: 访问远程对象  查询大量信息  多用户协作

common gateway interface CGI

////配置
CATALINA_HOME CLASS_PATH PATH

url: 域名:端口 路径(虚拟,由服务端解析)

servlet 本身不是线程,单例模式,但在服务器产生的线程中运行

webapps/
approot/
	WEB-INF/			受保护
		/classes
		/lib
		/web.xml

虚拟路径:
	应用路径 /csg-servlet
	资源路径 /test/time.html   开放目录
一般目录: 模块目录 img style js

/////配置TomCat
conf/tomcat-users.xml  manager,admin
conf/manager.xml
	<resoucelink 

////流程:
编写servlet类,实现Servlet接口
init(config) service(req,res) destroy() 
getServletConfig getServletInfo
包目录结构放到WEB-INF/classes目录下
web.xml中配置servlet访问路径<url-pattern>
(Servlet)Class.classforName.newInstance()

方法2:
extends HttpServlet(javax.servlet.http.) 已实现接口:Servlet ServletConfig Serializable 
doGet(httpreq,httpres) doPost(httpreq,httpres)(用于表单提交动作)
response.setContentType("text/html;charset=gbk")
PrintWriter out=response.getWriter()
out.println()


///生命周期(d2)
默认lazy模式,第一个请求到来时,创建示例
<load-on-startup>2</load-on-startup>   正整数,启动时自动装载(按顺序)
特殊的类加载器--web.xml--加载--newInstance 可访问的无参构造方法--init()

////init初始化参数
<init-param>		封装到ServletConfig中
	<param-name>path
	<param-value>

getServletConfig.getInistParameter()
getInitParameter("path")
getInitParameterNames()  
		java.util.enumeration  可以迭代
		hasMoreElements() nextElement()

request.getRemoteAddr()

////service
/////并发控制
尽量不使用成员变量,或保证成员变量是线程安全的
req res 不是共享资源,不用考虑并发
重要方法不要写在destroy()中

/////请求参数
getParameter(name) getParameterValues(name)
getParameterNames() getParameterMap()

<input type= name= size= maxlength= >

<form action="url" method="post" enctype="multipart/form-data"
上传附件 req.getInputStream() getContentLength()

/////解析地址栏
req.getContextPath() getServletPath()

/////防止乱码
resp.setContentType()	response要写在前面
req.setCharacterEncoding("UTF-8");

servlet 不支持泛型

////destroy
多用于回收资源,close...
    ***多线程并发
	destroy 等待 service(day03 req.CooperationServlet)

///资源访问(d3)
分布式模型
分布式技术(PPT77): jdbc RMI/IIOP(远程方法调用) corba idl
soa eai 整合 web-services EJB

////MVC模式
M业务(实体,持久,服务) --后台
VC交互(视图 控制)--前端
C servet struts
V jsp

策略模式

/////dispatch 转发
注意多线程
ServletContext application=getServetContext();  从ServletConfig中取得
req.setAttribute("",o)			放入数据
app.getRequestDispatcher("").		从应用(context)取得转发器, 可以发给自己
rd.forward(req,res)	 include(req,res)		然后转发请求,响应
getAttribute("")

////通配符:
<url-pattern>*.do
req.getServletPath()

ConnectionFactory 
.properties配置文件  路径?? 注释#
.class.getClassLoader().getResourceAsStream("相对路径")  
throw new ExceptionInInitializerError("")   初始化语句块 抛Error
直接加main方法测试

////JNDI
connection 以秒为单位 慢
JNDI:ds Ejb 消息队列jmi
javax.naming.* javax.sql.DataSource

Tomcat中需要配置: META-INF/context.xml

ctx=new InitialContext()
ds=ctx.lookup("")
ds.getConnnection

///状态管理(d4)
HTTP 无状态协议
////session 会话
HttpSession 接口
req.getSession()true false
set get removeAttribute


会话机制:
1.cookies sessionId自动默认
2.url rewriting  编写代码,仍以cookie优先
/cart;JSessionidxxxxxxxx?id=2     resp.encodeUrl(url)不支持cookie时使用sessionId

默认超时 conf/web.xml   30分钟
session.setMaxInactiveInterval(1800)  秒
session.invalidate()

////cookie
服务器请求浏览器写cookie
new Cookie("","")  只能是字符串
cookie.setMaxAge()  秒,默认有效期:关闭(窗口或浏览器)即丢失
resp.addCookie()

req.getCookies()  返回Cookie数组
cookie.getName() getValue()

比较:
			Session					Cookie
存放地点	服务端					客户端
存储对象	Object					String
空间大小							有限,每个网站最多几十个
注意事项	内存溢出				隐私
关系			  利用cookie跟踪session
api		req.getSession()			new Cookie()
		sess.set get removeAttr()	resp.getCookies() addCookies()
		sess.setMaxInactiveInterval()	setMaxAge(3600)
		sess.invalidate()
		sess.getId()


作业:
登录 退出 增 改 student
equalsIgnoreCase()
<center> window.location=
缓存 nocache ??  或加不同的参数
substring(0,path.indexOf(","))

///过滤器(d5)
time.do
*.do
--过滤层 双向<-->资源
wrapper 模式 chain   aop面向层面编程
隐形 随时可以撤消,安装
通用 共性
功能:会话管理 字符集转换 登录 点击数 
处理数据,加密  xsl样式-->xml

CharArrayWriter
response.sendRedirect("/serv-app/res/login.html")  新的请求,刷新问题

关联 依赖(use)
- - ->
- - -|>

过滤级别:
/a
/a/*
*.a

<dispatcher>request forward include error
<>FORWARD<>    也过滤转发forward的请求
<>REQUEST<>

///监听器
事件源 事件 监听器
callback
生命周期  attribute
ServletContext全局 HttpSession ServletRequest  
logs  localhost

event.getServletContext()
log("")

<filter>
<listener>
	<listener-calss>
</listener>
<servlet>
ctx.setAttribute()

线程--连接池

sessionListener
Iterator 购物车

复习:
request: parameter path attribute state
session: attribute
app: attribute dispatcher log
reponse: print sendRedirect encodeURL addCookie

MVC filter listener

onclick="javascript:history.back()"
.war

value=""  默认值
body onload=

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -