Jsp期末保命密卷

    技术2025-12-13  5

    Servlet核心接口

    1.4 核心接口概述 ServletConfig接口:其 中的方法主要可以访问两项内容:Servlet初始化参数和ServletContext对象。 ServletContext接口: 代表当前Servlet运行环境, Servlet容器在启动一个Web应用时,会为该应用创建一个唯一的ServletContext对象供该应用中的所有Servlet对象共享,Servlet对象可以通过ServletContext对象来访问容器中的各种资源。 ServletContext对象可以获取应用范围的初始化参数、在应用范围内存取共享数据、访问当前Web应用的信息、访问当前容器的信息和输出日志、访问服务器端的文件系统资源。 HttpServletRequest接口: 该接口继承了ServletRequest接口,是专用于HTTP协议的子接口,用于封装HTTP请求信息。 HttpServletRequest对象主要用于获取请求报文信息、获取网络连接信息、存取请求域属性。 HttpServletResponse接口继承自ServletResponse,是专用于HTTP协议的子接口,用于封装HTTP响应消息。 HttpServletResponse接口: 该接口主要用于创建响应报文。 注意: ServletContex接口、HttpServletRequest接口具有相同的存取域属性的方法。 HttpServletRequest接口提供了统一的获取GET请求参数和POST请求参数的方法。

    Servlet声明的两种方式

    注解@WebServlet web.xml进行声明配置

    什么是JSP、JSP四大作用域及JSP执行过程

    什么是JSP?

    Jsp是一种动态网页技术标准,是一种用于开发包含动态内容的web页面技术,是一种服务器端脚本语言,与Servlet一样,也是一种基于Java的服务器端技术,主要用于产生动态网页内容。

    JSP四大作用域?

    四种作用域的生命周期和可访问性介绍如下:【高级的web开发还在使用的技术】 页面域(page scope),页面域的生命周期是指页面执行期间。存储在页面域的对象只对于它所在页面是可访问的(仅限于当前页面使用)。 使用pageContext对象; 请求域(request scope),请求域的生命周期是指一次请求过程(用户端浏览器发送请求到服务接收接收这个阶段), 包括请求被转发(forward)或者被包含(include)的情况。 存储在请求域中的对象只有在此次请求过程中才可以被访问。 使用request对象; 会话域(session scope),会话域的生命周期是指某个客户端与服务器所连接的时间,包括request阶段和response阶段;在一次会话过程中,可以有多次请求和响应; 客户端在第一次访问服务器时创建会话,在关闭浏览器或主动退出后,会话结束。 存储在会话域中的对象在整个会话期间(可能包含多次请求)都可以被访问。 使用session对象; 应用域(application scope),应用域的生命周期是指从服务器开始执行服务到服务器关闭为止,是四个作用域中时间最长的。 存储在应用域中的对象在整个应用程序运行期间可以被所有JSP和Servlet共享访问,在使用时要特别注意存储数据的大小和安全性, 否则可能会造成服务器负载过重和线程安全性问题。 使用application对象; 存储在application中的数据是可以被多个pageContext、request、session对象同时访问; jsp的四种作用域: 总结: 一般用于数据存储,就是把数据存储在这四个作用域对象中,使用的时候,再从这四个作用域对象中取出;【缓存作用】 存储范围从小到大;生命周期从小到大: pageContext(page)、request、session、application pageContext(page)、request、session仅对当前用户有效,例如;用户a不会访问到用户b存储在这三个对象中的值; application范围最大、生命周期最长,所有的用户之间的数据都是可以互相访问的; jsp的四种作用域都是运行在服务器端的;由web服务器进行维护和管理; 在缓存对象中一般使用 setAttribute设值,使用getAttribute取值;这是一种一对操作,get方法的参数名和set方法的参数名要保持一致;

    JSP执行过程?

    1、客户端通过浏览器,向服务器发出请求,在该请求中包含了请求的资源和路径,这样,当服务器接收到该请求后,就可以知道被请求的资源

    2、服务器根据接收到的客户端的请求,来加载被请求的JSP文件

    3、Web服务器中的JSP引擎,会将被加载的JSP文件转化为Servlet

    4、JSP引擎,将生成的Servlet代码,编程成Class文件

    5、服务器执行这个Class文件

    6、最后,服务器将执行结果,发送给浏览器进行显示

    常用监听器和监听器创建步骤

    常用监听器

    创建步骤

    原生JavaScript完成Ajax请求

    原生的ajax的开发应用 (1)创建ajax引擎对象 XMLHttprequest对象(浏览器支持) (2)委托ajax引擎发送服务器请求(get/post) (3)根据web服务器响应结果状态,进行回调处理 (4)在回调函数中,进行浏览器局部刷新操作 ajax引擎的工作流程: 使用open函数传入客户端委托请求的各项参数; ajax引擎对象有一个 readyState 属性,该属性的发生变化时就会触发一个叫做 onreadystatechange 事件 ; onreadystatechange 事件所执行的函数就是所说的回调函数;也就是通过onreadystatechange 事件进行回调处理; ajax引擎中包含:http状态码(status)和ajax引擎自身状态码(readyState): http状态码由status属性表示:200/404/500 200: "OK" 404: 未找到页面 ajax引擎readyState状态:0/1/2/3/4 0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>原生的ajax处理</title> <script type="text/javascript"> // ajax请求处理函数 function doAjax() { console.log("正准备执行ajax请求"); // (1)创建ajax引擎对象 XMLHttprequest对象(浏览器支持) var xmlhttp; // 声明一个ajax引擎对象变量 if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } // (2)委托ajax引擎发送服务器请求(get/post) /* 第一个参数表示使用 get/post请求 第二个参数表示请求的服务器的url(也即是form表单的action属性) 第三个参数表示是否采用异步处理;默认是true,异步处理 */ // 获取form表单中的输入框控件的值 var userName = document.getElementById("userName").value; // document.getElementById("") 方法获取指定id的控件对象 xmlhttp.open("GET", "AjaxDemoServlet?userName=" + userName, true); // get请求 // ajax引擎发送请求到服务器 xmlhttp.send(); // get请求 // (3)根据web服务器响应结果状态,进行回调处理[给onreadystatechange事件绑定监听函数] xmlhttp.onreadystatechange = doCallBack; // (4)在回调函数中,进行浏览器局部刷新操作 function doCallBack() { // 服务器状态为200且ajax引擎状态为4时进行回调处理 // 在回调函数里面从 ajax引擎对象的 responseText 属性中获取服务器的响应内容 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // 局部刷新浏览器:使用js操作页面标签对象进行显示【dom操作】 document.getElementById("showMsg").innerHTML = xmlhttp.responseText; } } } / // ajax请求处理函数 function doAjax_post() { console.log("正准备执行ajax请求"); // (1)创建ajax引擎对象 XMLHttprequest对象(浏览器支持) var xmlhttp; // 声明一个ajax引擎对象变量 if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } // (2)委托ajax引擎发送服务器请求(get/post) /* 第一个参数表示使用 get/post请求 第二个参数表示请求的服务器的url(也即是form表单的action属性) 第三个参数表示是否采用异步处理;默认是true,异步处理 */ // 获取form表单中的输入框控件的值 var userName = document.getElementById("userName").value; // document.getElementById("") 方法获取指定id的控件对象 //xmlhttp.open("GET", "AjaxDemoServlet?userName=" + userName, true); // get请求 xmlhttp.open("POST", "AjaxDemoServlet", true); // ajax引擎发送请求到服务器 //xmlhttp.send(); // get请求 // 在post请求中需要设置request的header格式,否则服务器无法正确的 从 request中获取客户端发送的数据 xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); // 发送post请求 xmlhttp.send("userName="+ userName); // (3)根据web服务器响应结果状态,进行回调处理[给onreadystatechange事件绑定监听函数] xmlhttp.onreadystatechange = doCallBack; // (4)在回调函数中,进行浏览器局部刷新操作 function doCallBack() { // 服务器状态为200且ajax引擎状态为4时进行回调处理 // 在回调函数里面从 ajax引擎对象的 responseText 属性中获取服务器的响应内容 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { // 局部刷新浏览器:使用js操作页面标签对象进行显示 document.getElementById("showMsg").innerHTML = xmlhttp.responseText; } } } </script> </head> <body> <form> 用户名:<input type="text" id="userName" name="userName"> 会掉结果:<label id="showMsg"></label> <input type="button" value="ajaxDemo" onclick="doAjax()"> <input type="button" value="ajaxDemo_Post" onclick="doAjax_post()"> </form> </body> </html>

    ServletContext对象获取方式

    方法一:通过GenericServlet提供的 getServletContext() protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext servletContext3 = getServletContext(); } 方法二:通过ServletConfig提供的getServletContext() protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext servletContext2 = getServletConfig().getServletContext(); } 方法三:通过HttpServletRequest获取 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext servletContext1 = req.getServletContext(); } 方法四:通过HttpSession获取。 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext servletContext = req.getSession().getServletContext(); }

    cookie和session

    cookie和session的区别?  1、cookie数据存放在客户端,session数据放在服务器上。  2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。  3、session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器的性能,考虑性能应当使用cookie。  4、不同浏览器对cookie的数据大小限制不同,个数限制也不相同。  5、可以考虑将登陆信息等重要信息存放为session,不重要的信息可以放在cookie中。

    Cookie

    定义

    作用

    el表达式

    EL(Expression Language,表达式语言)是一种简单的语言,可以方便地访问和处理应用程序数据, 而无需使用JSP脚本元素(Scriptlet)或JSP表达式。 EL在容器默认配置下处于启用状态,每个JSP页面也可以通过page指令的isELIgnored属性单独设置其状态。

    编程

    cookie的获取的添加

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1.创建Cookie对象 Cookie cookie1 = new Cookie("cookie的属性名", "cookie的属性值"); // 2.配置Cookie对象 cookie1.setComment("Web Host Name"); // Cookie描述 cookie1.setMaxAge(24*60*60); // Cookie有效时间 //cookie1.setPath("/"); // Cookie有效路径 // 3.通过response对象将Cookie写入浏览器,当然需要解决中文乱码问题,否则会抛出异常 // java.lang.IllegalArgumentException: Control character in cookie value, consider BASE64 encoding your value response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); response.addCookie(cookie1); // 跳转到首页 response.sendRedirect("./index.jsp"); }

    cookie创建

    cookie的获取

    cookie访问路径

    cookie存活时间

    请求转发和重定向及参数传递

    public class UserLoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String strAdminName = request.getParameter("adminName"); String strAdminPsw = request.getParameter("adminPsw"); System.out.println("登录用户名:" + strAdminName + ";密码:" + strAdminPsw); request.setAttribute("loginedName", strAdminName); // 转发 logined.jsp页面(转发或重定向 二选一) request.getRequestDispatcher("logined.jsp").forward(request, response); // 重定向 logined.jsp页面(转发或重定向 二选一) //response.sendRedirect("logined.jsp"); } }

    前端页面循环显示集合信息

    <%-- Created by IntelliJ IDEA. User: Administrator Date: 2020/4/7 Time: 14:50 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>用户信息新增显示</title> <%-- 引入jquery资源文件:必须在bootstrap资源文件之前引入--%> <script type="text/javascript" src="jquery-1.12.4/jquery-1.12.4.js"></script> <%-- 引入bootstrap的资源文件--%> <script type="text/javascript" src="bootstrap-3.3.6-dist/js/bootstrap.js"></script> <link rel="stylesheet" type="text/css" href="bootstrap-3.3.6-dist/css/bootstrap.css"> </head> <body style="width: 100%;"> <div style="width: 90%;margin: 10px auto"> <div> <table class="table table-hover"> <thead> <tr> <th>序号</th> <th>姓名</th> <th>地址</th> <th>联系电话</th> <th>注册日期</th> </tr> </thead> <tbody> <c:forEach items="${sessionScope.lstAllUserInfo}" var="eachBean" varStatus="stat"> <tr> <th scope="row">${stat.index + 1}</th> <td>${eachBean.userName}</td> <td>${eachBean.userAddress}</td> <td>${eachBean.userTel}</td> <td>${eachBean.userRegDate}</td> </tr> </c:forEach> </tbody> </table> </div> </div> </body> </html>
    Processed: 0.012, SQL: 9