栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2021-11-1(java-web)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2021-11-1(java-web)

目录

一、Tomcat详解

二、http详解

什么是http

两个时代

http请求(request)

http响应

三、Maven详解

四、Servlet

        1.什么是servlet?

        2.配置环境变量?

        3.helloservlet

        4.servlet原理

         5.mapping:

        6.ServletContext

7.HttpServletResponse

8.HttpServletRequest

五、cookie

六、session


一、Tomcat详解

网站是如何进行访问的:

  1. 输入一个域名;
  2. 检查本机的C:\WindowsSystem32driversetchosts配置下有没有
    1. 有:直接返回相应的ip地址
    2. 没有:去DNS服务器上找   (全世界的域名都在这里)

二、http详解

什么是http

        http(超文本传输协议)是一个简单的请求-响应协议,通常运行在tcp之上。

                文本:html,字符串,......

                超文本:图片,音乐,视频,......

                端口:80

        https:安全的

                端口:443

两个时代

        http/1.0:客户端可以与web服务器链接后,只能获得一个web资源,断开连接

        http/1.1:客户端可以与web服务器链接后,可以获得多个web资源

http请求(request)

        客服端--发送请求--服务器

        请求行中的方式:get、post、head、delete、put

                get:请求能够携带的参数少,大小有限制,能在浏览器显示,不安全但高效

                post:大小没限制,安全但不高效

        消息头

http响应

        服务器--响应请求--客户端

        响应码:

                200:响应成功

                3××:请求重定向

                4××:资源不存在    404   403禁止访问

                5××:粗武器代码错误    500 502网关错误

三、Maven详解

maven项目架构管理工具(方便导入jar包的)

Maven的核心思想:约定大于配置

四、Servlet

        1.什么是servlet?

                编写一个类,实现servlet接口

                把开发好的部署到web服务器中

        2.配置环境变量?

                H2_HOME:   maven目录下的bin目录

                MAVEN_HOME:maven的目录

                在系统变量的path:%MAVEN_HOME%bin

        3.helloservlet

                1.构建一个maven项目,删掉src目录。

                2.关于父子工程:

                        父:会有module

                        子:parent

                3.Maven环境优化

                        修改web.xlm为最新的

                        将maven的结构搭建完整

                4.编写一个servlet程序

                        编写一个普通类

                        直接继承servlet接口,继承HttpServlet

                5.编写servlet的映射

                        

    
        hello
        com.kun.servlet.HelloServlet
    
    
        hello
        /hello
    

                6.配置tomcat

                7.启动测试

        4.servlet原理

 

         5.mapping:

                1.可以请求一个映射

                2.可以请求多个映射

                3.通配符 resp.sendRedirect("/r/img"); ///img

界面跳转:表单提交

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    


Hello World!
<%--这里提交的路径 需要找到项目的路径--%>
<%--${pageContext.request.getContextPath()}代表当前项目--%>
用户名:
密码:
  
    request
    com.kun.servlet.RequestTest
  
  
    request
    /login
  
System.out.println("进入请求");
//        处理请求
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        System.out.println(username);
        System.out.println(password);
//        重定向的时候一定要注意,当前路径问题
        resp.sendRedirect("/r/success.jsp");
    }
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


新界面


8.HttpServletRequest

代表客户端的请求,用户通过http协议访问服务器,http中所有的信息都被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端所有信息。

1.获取前端的值

package com.kun.servlet;

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.util.Arrays;

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String[] hobbies = req.getParameterValues("hobby");
//        后台接受乱码问题
        System.out.println(username);
        System.out.println(password);
        System.out.println(Arrays.toString(hobbies));
//        通过请求转发
//        req.getContextPath()=/req
        System.out.println(req.getContextPath());
        req.getRequestDispatcher("/success.jsp").forward(req,resp);   //转发不用加项目目录名
        //resp.sendRedirect("/req/success.jsp");      //重定向加路径名
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

五、cookie

1.会话:用户打开一个浏览器,点击了很多链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话

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

        1.服务器给客户一个cookie,客户端下次访问服务器带上cookie就可以了

        2.服务器登记你来过,下次你访问的时候来匹配你。

3.保存会话的两种技术

        cookie:客户端技术(响应和请求)

        session:服务器技术(利用整个技术,可以保存用户的会话信息,把信息放在session中)

cookie方法:

package com.kun.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.cookie;
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.Date;

public class cookieDemo01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
     //   resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=utf-8");
        PrintWriter out = resp.getWriter();
//        服务器从客户端获取
        cookie[] cookies = req.getcookies();
//        判断是否存在
        if (cookies!=null){
//           如果存在
            out.write("你上次访问的时间是:");
//            for(cookie cookie:cookies){ }
            for (int i = 0; i < cookies.length; i++) {
                cookie cookie = cookies[i];
                if (cookie.getName().equals("Time")){   // 获取cookie
                  //  cookie.getValue();   //获取cookie的值
                    long l = Long.parseLong(cookie.getValue());
                    Date date=new Date(l);
                    out.write(date.toLocaleString());
                }
            }
        }else {
            out.write("这是你第一次访问");
        }
//        服务器响应一个cookie
        cookie cookie = new cookie("Time",System.currentTimeMillis()+"");
        resp.addcookie(cookie);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}
cookie[] cookies = req.getcookies(); //获取所有cookie信息
cookie.getName()   //获取cookie的名称
cookie.getValue(); //获取cookie的值
//创建cookie
cookie cookie = new cookie("lastLoginTime", System.currentTimeMillis() + "");
cookie.setMaxAge(24 * 60 * 60); //设置cookie的有效期

cookie细节问题

  1. 一个cookie只能保存一个信息
  2. 一个web站点可以给浏览器大宋多个cookid,最多存放20个
  3. cookie大小限制4kb
  4. 上限大概为300个(浏览器上限)

删除cookie

  1. 设置有限期,关闭浏览器,自动失效
  2. 设置有限期为0

URLEncoder.encode("小明","utf-8")   // 编码   
URLDecoder.decode(cookie.getValue(),"UTF-8")    //    解码

cookie存放位置:C:Users14024AppData

六、session

1.什么是session?

  • 服务器会给每一个用户创建一个session对象
  • 一个session独占一个浏览器,只要浏览器没有关闭,这个session就不会消失
  • 用户登录,整个网站都可以访问——保存用户信息——保存购物。。。。

2.cookie和session区别

  1. cookie是把用户的数据写给用户的浏览器,浏览器去保存
  2. session是把用户的数据写到独占session中,服务器端保存

3.使用场景(保存用户信息——保存购物)

        存数据

package com.kun.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class SessionDemo01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决乱码问题
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");

        //得到session
        HttpSession session = req.getSession();

        //给session存东西
        session.setAttribute("name","小明");
//        Person person = new Person(18, "小明");
//        session.setAttribute("person",person);

        //获取session的Id
        String id = session.getId();
        //判断session是不是新创建
        if (session.isNew()){
            resp.getWriter().write("session 创建成功,ID"+id);
        }else {
            resp.getWriter().write("session 已经存在了"+id);
        }

        //session创建的时候做了什么事情
//        cookie cookie = new cookie("JSESSIONID", id);
//        resp.addcookie(cookie);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req,resp);
    }
}

取数据

package com.kun.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class SessionDemo02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决乱码问题
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");

        //得到session
        HttpSession session = req.getSession();

        //从session中获取数据
        String name = (String)session.getAttribute("name");
        //Person person = (Person)session.getAttribute("person");

        System.out.println(name);
        //System.out.println(person);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

4.注销session

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //解决乱码问题
    req.setCharacterEncoding("UTF-8");
    resp.setCharacterEncoding("UTF-8");
    resp.setContentType("text/html;charset=utf-8");

    //得到session
    HttpSession session = req.getSession();

    session.removeAttribute("name");

    //注销
    session.invalidate();

}
    

        15
    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425692.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号