Java教程

JavaWeb自学(4)

本文主要是介绍JavaWeb自学(4),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

JavaWeb自学(4)

1、Cookie讲解

image-20210929173902939

image-20210929180709680

image-20210929183031909

image-20210929184850481

CookieDemo01.java

package top.gujiakai.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;

/**
 * Author: Gu Jiakai
 * Date: 2021/9/29 17:45
 * FileName: CookieDemo01
 * Description:
 */
//保存用户上一次访问的时问
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,服务器端从客户端获取呀;
        Cookie[] cookies = req.getCookies();//这里返回数组,说明cookie 可f能存在多个

        //判断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中的值
                    long lastLoginTime = Long.parseLong(cookie.getValue());
                    Date date = new Date(lastLoginTime);
                    out.write(date.toLocaleString());
                }
            }
        } else {
            out.write("这是您第一次访问本站");
        }

        //服务端给客户端响应一个cookie;
        Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");

        //cookie有效期为1天
        cookie.setMaxAge(24 * 60 * 60);
        resp.addCookie(cookie);
    }

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

CookieDemo02.java

package top.gujiakai.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;

/**
 * Author: Gu Jiakai
 * Date: 2021/9/29 17:45
 * FileName: CookieDemo01
 * Description:
 */
//保存用户上一次访问的时问
public class CookieDemo02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //创建一个cookie,名字必须要和要删除的名字一致
        Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
        //将cookie有效期设置为0,立马过期
        cookie.setMaxAge(0);
        resp.addCookie(cookie);
    }

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

CookieDemo03.java

package top.gujiakai.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;

/**
 * Author: Gu Jiakai
 * Date: 2021/9/29 18:37
 * FileName: CookieDemo03
 * Description:
 */
//中文数据传递
public class CookieDemo03 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");

        // cookie,服务器端从客户端获取呀;
        Cookie[] cookies = req.getCookies();//这里返回数组,说明cookie 可f能存在多个

        PrintWriter out = resp.getWriter();

        //判断Cookie是否存在
        if (cookies != null) {
            //如果存在怎么办
            out.write("你上次访问的时间是:");
            for (int i = 0; i < cookies.length; i++) {
                Cookie cookie = cookies[i];
                //获取cookie的名字
                if (cookie.getName().equals("name")) {
//                    System.out.println(cookie.getValue());
                    out.write(cookie.getValue());
                }
            }
        } else {
            out.write("这是您第一次访问本站");
        }

        Cookie cookie = new Cookie("name", "蔡伟");
        resp.addCookie(cookie);
    }

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

web.xml

    <servlet>
        <servlet-name>CookieDemo01</servlet-name>
        <servlet-class>top.gujiakai.servlet.CookieDemo01</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CookieDemo01</servlet-name>
        <url-pattern>/c1</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>CookieDemo02</servlet-name>
        <servlet-class>top.gujiakai.servlet.CookieDemo02</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CookieDemo02</servlet-name>
        <url-pattern>/c2</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>CookieDemo03</servlet-name>
        <servlet-class>top.gujiakai.servlet.CookieDemo03</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CookieDemo03</servlet-name>
        <url-pattern>/c3</url-pattern>
    </servlet-mapping>

2、Session讲解

image-20211001175203261

image-20211001183222758

SessionDemo01.java

package top.gujiakai.servlet;

import pojo.Person;

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;

/**
 * Author: Gu Jiakai
 * Date: 2021/10/1 17:41
 * FileName: SessionDemo01
 * Description:
 */
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", new Person("蔡伟", 5));

        //获得Session中的ID
        String sessionid = session.getId();

        //判断Session是不是新创建
        if (session.isNew()) {
            resp.getWriter().write("session创建成功,ID:" + sessionid);
        } else {
            resp.getWriter().write("session已经在服务器中存在了,ID:" + sessionid);
        }
    }

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

SessionDemo02.java

package top.gujiakai.servlet;

import pojo.Person;

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;

/**
 * Author: Gu Jiakai
 * Date: 2021/10/1 18:05
 * FileName: SessionDemo02
 * Description:
 */
public class SessionDemo02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决乱码问题
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("text/html;charset=utf-8");

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

        Person person = (Person) session.getAttribute("name");
        System.out.println(person.toString());
    }

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

SessionDemo03.java

package top.gujiakai.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;

/**
 * Author: Gu Jiakai
 * Date: 2021/10/1 18:14
 * FileName: SessionDemo03
 * Description:
 */
public class SessionDemo03 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        session.removeAttribute("name");
        session.invalidate();
    }

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

Person.java

package pojo;

/**
 * Author: Gu Jiakai
 * Date: 2021/10/1 18:09
 * FileName: Person
 * Description:
 */
public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

web.xml

<servlet>
    <servlet-name>SessionDemo01</servlet-name>
    <servlet-class>top.gujiakai.servlet.SessionDemo01</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SessionDemo01</servlet-name>
    <url-pattern>/s1</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>SessionDemo02</servlet-name>
    <servlet-class>top.gujiakai.servlet.SessionDemo02</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SessionDemo02</servlet-name>
    <url-pattern>/s2</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>SessionDemo03</servlet-name>
    <servlet-class>top.gujiakai.servlet.SessionDemo03</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SessionDemo03</servlet-name>
    <url-pattern>/s3</url-pattern>
</servlet-mapping>

<!--    设置session的默认失效时间。-->
<session-config>
    <!--        15分钟后session自动失效,以分钟为单位。-->
    <session-timeout>15</session-timeout>
</session-config>

3、JSP原理剖析

image-20211002090021962

image-20211002090558032

image-20211002091218331

image-20211002091340689

image-20211002091557848

image-20211002092312263

hello.jsp

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

<%
    String name="蔡伟";
%>

name:<%=name%>

</body>
</html>

4、JSP基础语法和指令

JSP表达式

<%--  JSP表达式--%>
<%--作用:用来将程序的输出输出到客户端。--%>
<%--<%=new 变量/表达式%>--%>
<%=new java.util.Date()%>

JSP脚本片段

<%--jsp脚本片段。--%>
<%
    int sum = 0;
    for (int i = 1; i < 100; i++) {
        sum += i;
    }
    out.println("<h1>Sum=" + sum + "</h1>");
%>
<%--脚本片段再实现--%>
<%
    int x=10;
    out.println(x);
%>
<p>这是一个JSP文档</p>
<%
    int y=2;
    out.println(y);
%>
<%--在代码嵌入HTML元素--%>
<%
    for (int i = 0; i < 5; i++) {
%>
<h1>Hello World <%=i%></h1>
<%
    }
%>

JSP声明

<%!
    static {
        System.out.println("Loading Servlet");
    }

    private int globalVar=0;

    public void kuang(){
        System.out.println("进入了方法kuang!");
    }
%>

image-20211003145728155

image-20211003153008283

5、JSP内置对象及作用域

image-20211004160354335

image-20211004160947444

pageContextDemo01.jsp

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

<%--内置对象--%>
<%
    pageContext.setAttribute("name1","蔡伟1号");//保存的数据只在一个页面中有效
    request.setAttribute("name2","蔡伟2号");////保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3","蔡伟3号");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute("name4","蔡伟4号");//保存的数据只在服务器中有效,从打开服务器到关闭服务器
%>

<%--脚本片段中的代码,会被原封不动生成到.JSP.java要求:
这里面的代码:必须保证Java语法的正确性
--%>
<%
    //从pagecontext取出,我们通过寻找的方式来
    //从底层到高层(作用域):page- >request-->session-->application
    String name1 = (String) pageContext.findAttribute("name1");
    String name2 = (String) pageContext.findAttribute("name2");
    String name3 = (String) pageContext.findAttribute("name3");
    String name4 = (String) pageContext.findAttribute("name4");
    String name5 = (String) pageContext.findAttribute("name5");

    pageContext.forward("/pageDemo02.jsp");
%>


<%--使用EL表达式输出 ${}--%>
<h1>取出的值为:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3>${name5}</h3>

</body>
</html>

pageDemo02.jsp

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


<%--使用EL表达式输出 ${}--%>
<h1>取出的值为:</h1>
<h3>${name1}</h3>
<h3>${name2}</h3>
<h3>${name3}</h3>
<h3>${name4}</h3>
<h3>${name5}</h3>

</body>
</html>

pageContextDemo03.jsp

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

<%
    pageContext.forward("/index.jsp");
%>
</body>
</html>
这篇关于JavaWeb自学(4)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!