JavaWeb学习笔记

5 篇文章 0 订阅
2 篇文章 0 订阅

Servlet

简介

开发动态web的一门技术
1.编写一个类,实现Servlet接口
2.把开发好的Java类部署到web服务器中
把实现了Servlet接口的Java程序叫做Servlet

        this.getInitParameter("需要的参数名");//获得初始化的参数,
        this.getServletConfig();//servlet配置
        this.getServletContext();//servlet上下文
        context.getResourcePaths();//获取资源的路径
        context.getResourceAsStream();//获取资源把它变成流
        context.getRequestDispatcher();//转发

ServletContext

web容器在启动的时候,他会为每一个web程序都创建一个对应的ServletContext对象,他代表了当前的web应用;

作用:可以共享数据

  ServletContext context = this.getServletContext();//servlet上下文
        String username = "宋燚";//数据
        context.setAttribute("username",username);//将一个数据保存在了Servletcontext中
        //读取数据
        ServletContext context = this.getServletContext();
       String username = (String)context.getAttribute("username");

请求转发

访问一个页面地址,改地址可以显示其他网页,但是访问路径并不会改变

context.getRequestDispatcher("/DengLuUserServlet").forward(request,response);

读取资源文件

在这里插入图片描述

HttpServletletResponse(响应)

服务器收到请求后,针对这个请求创建response和request
简单分类

负责向浏览器发送数据的方法

        response.getOutputStream();//发送数据流
        response.getWriter();//一般中文用这个

负责向浏览器发送响应头的方法(我目前不知道方法的目的)

	response.setCharacterEncoding();
	response.setContentLength();
	response.setContentType();
	response.setDateHeader();
	response.setHeader();
	response.setIntHeader();

响应的状态码
常量,百度查询

常见应用

1.向浏览器输出消息(看前边)
2.下载文件
(1)获取下载文件的路径
(2)下载的文件名
(3)设置想办法让浏览器能够支持下载我们需要的东西
(4)获取下载文件的输入流
(5)创建缓冲区
(6)获取OutoutStream对象
(7)将FileOutputStream流写入到buffer缓冲区
(8)使用OutputStream将缓冲区中的数据输出到客户端

在这里插入图片描述
3.实现验证码

在这里插入图片描述
在这里插入图片描述
response重定向

response.sendRedirect();

用户登录实现

HttpServletletRequest(请求)

1.获取前端传递的参数
2.请求转发

Cookie、Session

会话

用户打开一个浏览器,点击了很多链接,访问多个资源,这个过程可以称之为会话
有状态会话:曾经访问过的,有记录的客户端再次访问

一个网站,怎么证明你来过?

方法1:服务端给客户端一个信件,客户端下次访问服务端带上信件就可以了;cookie

方法2:服务器登记你来过了,下次你来的时候我来匹配你;seesion

保存会话的两种技术:
cookie
客户端技术(响应,请求)

session
服务器技术,利用这个技术,可以保存用户的会话信息。可以吧信息或者数据放在Session中

Cookie

一个Cookie只能保存一个信息;
一个web站点可以给浏览器发送多个cookie(浏览器接受上限大概为300个);
cookie大小有限制4kb;

删除Cookie:
1.不设置有效期,关闭浏览器自动失效
2.设置有效期时间为0

cookie文件一般保存在用户目录的appdata下;

例子:首次登陆某个网站后,再次登录就不需要输入密码
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {
        response.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");

        PrintWriter out= response.getWriter();
        //保存用户上一次访问的时间
        //服务器告诉你你来的时间,把这个时间封装成一个信件,你下次来的时候带来,我就知道你来过了
        //cookie,服务器端从客户端获取
        Cookie[] cookies = request.getCookies();//可能有多个cookie,所以用数组
        //判断cookie是否存在
        if (cookies!=null){
            out.write("上次访问时间:");
            for (int i=0 ;i < cookies.length;i++){
                Cookie cookie = cookies[i];
                //获取cookie的名字
                if ( cookie.getName().equals("lastlogintime")){
                    //获取cookie的值
                    cookie.getValue();
                    Long l = Long.parseLong(cookie.getValue());
                    Date date = new Date(l);
                    out.write(date.toLocaleString());

                }
            }
        }else {
            out.write("这是您第一次访问本站");
        }
        //服务器给客户端响应一个cookie;
        Cookie cookie = new Cookie("lastlogintime",System.currentTimeMillis()+"");
        //cookie有效期为一天
        cookie.setMaxAge(24*60*60);
        
        response.addCookie(cookie);
        }

Session(重点)

服务器会给每一个用户(浏览器)创建一个Session对象
一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在;

Session在创建的时候,创建了一个Cookie,并且发送过去
例子:用户登录之后,整个网站他都可以访问–>保存购物车、用户的信息。。。
Session可以替代Context在跨servlet传递数据,常用在用户登录后的用户信息上

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException {
        response.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        
        //得到session
        HttpSession session = request.getSession();
        //给session存东西
        session.setAttribute("name","宋燚");
        //获取session的id
        String sessionid = session.getId();
        //判断session是不是新创建
        if (session.isNew()){
            response.getWriter().write("session创建成功:"+sessionid);
        }else {
            response.getWriter().write("服务器中存在:"+sessionid);
        }
        //
        //
    
    }

得到session
在这里插入图片描述
注销session
1.手动注销

在这里插入图片描述

2.在XML文件里配置session的过期时间
在这里插入图片描述

session与cookie的区别:
在这里插入图片描述

JSP

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

JSP基础语法和指令

在这里插入图片描述
JSP脚本片段
在这里插入图片描述
在这里插入图片描述
JSP声明
在这里插入图片描述
EL表达式
在这里插入图片描述
定制错误页面
xml
在这里插入图片描述
当网站有公用的头部时
第一种:
在这里插入图片描述
第二种:
在这里插入图片描述

内置对象

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用EL表达式取不存在的值,网页什么也不显示,使用jsp<%=%>取值,会显示null

使用场景

在这里插入图片描述

前端页面跳转

在这里插入图片描述

JSP标签、JSTL标签、EL表达式

在这里插入图片描述

JSP标签

在这里插入图片描述
取参数:
在这里插入图片描述

JSTL表达式

菜鸟教程标签库
https://www.runoob.com/jsp/jsp-jstl.html
核心标签库引入语句

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

在这里插入图片描述

if标签测试
在这里插入图片描述
set标签、choose、when标签测试
在这里插入图片描述
遍历:
在这里插入图片描述

EL表达式获取表单中的数据
在这里插入图片描述

JavaBean

在这里插入图片描述

ajax

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值