【web后端(六)】jsp、servlet_会话管理_url重写

[JavaWeb练习]servlet会话跟踪实现购物车 本题来自于郝玉龙的《JavaEE程序设计》第三章的习题 1.分析 之前尝试过cookie,但是遇到了setCookie无法生效的问题,因此本次用到的会话跟踪机制是session 本功能由一个商品页面和两个servlet组成,一个servlet负责存,另一个servlet负责展示(这个servlet也可以变成页面,虽然如此这个页面也需要一个对应的servlet进行对应的处理,因此这里直接用的servlet) 2.代码 2.1商品页面 对应代码:showcart.html: <!DOCTYPE ht. 阅读详情

会话管理往往需要多次请求,因为HTTP协议是一种无状态协议,难以记忆住状态。即只要一次请求,再接一次响应之后,之前的request数据就被销毁了。但是,我们在开发的时候,要记住状态的时候很多,至少我们要跨多个请求去完成任务。比如淘宝购物车。

 

url重写

下面是代码的运行结果:

我们要注意的是,当我们将鼠标放在链接上面时。对应页面左下角会出现一个id,这个是客户所要访问的页面的id。

而这里因为页面不记忆id,所以每次链接访问都是客户在点击的同时,链接将id发送到了客户端上面了。

 

我们来看看页面的源码:

我们可以看到页面源码中保存的id,即每个蓝色连接的id后面的数字,就叫url重写。将这些id保存在url里,用其以保存页面状态。当我们想看哪一个的详细信息时,便点开其链接即可。就会再次向服务器端发出请求,获取到维护在url里的id,而客户却不知道。

 

 

UrlRewriteServlet

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

public class UrlRewriteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /**
         * 取数据
         */
        List<News> list = News.newes;

        /**
         * 展示成表格
         */
        PrintWriter pw = resp.getWriter();
        /*
         *写表格
         */
        //格式化为表格输出到客户端
        pw.println("<table border='1'>");
        for(News s : list){
            pw.println("<tr>");
            pw.println("<td>");
            pw.println("<td>");
            pw.println(s.getId());
            pw.println("</td>");
            pw.println("<td>");
            //我们这里希望的是,
            //点这个title我们能访问到详细内容,
            //所以我们这里要做成链接。

            /**
             *url链接
             */
            //我们在写了detail链接之后,
            //还要将id写到url里。
            pw.println("<a href='/detas?id=" + s.getId() + "'>" + s.getTitle() + "</a>");

            pw.println("</td>");
            pw.println("<td>");

            //这里也是一个url重写,
            //它是要在一个servelet里头将该数据查出来,
            //然后发到表单里头去显示。
            pw.println("<a href='/uis?id=" + s.getId() + "'>UPDATE</a>");

            pw.println("</td>");
            pw.println("</tr>");
        }
        pw.println("</table>");
    }
}

 

News 


import java.util.ArrayList;
import java.util.List;

public class News {
    public static List<News> newes = new ArrayList<>();
    //这里我们要使用静态块,否则就要把它写到构造里。
    //这里的意思即类只要一加载的时候,静态的东西,
    //包括该块里的东西,就会被加入到newes静态集合里。
    //虽然可以用它维持页面状态,但是因为是静态的,
    //我们一般不用它。
    static {
        newes.add(new News(1112, "aaaa", "asfasdfsadf"));
        newes.add(new News(1113, "bbb", "adsfsadfsa"));
        newes.add(new News(1111, "ccc", "345345"));
    }
    private int id;

    public News(int id, String title, String content) {
        this.id = id;
        this.title = title;
        this.content = content;
    }

    private String title;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    private String content;
}

 

Student 


public class Student {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    private String sex;

    public Student(int id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }
}

 

xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">   
    <servlet>
        <servlet-name>UrlRewriteServlet</servlet-name>
        <servlet-class>edu.xalead.UrlRewriteServlet</servlet-class>
    </servlet>
   
    <servlet-mapping>
        <servlet-name>UrlRewriteServlet</servlet-name>
        <url-pattern>/urs</url-pattern>
    </servlet-mapping>
   
</web-app>

 

电子元器件-接口电路篇:RS-232、RS485/422、I2C、SPI、USB、网口 以上规定说明了RS-232C 标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的传输的电平为-3V~-15V,逻辑“0”传输的电平为+3V~+15V;对于控制信号;接通状态(ON)即信号有效的电平为+3V~+15V,断开状态(OFF)即信号无效的电平为-3V~-15V,也就是当传输电平的绝对值大于3V 时,电路可以有效地检查出来; 阅读详情

相关推荐

雪亮工程视频联网技术详解:视综平台主流接入方式与协议分析

随着雪亮工程建设的深入,视频资源的汇聚与共享成为核心需求。本文简要剖析了雪亮视综平台下的视频联网接入技术,重点讲解了主流接入方式的区别与选型,并深入探讨了平台内部及跨平台的视频资源共享机制(含级联与推送模式),旨在为安防开发人员和系统集成商提供清晰的架构思路与技术参考。

lsz152590的博客 716

javaweb之Session实现简单的购物(URL重写。Cookie重写指定有效日期)和简单的验证结论

package test.shopping; import java.io.IOException; import java.io.PrintWriter; import java.io.Serializable; import java.util.LinkedHashMap; import java.util.Map; import javax.servlet.ServletExceptio

我需要懂得努力 1391

PaddleOCR PP-OCRv5实战:5分钟搞定身份证信息提取(附完整代码)

本文详细介绍了如何利用PaddleOCR的PP-OCRv5模型,在5分钟内快速搭建身份证信息提取流程。文章从环境搭建、核心代码实战出发,深入解析了PP-OCRv5针对证件识别的优化特性,并提供了从OCR结果到结构化数据的完整处理方案与避坑指南,帮助开发者高效实现AI驱动的自动化信息提取。

salt9的博客 782

用URL重写来实现会话管理

通常,会话管理是通过服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中来唯一标识每个用户会话。如果浏览器不支持 cookies,或者将浏览器设置为不接受 cookies,我们可以通过 URL 重写来实现会话管理。    实质上 URL 重写是通过向 URL 连接添加参数,并把 session ID 作为值包含在连接中。然而,为使这生效,你需要为你的 ser

ning109314的专栏 2003

C51红外接收与发射控制及原理编码与解码

基于38khz的NEC协议红外发射简易电路图NEC协议产生红外光数据编码 0 1结合程序红外接收接收电路解码过程解码代码 红外发射 通过通过红外二极管发射红外光,三极管的状态来控制。 红外模块一般都是三个引脚,vcc,gnd,dat,通过控制dat口的来控制发射红外光。 简易电路图 将数据口连接到单片机的引脚为上,控制io口的电平状态,来控制三极管的导通状态,从而发射红外光。 NEC协议 NEC协议特点:8位地址和8位命令为提高可靠性,地址和命令都传输2次,脉冲间隔调制38kHz载波频率。 包含引导码,

yangfeng20的博客 1万+

CH592F RISC-V蓝牙LED灯设计:WS2812B驱动与微信小程序控制

蓝牙低功耗(BLE)是嵌入式物联网设备主流无线通信技术,其核心在于协议栈轻量化、射频稳定性与外设协同调度。基于RISC-V内核的蓝牙SoC(如CH592F)凭借高集成度、低待机电流和免外部巴伦的射频设计,显著降低硬件复杂度与BOM成本;而WS2812B作为单线级联RGB LED,依赖微秒级精准时序,需借助定时器+DMA机制规避CPU干预,保障动态效果流畅性。该方案融合电容触摸交互、GATT服务自定义与微信小程序标准Bluetooth API对接,适用于智能照明、DIY彩灯及教学实践等场景,是BLE+LED实

weixin_31163455的博客 433

使用Servlet和JSP开发Java应用程序 ---- 管理会话

使用Servlet和JSP开发Java应用程序 ---- 管理会话1. 何为管理会话思考会话(Session)2. 为何需要会话管理技术3. 会话管理技术4. 表单隐藏字段 - (Hidden Field)5. URL 重写 - (URL Rewriting)6. Cookie - (客户端技术)7. Session API - (服务器端技术) 1. 何为管理会话 思考 为何登录一个系统,过了一段时间需要重新登录? 两次添加购物车,服务器怎么知道是同一个用户添加的? 会话(Session) 用户打开

是微风,是晚霞,是无可替代 2344

Cadence PSpice 仿真6:反向放大器傅里叶仿真(FFT,谐波分析)实战图文教程

总谐波失真(THD)指音频信号源通过功率放大器时,由于非线性元件所引起的输出信号比输入信号多出的额外谐波成分。比如理想运放输出为5V 1Khz的正玄波时,实际输出的信号按照傅里叶展开后不但含有5V 1KHZ的分量,还有1V 2KHZ的分量,那么多出来的1V的分量就是二次谐波,二次谐波失真系数就是20%,由于任意1个波形按照傅里叶展开是可以展开到n次的,所以除了二次谐波外,输出的信号还有3,4,5……n次谐波,随着n的变大谐波的分量会变小,总谐波失真系数就是所有谐波分量和1次谐波(基波)的比值。Cadence

fydar的博客 4955

java Servlet & JSP 中 会话管理(Cookie、Session)

文章摘要: HTTP协议本身无状态,但实际应用需要识别用户会话。Servlet/JSP提供两种主要会话管理机制:Cookie(客户端存储键值对,简单但不安全)和Session(服务端存储数据,安全但占用资源)。Cookie通过Set-Cookie/请求头自动传递,适合存储简单数据;Session依赖JSESSIONID标识,可存复杂对象,需注意内存管理和分布式同步。禁用Cookie时可使用URL重写传递SessionID。典型应用如登录验证,通过Session保存用户状态,Cookie则用于记住基础信息。两

DeppBing的博客,全栈修炼记|记录一个开发者的进化轨迹 576

图像处理:张量分解在图像处理领域的应用

随着计算机视觉和图像处理技术的快速发展,图像数据呈现出高维、多模态、海量等特点。传统的矩阵分解方法已经无法有效处理这些复杂的图像数据。张量分解作为一种高阶矩阵分解方法,可以很好地捕捉图像数据的高维结构信息,在图像处理领域展现出巨大的应用前景。本节介绍几种常用的张量分解算法,包括高阶SVD(HOSVD)、Tucker-ALS、CP-ALS等。这些算法的核心思想是通过迭代优化的方式,交替更新张量分解的因子矩阵,直到收敛为止。综上所述,本文系统地介绍了张量分解技术在图像处理领域的应用。

AI天才研究院 7102

PyCharm安装PyQt5及工具详细教程

PyCharm是一款功能强大的Python集成开发环境(IDE),而PyQt5是一个用于创建GUI应用程序的流行Python库。在本教程中,我将指导您如何在PyCharm中安装PyQt5及其相关工具,并提供相应的源代码示例。安装完成后,启动PyCharm并创建一个新的项目。为了隔离项目的依赖项,我们建议在PyCharm中使用虚拟环境。在创建项目的过程中,您可以选择创建新的虚拟环境或使用现有的环境。根据您的操作系统,选择适当的版本并按照安装向导的指示进行安装。首先,您需要下载并安装PyCharm。

CfProgram的博客 588

Servlet JSP和Spring MVC初学指南

最近系统学习了下servlet,JSP和spring MVC的知识,推荐一本入门参考书《Servlet、JSP和Spring MVC初学指南》,作者是加拿大人Budi Kurniawan和美国人Paul Deck,林仪民、俞黎敏译。该书共24章,主要分为两部分,第一部分讲解Servlet的相关知识;第二部分讲解Spring MVC。书中每一章中都配有代码,可以对着书本敲一下,加深理解。 首先,什么...

nfzhlk的专栏 3922

华为Ascend C算子开发能力认证(中级)(个人记录,有完整代码,已通过认证,仅供参考)

本文介绍了在昇腾NPU环境下实现Sigmoid算子的完整流程。首先需要在华为云ModelArts-Notebook或开发者套件上搭建环境,要求CANN版本为8.0.0.beta1。主要内容包括:1)实现SigmoidCustom算子的kernel侧核函数代码;2)完成host侧Tiling结构体实现;3)支持Float16数据类型。代码实现部分详细展示了核函数计算流程、数据拷贝和牛顿迭代优化方法。最后介绍了编译部署流程,包括环境配置、代码上传、编译执行等步骤,并提供了提交规范说明。该实现通过调用Ascend

qq_73044452的博客 1107

Servlet与JSP学习 三、会话管理

会话 对于用户的第一次请求,容器会生成一个唯一的会话id,并通过响应把它返回给客户。客户再在以后的每一个请求中发回这个会话id。容器看到id后,就会找到匹配的会话,并把这个会话与请求关联。 容器必须以某种方式把会话id作为响应的一部分交给客户,而客户必须把会话id作为请求的一部分发回。 那客户和容器如何交换会话id和信息呢? 最简单,最常用的方式是通过 cookie 交换信息。Cookie 只是...

DriedAnchovy的博客 201

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

servlet中的会话管理

Web应用程序的请求与响应是基于HTTP,为无状态的通信协议,服务器不会"记得"这次请求与下一次的请求之间的关系.然而有些功能是必须由多次请求来完成,例如当用户在多个网页之间采购物品时,WEB应用程序必须有个方式来"得知"用户在这些网页采购了哪些商品,这种记得此次请求与之后请求间关系的方式称为会话管理.           实现会话管理有几个基本方式.如隐藏域,Cookie与URL重写.

hjh_walker的博客 912

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Web会话管理

1.会话管理基本原理 1.隐藏域 将表单中的内容在显示页面时隐藏,不显示数据,在JSP 中将input标签type设置为hidden 生成一个隐藏表单域。将会话的唯一标识记录到隐藏域中的value值中,并设定name值。提交给服务器之后,服务器会根据根据会话标识找到会话对象。 缺点:实现比较麻烦,安全性差,不适合隐秘性的数据 2.cookie 服务端保存会话对象中设定会话的唯一标识,客户端将会话标识存在cookie中,当浏览器发送请求时从cookie取得会话标识发给服务端。 3.URL重写 在URL地址末尾

qq_46337496的博客 1389

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Java Web学习之HttpSession URL重写技术

一、前言 在我们学习session的时候,我们知道:当服务器创建session出来后,会把session的id号,以cookie的形式回写给客户端,这样,只要客户端的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户端浏览器带session id过来了,就会检索这个id,然后找到服务器中与之对应的session为之服务。 但是,cookie可以被人为的禁止,则必须有其他...

weixin_46384544的博客 618

JavaWeb基础 (三):JSP 基础与会话管理

目录JavaWeb基础 (三):JSP 基础与会话管理JSP 概述JSP 基本语法JSP 隐式对象 (九大内置对象)reques 常用方法response 常用方法会话管理URL 重写隐藏域Sessionsession的常用方法Cookiecookie的常用方法小结:Session 和 Cookie的区别 JavaWeb基础 (三):JSP 基础与会话管理 JSP是构建在Java Web应用程序上的第二种技术,是Servlet技术的补充,而不是取代Servlet技术。 JSP本质即Servlet,本文通过

madbeen 615

cookies禁用后使用url重写的方式使用session

(1) session总是放在服务器上的,每个客户会跟一个sessionID对应。因为HTTP是无连接的,如何区分同一个客户的多次请求呢,就需要客户端每次发请求的时候,发送相应的sessionID。 通常情况下,sessionID在客户端以cookie的形式保存。如果浏览器静止了cookie,客户端再向服务器发请求的时候,就不会发送sessionID,因此服务器就会将这个请求作为一个新客户

huihui870311的专栏 4004

[Servlet 3]会话管理、进阶API、监听过滤器

Java Servlet3:会话管理,进阶API,监听器与过滤器的实现

JacinLee的博客 506

Web开发核心技术实战:从CSS布局到Servlet会话管理

本文系统讲解了Web开发的核心技术实战,涵盖CSS+DIV布局的现代基石地位、JSP/Servlet中四种页面参数传递方式、JSP内置对象的作用域与使用、Servlet会话管理机制,以及请求转发与重定向的本质区别。文章结合实战经验与高频面试题,帮助开发者构建清晰、可维护的Web应用架构。

tree的博客 732

第五节Servlet总结(隐藏表单和重写url)

杂记: 页面超时:代码里session 优先级最大 项目工程里 web xml 超时其次 Tomcat的web xml 文件中最弱 初始化时间为30分钟 1.会话跟踪 url重写(因为cookie可能会暴露用户的信息 所以客户端不保存cookie信息,每次使用时给一个随机的牌子 需要进行重写) 2.隐藏表单(少量的数据可以使用这个方法 关键字:hidden getParameter ) //...

aahaomingzi的博客 259

URL 重写来实现会话管理

转自:http://www.javaeye.com/topic/620288版权声明:本文所有版权归原作者所有 通常,会话管理是通过服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中来唯一标识每个用户会话。如果浏览器不支持 cookies,或者将浏览器设置为不接受 cookies,我们可以通过 URL 重写来实现会话管理。   实质上 URL 重写是

浮白 1008

servlet url 重写实现session跟踪

利用URL重写实现Session跟踪     1> Servlet规范中引入了一种补充的会话管理机制,它允许不支持Cookie的浏览器也可以与WEB服务器保持连续的会话。        这种补充机制要求在响应消息的实体内容中必须包含下一次请求的超链接,        并将会话标识号作为超链接的URL地址的一个特殊参数    2> 将会话标识号以参数形式附加在超链接的URL地址后面的技术称为U

hellowindowns的博客 1731

Session, Cookie, Url重写与Wap

  本文的目的是搞清楚Session, Cookie, Url重写这些概念, 然后在这个基础上阐述如何利用Url重写在Wap门户的开发中维护Session. 什么是Session, 什么是Cookie?Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID为标识符来存取服务器端的Session

徐明明的博客 4372

JSP实现浏览器关闭cookies情况下的会话管理

通常,会话管理是通过服务器将 Session ID 作为一个 cookie 存储在用户的 Web 浏览器中来唯一标识每个用户会话。如果浏览器不支持 cookies,或者将浏览器设置为不接受 cookies,我们可以通过 URL 重写来实现会话管理。   实质上 URL 重写是通过向 URL 连接添加参数,并把 session ID 作为值包含在连接中。然而,为使这生效,你需要为你的 servlet

yeliang的专栏 796
上一篇: 【web后端(五)】jsp、servlet_request在组件间传递数据
下一篇: 【web后端(七)】jsp、servlet_会话管理_隐藏域
寻爻青年
博客等级 码龄8年 27粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻爻青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值