JSP

Posted huang麦穗儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP相关的知识,希望对你有一定的参考价值。

Servlet是运行在服务器的,专门用于处理客户端发来的各种请求

之前了解了整个浏览器到服务器之间交互的过程,交互的开始从请求开始,结束到响应结束,那么Servlet程序同样存在自己的声明周期,服务器虽然在一直运行,但是Servlet程序可不能一直运行啊。

    Servlet生命周期:
    开始----》实例化----》初始化---》服务---》销毁---》不可用---》结束
    1,第一次请求,创建Servlet对象
    2,执行init方法初始化
    3,根据相应的请求执行服务Service
    4,处理完请求执行destroy销毁方法
    5,结束
    
    Servlet是多线程的~
    
    ServletAPI结构:
        Servlet 接口
        实现类:GenericServlet通用基类
                HttpServlet拥有Http协议特性类
                
    编写的任意Servlet类都继承与HttpServlet
                
    处理服务的方式:
        doGet
        doPost
        
        两个处理方式都存在解析请求和响应的能力:
            request  请求
            response 响应
            
            两种Java响应页面的方式:(跳转)
            request.getRequestDispatcher("index.jsp").forward(request, response);请求转发(可以往下一级传递这一级的信息)
            response.sendRedirect("index.jsp");重定向(不可以往下一级传递这一级的信息,将上一级的信息清零,清除缓存)
        
        字符集问题:
            Java中接收相同的字符集文本
            request.setCharacterEncoding("UTF-8");
            response.setCharacterEncoding("utf-8");
            
            页面中先要确定好字符集:
            html<meta http-equiv="content-type" content="text/html; charset=UTF-8">
            JSP<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
            
            
        JSP标签   <%@     %>声明标签
                  <%      %>方法标签
                  <%=     %>赋值标签
                  <%!     %>注释标签

        JSP中下面的两个标签,如果不写,使用的是相对路径,如果写了是绝对路径:
        <%
        String path = request.getContextPath();
        String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
        %>
        
        <base href="<%=basePath%>">
        
        而在项目中常用的是绝对路径,相对路径用的少
        
        使用el表达式来编写代码:
        1,现在JSP中声明那句话下面一行添加上:
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        2,想要往浏览器中传递数据:就需要在Java代码中放置已有的作用于的传递范围
        request.setAttribute("aaa", user);
        引号里面的是浏览器展现的那么名字${aaa},user写的是Java中传递的变量或者确切的值。
        
        
        request域,只在当前页面中使用,不可向下传递,一旦servlet生命终止,那么之前的数据只活在当时。
        session域,可以在整个服务中使用,但是不能脱离开浏览器。
        cooke域,可以活在所有的浏览器中
        
        要想从域中获取信息,那么就要先把信息放入到域中setAttribute
        想要获取getAttribute存在域当中的信息
       
    <c:forEach var="list" items="${clientList}">
    
             使用set可以改变session的值
         <c:set var="idnameValue" value="${fn:split(temp.supplier,‘/‘)}" ></c:set>
              使用if做判断
         <c:if test="${idnameValue[0] == list.clientId}">
              option选择
        <option value="${temp.supplier}">${list.clientName}</option>

        </c:if>

        </c:forEach>
    
            
        if(xml.readyState==4)    
    0 - (未初始化)还没有调用send()方法
    1 - (载入)已调用send()方法,正在发送请求
    2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
    3 - (交互)正在解析响应内容
    4 - (完成)响应内容解析完成,可以在客户端调用了





























































































以上是关于JSP的主要内容,如果未能解决你的问题,请参考以下文章

JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

jsp frame

19 jsp——jsp的转发标签

Tip:JSP标签也称之为Jsp Action(JSP动作)元素

JSP_动作和隐式对象

JSP系列:JSP进阶-EL表达式和JSP标签