zoukankan      html  css  js  c++  java
  • JSP总结

    JSP的生命周期
    1.编译阶段(servlet容器编译servlet源文件,生成servlet类)
    jsp编译过程包括(1.解析jsp文件 2.将jsp文件转为servlet 3.编译servlet)
    2.初始化阶段(加载与jsp对应的servlet类,创建其实例,并调用他的初始化方法)
    容器载入jsp文件后,它会在为请求提供任何服务前调用jspInit()方法
    3.执行阶段(调用与jsp对应的servlet实例的服务方法)
    当jsp网页完成初始化后,jsp引擎将会调用_jspservice()方法
    4.销毁阶段(调用与jsp对应的servlet实例的销毁方法,然后销毁servlet实例)
    jspDestory()方法在jsp中等价于servlet中销毁方法。

    jsp语法
    1.〈% 代码片段 %>
    延伸->如何解决jsp页面中的中文编码问题
    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    延伸如何解决get和post的中文乱码问题
    post:在web.xml文件中配置一个CharacterEncodingFilter过滤器。设置为utf-8
    get:有两种方法 1.修改tomcat配置文件添加编码与工程编码一致 2.对参数进行重新编码String username= new String(Request.getParameter("username").getBytes("ISO8859-1"),"utf-8");

    2.jsp声明
    一个声明语句可以声明一个或者多个变量、方法,jsp文件中必须先声明才能使用
    <%! int i = 0; %>
    <%! int a, b, c; %>
    <%! Circle a = new Circle(2.0); %>

    3.jsp表达式 <%= 表达式 %>
    例子:<p> 今天的日期是: <%= (new java.util.Date()).toLocaleString()%></p>

    4.jsp注释 <%--注释--%> <!--注释-->,后者在查看源代码时可以看见

    5.jsp指令标签
    1.<%@ page ... %>定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
    2.<%@ include ... %> 包含其他文件
    3.<%@ taglib ... %>引入标签库的定义,可以是自定义标签

    6.jsp行为
    1.jsp:include 用于在当前页面中包含静态或动态资源
    2.jsp:forward 从一个JSP文件向另一个文件传递一个包含用户请求的request对象
    3.jsp:element 动态创建一个XML元素
    4.jsp:attribute 定义动态创建的XML元素的属性
    5.jsp:body 定义动态创建的XML元素的主体
    6.jsp:text 用于封装模版数据
    7.jsp:useBean
    8.jsp:setProperty
    9.jsp:getProperty
    10.jsp:plugin

    7.JSP九大内置对象
    1.request
    2.response
    3.out
    4.session
    5.application
    6.config
    7.pageContext
    8.page
    9.Exception

    8.JSP http状态码
    1.200 请求被确认 OK
    2.400 服务器无法识别请求
    3.404 服务器无法找到所请求的页面(一般时路径错误)
    4.500 请求不完整,服务器遇见了出乎意料的状况
    。。。。。

    9.JSP表单处理
    提交数据
    浏览器中使用GET方法和POST方法向服务器提交数据
    JSP读出表单数据
    1.getParameter(): 使用 request.getParameter() 方法来获取表单参数的值。
    2.getParameterValues(): 获得如checkbox类(名字相同,但值有多个)的数据。 接收数组变量 ,如checkbox类型。
    3.getParameterNames():该方法可以取得所有变量的名称,该方法返回一个 Enumeration(枚举类)。
    4.getInputStream():调用此方法来读取来自客户端的二进制数据流。

    10.JSP cookie处理
    1.使用JSP设置cookie
    1.创建一个cookie对象 Cookie cookie = new Cookie("key","value");
    2.设置有效期 cookie.setMaxAge(60*60*24);默认以秒单位
    3.将cookie发送到HTTP响应头中 response.addCookie(cookie);
    2.使用JSP读取Cookie
    1.调用request.getCookies()方法,获取的是一个Cookie对象的数组
    cookies = request.getCookies();
    2.遍历数组,用getName()和getValue()方法获取每一个cookie的名称和值。
    3.使用JSP删除cookie
    1.获取一个已经存在的cookie然后存储在Cookie对象中
    Cookie cookie = null;
    假设存在的cookie为cookie[i]
    cookie = cookie[i];
    2.将cookie的有效期设置为0;
    cookie.setMaxAge(0);
    3.将这个cookie重写添加进响应头中
    response.addCookie(cookie);

    11.JSP Session处理
    HTTP是无状态协议,意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息,有三种方式来维持客户端与服务器的会话(拓展->有状态协议包括TCP.FTP,无状态协议包括HTTP,UDP,有状态和无状态帮助理解(转自某乎)有状态就是通信双方要记住双方,并且共享一些信息。而无状态协议的通信每次都是独立的,与上一次通信没什么关系)


    1.Cookies
    网络服务器可以指定一个唯一的sessionID作为cookie来代表每个客户端,用来识别这个客户端接下来的请求

    2.隐藏表单域
    一个网络服务器可以发送一个隐藏HTML表单域和一个唯一的sessionID,意味着当表单提交时,指定的名称和值会自动包含在GET或POST数据中。

    3.重写URL
    可以在每个URL后面添加一些额外的数据来分区会话,服务器能够根据这些数据来关联
    session标识符

    session对象的一些重要方法
    1.getAttribute(String name)返回session对象中与指定名称绑定的对象
    2.getId()返回session对象的ID
    3.invalidate()将session无效化,解绑任何与该session绑定的对象
    4.isNew()返回是否为一个新的客户端,或者客户端是否拒绝加入session
    5.removeAttribute(String name)移除session中指定名称的对象
    6.setMaxInactiveInterval(int interval),设置会话有效期,默认单位秒。
    。。。。


    删除Session数据(有以下几种方法)
    1.移除一个特定的属性
    用上面的removeAttribute方法
    2.删除整个会话
    调用上面的invalidate()方法使整个session无效
    3.设置会话有效期
    调用这个setMaxInactiveInterval(int interval)方法
    4.登出用户
    用logout()方法登出用户,并且使所有相关的session无效
    5.配置web.xml文件
    如果是tomcat,可以如下配置
    <session-config>
    <session-timeout>15</session-timeout>
    </session-config>
    即15分钟后失效,默认为30分钟,单位为分钟。

    JSP文件上传
    1.需要引入的包,commons-fileupload、commons-io

    2.创建文件上传表单
    (1.表单的method属性应该设置为POST方法,不能用GET方法-》为什么?post可以传送大量数据,GET传输的数据量小,因为受URL长度限制,但效率高)-》get和post的区别?1.GET把参数包含在URL中,POST通过request body传递参数 2.GET请求在URL中传送的参数是有长度限制,而POST没有 3.GET请求只能进行URL编码,而POST支持多种编码方式 4.对参数的数据类型,GET只接受ASCII字符,而POST没有限制。。。。。
    (应付面试)
    (2.表单enctype属性应该设置为multipart/form-data)
    (3.表单action属性应该设置为在后端服务器上处理文件上传的servlet文件)

    3.编写后台Servlet
    定义一个UploadServlet继承HttpServlet,重写其中的方法,具体后面再讲。

    4.在web.xml文件中配置UploadServlet
    包括配置<servlet>以及<servlet-mapping>


    JSP日期处理
    1.Date类的构造函数
    Date有两个构造函数 Date()和Date(long millisec)
    Date()使用当前日期和时间来初始化对象
    Date(long millisec)表示从1970年1月1日凌晨至所要表示时间的毫秒数。

    2.获取Date对象后所拥有的方法
    1.boolean after(Date date)
    如果比给定的日期晚,则返回true,否则返回false
    2.boolean before(Date date)
    3.int compareTo(Date date)
    如果与给定日期相等,则返回0,如果比给定日期早,则返回一个负数,如果比给定日期晚,则返回一个正数
    4.boolean equals(Object date)
    5.long getTime( )
    返回从1970年1月1日凌晨至此对象所表示时间的毫秒数
    6.String toString( )
    将此对象转换为字符串并返回这个字符串

    3.JSP获取当前日期和时间
    <%
    Date date = new Date();
    out.print(date.toString);
    %>

    4.JSP使用SimpleDateFormat格式化日期
    <%
    Date date = new Date();
    SimpleDateFormat sf = new SimpleDateFomat("yyyy-MM-dd HH:mm:ss");
    out.print(sf.format(date));
    %>


    JSP页面重定向
    使用response对象的sendRedirect(String location)方法
    该方法将状态码和新的页面位置作为响应返回给浏览器,可以如下替代
    response.setStatus(response.SC_MOVED_TEMPORARILY);
    respose.setHeader("location",site);

    JSP点击量统计
    用于查询某个页面被访问的次数,一般在页面上添加页面统计器。页面访问的统计一般在用户第一次载入时累加该页面的访问数上。
    JSP页面代码
    <%
    Integer hitsCount =
    (Integer)application.getAttribute("hitCounter");
    if( hitsCount ==null || hitsCount == 0 ){
    /* 第一次访问 */
    out.println("欢迎访问菜鸟教程!");
    hitsCount = 1;
    }else{
    /* 返回访问值 */
    out.println("欢迎再次访问菜鸟教程!");
    hitsCount += 1;
    }
    application.setAttribute("hitCounter", hitsCount);
    %>
    <p>页面访问量为: <%= hitsCount%></p>

    JSP自动刷新
    JSP自动刷新页面的方法 response对象的setIntHeader()方法
    public void setIntHeader(String header, int headerValue)
    给header取个名字即可,value值的单位为秒

    模拟数字时钟
    <%
    response.setIntHeader("Refresh",5);//5秒钟刷新一次
    Calendar calendar = new GregorianCalendar();
    String am_pm;
    int hour = calendar.get(Calendar.HOUR);
    int minute = calendar.get(Calendar.MINUTE);
    int second = calendar.get(Calendar.SECOND);
    if(calendar.get(Calendar.AM_PM) == 0)
    am_pm = "AM";
    else
    am_pm = "PM";
    String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
    out.println("当前时间为: " + CT + "\n");
    %>

  • 相关阅读:
    什么是评审
    缺陷识别与缺陷跟踪
    白盒测试用例设计
    黑盒测试用例设计(二)
    黑盒测试用例设计技术
    Mysql基础
    JS函数
    SpringBoot整合JPA
    Python中的保留字
    操作系统的发展史
  • 原文地址:https://www.cnblogs.com/qiannianguyao/p/11871393.html
Copyright © 2011-2022 走看看