zoukankan      html  css  js  c++  java
  • servlet知识点总结

    servlet:
    运行在服务器端的小程序
    Servlet是一个接口,定义自己的servlet实现接口


    入门:
    1、创建一个Myservlet 实现servlet接口 复写方法
    2、在init(),service(),destroy()方法中添加输出语句
    3、在web.xml中注册我们创建的servlet

    <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.xmcc.servlet.MyServlet</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/myServlet</url-pattern>
    </servlet-mapping>

    servlet的生命周期:
    init(), 第一次访问servlet的时候调用(初始化)
    service(),每一个访问都会调用,(处理请求和响应)
    destroy(),服务器关闭

    执行原理:
    1、当服务器接收到客户端浏览器的请求后,会解析URL路径,获取到访问的Servlet的资源路径
    2、拿到资源路径通过web.xml文件进行查找,是否有对应的url-pattern
    3、如果有,则查找对应的servlet-class 获取全路径名
    4、tomcat会将字节码文件加载进内容,并创建对象
    5、调用方法


    注意:通过web.xml方式配置servlet是web3.0版本以前 常用的方式
    那么在3.0版本后,使用注解的方式 代替 配置文件

    servlet注解方式:
    @WebServlet(value="/myServlet1",name = "MyServlet1")

    String name() default ""; 名字

    String[] value() default {}; 访问路径

    String[] urlPatterns() default {}; 访问路径

    int loadOnStartup() default -1; 启动时机

    WebInitParam[] initParams() default {}; 初始化参数


    loadOnStartup:servlet初始化时机

    默认是第一次访问servlet的时候初始化 这个时候loadOnStartup值为-1

    servlet重要的对象:
    ServletConfig:servlet配置对象
    1、获取取当前servlet的名字
    2、获取当前servlet的初始化数据
    3、获取servletContext对象

    (域对象)ServletContext: 上下文对象(全局管理者,整个项目共享的对象)
    每个web项目启动的时候,都会创建一个servletContext对象,
    servletContext会随着web的启动而创建 销毁则销毁

    1、数据共享
    setAttribute()
    getAttribute()
    removeAttribute()
    2、获取文件的真实路径
    getRealPath()
    3、以流的形式返回文件
    getResourceAsStream()
    4、获取web的初始化参数
    在web.xml的根目录下面进行配置
    <context-param>
    <param-name></param-name>
    <param-value></param-value>
    </context-param>
    context.getInitParameter()

    request:请求:处理请求相关
    response:响应:处理响应相关

    什么是请求
    浏览器,访问服务器,
    什么是响应
    服务器,反馈浏览器

    request:域对象(一次请求)
    getParameter():获取单个数据(input框)
    getParameterValues();获取多个数据(checkedbox)
    getParameterMap():获取所有的参数
    key:name值
    value:name对应的value值

    获取请求头信息:
    request.getHeader("")
    获取请求方式:
    request.getMethod();
    获取项目路径:
    getContextPath();

    //请求转发:
    request.getRequestDispatcher("/hello.html").forward(request,response );
    地址栏不变,页面发生跳转
    如果发生了请求转发,还是一次请求

    路径相关;
    内部路径;直接写资源
    相对:./ ../
    绝对:
    带主机和协议的路径(访问站外资源)
    不带主机和协议的路径(最常用的)
    /项目名/资源路径


    response对象:
    响应码(状态码):200 成功
    404:访问的资源不存在
    500:服务器代码有问题
    304:读缓存
    302:重定向

    常用方法:
    //设置编码
    response.setContentType("text/html;charset=utf-8");
    //回写数据
    response.getWriter().print("我已收到请求!!!");

    getOutputStream():获取字节流

    注意:两个流是互斥的 不能同时存在
    自己写的:字符流
    其他所有:字节流

    sendRedirect():重定向 页面发生跳转
    地址栏要发生改变,两次请求

    请求转发和重定向的区别:
    1、重定向2次请求,请求转发1次请求
    2、重定向地址栏变化,请求转发地址栏不变
    3、重定向转发通过浏览器,请求转发通过服务器内部
    4、重定向可以访问站外资源(除开当前服务器以外),请求转发不能访问站外资源


    了解:
    setHeader(); 设置响应头
    addHeader();添加响应头,如果有就覆盖 ,没有就添加


    响应头:
    location:配合状态码 实现重定向
    refresh:刷新
    cookie:小饼干
    Content-Disposition:下载相关

    //重定向
    方式一:
    sendRedirect():
    方式二:
    response.setStatus(302);
    response.setHeader("location", "/myServlet6");

    //定时刷新
    response.setHeader("refresh", "3;url=http://www.baidu.com");

  • 相关阅读:
    点击子窗体给父窗体上的对象赋值
    框架使用及规范参考
    像Google日历一样的日程管理
    TreeView 和 Menu 的用法
    甘特图-svg版 支持客户端事件
    js获取DropDownList的选择项
    GridView,Repeater分页控件:WebPager(开源)
    TextBox 禁止客户端输入 前台通过JS赋值 并在后台获取
    对象实体 参考标准
    以编程方式控制ScriptManager
  • 原文地址:https://www.cnblogs.com/lyhhary/p/10316387.html
Copyright © 2011-2022 走看看