Servlet学习笔记

    xiaoxiao2023-03-24  2

    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

    转载请注明原文地址: https://ju.6miu.com/read-1201341.html
    最新回复(0)