zoukankan      html  css  js  c++  java
  • 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 - (完成)响应内容解析完成,可以在客户端调用了

  • 相关阅读:
    广度优先搜索
    洛谷 P1126 机器人搬重物
    codevs 1058 合唱队形
    洛谷P1216 [USACO1.5]数字三角形 Number Triangles
    Codevs 1576 最长严格上升子序列
    跳马(Knight Moves), ZOJ1091, POJ2243
    洛谷 P1644 跳马问题
    NOI 2971 抓住那头牛
    NOI 2727 仙岛求药
    搜索与回溯算法
  • 原文地址:https://www.cnblogs.com/0280-hnn/p/6945478.html
Copyright © 2011-2022 走看看