Servlet学习笔记

servlet
运行在服务器端的java程序

根据请求方式的不同将请求派发给doGet()或doPost()方法


被访问时候tomcat会调用servlet的service方法
再重写service()时 doget()或者是dopost()方法不会起作用


一个servlet程序就是一个继承了java.servlet.Servlet接口的 java类

Servlet接口定义了Servlet定义了
开发步骤:
1. 写程extends httpservlet
2. 将程序部署到tomcat 服务器下的webapps对应的目录
3. 在web.xml中配置servlet程序 注册servlet 配置对外访问路径

在servlet中获取输出流

静态页面动态页面

  • 区别在于和数据库的交互
  • 动态页面可以传参数

servlet

有三种方法 1. extends genericServlet 重写service 与http协议无关 2. implement servlet (要重写所有的方法) 3. extends httpservlet 重写service方法 与http协议相关
* new 一个servlet类继承httpservlet,重写servic类
* 设置servlet。request的编码和response编码 setcharacterencoding(“utf-8”)
* 在request作用域中添加一个对象

由于servlet的对象只有一个,其中的属性很容易成为servlet方法执行的临界资源
尽可能的不要在servlet中定义成员变量
否则一定要加同步代码块 使用sychronized代码块


servletConfig接口

每一个servlet类都会对应一个servlet标签,当被tomcat读取到内存中,每一个servlet标签都会被封装成servletConfig对象 是web.xml的中 < servlet >的内存表现
在servlet标签中添加参数< init-param >
httpservlet 是gengricServlet的子类 可以使用 super.getservletConfig(); 调用父类中方法

获取到存储在 标签中的对象

servletConfig congif =super.getservletConfig ();
string  a =congif.getInitParameter(" name") ;通过名字获得值;


servletContext



是web.xml内存表现,servletContext存放了所有web.xml信息
一个应用只有一个web.xml 一个web.xml对应一个servletContext
获得一个servletContext对象


include包含和forward转发

获得请求转发器
应用网页中的标题部分和底部部分,会通过include专门输出标题和底部的servlet程序完成信息的输出展示

requestdispather re= request.getRequestDispather(“被包含的servlet的url_pattern”);
re.include(request,response );

forward请求转发

servlet程序 业务逻辑+显示逻辑 要求业务逻辑和显示逻辑分离
显示逻辑和业务逻辑有严格的执行顺序:业务逻辑—–>显示逻辑
业务逻辑—forward—-显示逻辑

forward
requestdispatcher request =request.getrequestgetdispatcher("被转发的下一个servlet的url—pattern");
request.forward(request,response);

浏览器地址栏的url和最终显示网页结果不一致
请求的Aservlet会转发请求的Bservlet 相应Bservlet显示的 结果


在表单中向servlet发送信息 action = 对外访问路径+servlet的url-pattern

练习:
1. 将登陆功能显示逻辑和业务逻辑分离
2. 验证的用户名和密码从数据库中获取
3.

输出包含
* include :包含方式,一个servlet将其他的servlet的输出结果包含进来,共同向client输出,主要用来做复杂的界面显示
请求转发

*
request作用域
相当于一个容器 存放命名属性,只有forward跳转才能使用request作用域

request.setattribute(name,value);
request.getattribute(name);


servlet 文件上传

servlet 与html form 标签一起使用,允许用户上传文件。
创建一个文件上传的表单
* 表单method属性设置为post方法 不能使用get方法
* 表单enctype属性设置为multipart/form-data;
* 表单的action设置为在后台服务器上处理文件上传的servlet文件
* 上传单个文件 使用 标签 为了允许多个文件的上传,请包含多个name属性值不同的input标签输出标签库具有不同名称属性的值。浏览器会为每个input标签关联一个浏览按钮


servlet 网页重定向

url 统一资源定位符

http:// ip :port/应用名/url-pattern
url-pattern :
url中除去应用名之前的内容

**uri 统一资源描述符、
/应用名/url-pattern**
在servlet中使用重定向
请求重定向之间是两次的request和response
请求重定向的多个servlet之间是处于不同request的生命周期

在respond的sendRedirect(uri)中传的参数时uri 而且只能是html页面

在sendredirect(url+?)可以用来传递参数

Cookie

cookie是服务器保存在浏览器的一段字符串
以键—-值的方式存在
创建cookie对象
Cookie cookie=new Cookie (“name”,”value”);
将cookie添加至响应的response
response.addCookie(cookie);
cookie.setMax()中设置时间,单位是秒
* cooki.setMaxage(0);立马删除cookie
* cookie.setMax(-1);退出浏览器删除cookie

获取cookie

Cookie cookie[] =request.getcookies();返回的是一个数组
cookie.getName();
cookie.getvalue();

httpsession是一个作用域:可以用来存放命名属性

session.setattribute(“name”,”object”);
session.getattribute(“name”);
session.remove(“name”);
session生命周期

session特点:
生命周期长,是一次会话,可以跨越多个request的生命周期,
Httpsession session=request.getsession(true) 获取创建session(如果服务器中已经存在就是获取session对象)
begin:第一次调用getsession(true);
end:time out(默认存活三十分钟);
session在下列情况下会被删除:
1. 程序调用httpsession.invalidate();
2. 距离上一次程序收到客户端的发出的session id时间超过session的最大有效时间
3. 服务进程被终止

一个用户有一个session

服务器是如何辨别各个用户的session

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值