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

会话管理往往需要多次请求,因为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>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_临渔_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值