文章目录

  • 一、Cookie
    • 1.1 会话介绍
    • 1.2 Cookie介绍
    • 1.3 Cookie属性
    • 1.4 Cookie的方法
    • 1.5 Cookie的添加和获取
    • 1.6 Cookie的使用
    • 1.7 Cookie的细节
  • 二、Session
    • 2.1 HttpSession介绍
    • 2.2 HttpSession常用方法
    • 2.3 HttpSession获取
    • 2.4 HttpSession的使用
    • 2.5 HttpSession的细节
  • 三、Jsp
    • 3.1 JSP介绍
    • 3.2 JSP快速入门
    • 3.3 JSP执行过程
    • 3.4 JSP文件内容介绍
    • 3.5 Jsp语法
    • 3.6 JSP指令
    • 3.7 JSP细节
    • 3.8 MVC模型
  • 四、学生管理系统
    • 4.1 案例效果
    • 4.2 登录功能实现
    • 4.3 添加功能实现
    • 4.4 查看学生功能

一、Cookie

1.1 会话介绍

  • 会话: 浏览器和服务器之间的多次请求和响应。
  • 为了实现一些功能,浏览器和服务器之间可能会产生多次的请求和响应,从浏览器访问服务器开始,到访问服务器结束(关闭浏览器、到了过期时间)。这期间产生的多次请求和响应加在一起就称之为浏览器和服务器之间的一次会话。
  • 会话过程中所产性的一些数据,可以通过会话技术( Cookie和Session )保存。

1.2 Cookie介绍

  • Cookie :客户端会话管理技术
    把要共享的数据保存到客户端。
    每次请求时,把会话信息带到服务器端,从而实现多次请求的数据共享!
  • 作用:可以保存客户端访问网站的相关内容,从而保证每次访问时先从本地缓存中获取,以此提高效率!

1.3 Cookie属性

1.4 Cookie的方法

1.5 Cookie的添加和获取

1.6 Cookie的使用

  • 需求说明
    通过Cookie记录最后访问时间,并在浏览器上显示出来。
  • 最终目的.
    掌握Cookie的基本使用,从创建到添加客户端,再到从服务器端获取。
  • 实现步骤
    1.通过响应对象写出一一个提示信息。
    2.创建Cookie对象,指定name和value。
    3.设置Cookie最大存活时间。
    4.通过响应对象将Cookie对象添加到客户端。
    5.通过请求对象获取Cookie对象。
    6.将Cookie对象中的访问时间写出。
package com.itjc.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;/*Cookie的使用*/@WebServlet("/servletDemo01")
public class ServletDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.通过响应对象写出提示信息resp.setContentType("text/html;charset=UTF-8");PrintWriter pw = resp.getWriter();pw.write("欢迎访问本网站,您的最后访问时间为: <br>");//2.创建Cookie对象,用于记录最后访问时间Cookie cookie = new Cookie("time", System.currentTimeMillis() + "");//3.设置最大存活时间cookie.setMaxAge(3600);//4.将cookie对象添加到客户端resp.addCookie(cookie);//5.获取ookieCookie[] cookies = req.getCookies();for (Cookie c : cookies) {System.out.println(c);if ("time".equals(c.getName())) {// 6、获取cookie中的valueString value = c.getValue();
//                System.out.println(value);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");pw.write(sdf.format(new Date(Long.parseLong(value))));}}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

1.7 Cookie的细节

  • 数量限制
    每个网站最多只能有20个Cookie,且大小不能超过4KB。所有网站的Cookie总数不能超过300个。
  • 名称限制
    Cookie的名称只能包含ASCII码表中的字母、数字字符。不能包含逗号、分号、空格,不能以$开头。
    Cookie的值不支持中文。
  • 存活时间限制setMaxAge()方法接收数字
    负整数:当前会话有效,浏览器关闭则清除。
    0 :立即清除。
    正整数:以秒为单位设置存活时间。
  • 访问路径限制
    默认路径:取自第一次访问的资源路径前缀。 只要以这个路径开头就能访问到。
    设置路径: setPath()方法设置指定路径。

二、Session

2.1 HttpSession介绍

  • HttpSession :服务器端会话管理技术
    本质也是采用客户端会话管理技术。
    只不过在客户端保存的是一个特殊标识,而共享的数据保存到了服务器端的内存对象中。
    每次请求时,会将特殊标识带到服务器端,根据这个标识来找到对应的内存空间,从而实现数据共享!
    是Servlet规范中四大域对象之一-的会话域对象。
  • 作用:可以实现数据共享

2.2 HttpSession常用方法

2.3 HttpSession获取

  • HttpSession实现类对象是通过HttpServletRequest对象来获取。



2.4 HttpSession的使用

  • 需求说明
    通过第一个Servlet设置共享数据用户名,并在第=个Servlet获取到。
  • 最终目的
    掌握HttpSession的基本使用,如何获取和使用。
  • 实现步骤
    1.在第一个Servlet中获取请求的用户名。
    2.获取HttpSession对象。
    3.将用户名设置到共享数据中。
    4.在第1个Servlet中获取HttpSession对象。
    5.获取共享数据用户名。
    6.将获取到用户名响应给客户端浏览器。
package com.itjc.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebServlet("/servletDemo01")
public class ServletDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1. 获取请求的用户名String username = req.getParameter("username");//2.获取Ht tpSession的对象HttpSession session = req.getSession();System.out.println(session);System.out.println(session.getId());session.setAttribute("username", username);//3.将用户名信息添加到共享数据中}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}
package com.itjc.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.text.SimpleDateFormat;@WebServlet("/servletDemo02")
public class ServletDemo02 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.获取Ht tpSession的对象HttpSession session = req.getSession();System.out.println(session);System.out.println(session.getId());//2. 获取共享数据Object username = session.getAttribute("username");// 3、响应给浏览器resp.getWriter().write(username + "");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

2.5 HttpSession的细节

  • 唯一标识的查看
  • 浏览器禁用Cookie
    方式一:通过提示信息告知用户,大部分网站采用的解决方式。(推荐)
    方式二:访问时拼接jsessionid标识,通过encodeURL()方法重写地址。(了解)
  • 钝化和活化
  • 什么是钝化和活化
    钝化:序列化。把长时间不用,但还不到过期时间的HttpSession进行序列化,写到磁盘上。
    活化:相反的状态。
  • 何时钝化
    第一种情况:当访问量很大时,服务器会根据getLastAccessTime来进行排序,
    对长时间不用,但是还没到过期时间的HttpSession进行序列化。
    第二种情况:当服务器进行重启的时候,为了保持客户HttpSession中的数据,也要对其进行序列化。
  • 注意
    HttpSession的序列化由服务器自动完成,我们无需关心。

访问servletDemo01servletDemo02输出的结果

package com.itjc.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebServlet("/servletDemo03")
public class ServletDemo03 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=utf-8");//1.获取Ht tpSession的对象HttpSession session = req.getSession(false);if (session == null) {resp.getWriter().write("对不起,请解除对cookie的禁用再次尝试!");} else {System.out.println(session);System.out.println(session.getId());//2. 获取共享数据Object username = session.getAttribute("username");// 3、响应给浏览器resp.getWriter().write(username + "");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

方式二:访问时拼接jsessionid标识,通过encodeURL()方法重写地址。(了解)

package com.itjc.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;@WebServlet("/servletDemo01")
public class ServletDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1. 获取请求的用户名String username = req.getParameter("username");//2.获取Ht tpSession的对象HttpSession session = req.getSession();System.out.println(session);System.out.println(session.getId());//3.将用户名信息添加到共享数据中session.setAttribute("username", username);//实现url重写 相当于在地址栏中拼接了一个jessionidresp.getWriter().write("<a href='" + resp.encodeURL("http://localhost:8989/session/servletDemo03") + "'>go ServletDemo03</a>");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

1、request.setAttribute 作用域是请求和被请求页面之间。
request.setAttribute()是只在此action的下一个forward需要使用的时候使用 ;
request.setAttribute()可存放的参数是String和Object。
2、session.setAttribute 作用域是整个会话期间,在所有的页面都使用这些数据的时候使用。会话期间指的是浏览器打开该页面,到关闭。 一般用于存放用户信息。
request.setAttribute()可存放的参数是String和Object。

三、Jsp

3.1 JSP介绍

  • JSP(Java Server Pages) :是- -种动态网页技术标准。
  • JSP 部署在服务器上,可以处理客户端发送的请求,并根据请求内容动态的生成HTML、XML 或其他格式文档的Web网页,然后再响应给客户端。
  • JSP 是基于Java语言的,它的本质就是Servlet。

3.2 JSP快速入门

1.创建 一个web项目。
2.在web目录下创建一个index.jsp文件。
3.在文件中写一句内容为:这是我的第一个jsp
4.部署并启动项目。
5.通过浏览器测试。

3.3 JSP执行过程

3.4 JSP文件内容介绍


index_jsp

/** Generated by the Jasper component of Apache Tomcat* Version: Apache Tomcat/8.5.31* Generated at: 2021-09-18 03:51:35 UTC* Note: The last modified time of this file was set to*       the last modified time of the source file after*       generation to assist with modification tracking.*/
package org.apache.jsp;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;public final class index_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports {private static final javax.servlet.jsp.JspFactory _jspxFactory =javax.servlet.jsp.JspFactory.getDefaultFactory();private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;private static final java.util.Set<java.lang.String> _jspx_imports_packages;private static final java.util.Set<java.lang.String> _jspx_imports_classes;static {_jspx_imports_packages = new java.util.HashSet<>();_jspx_imports_packages.add("javax.servlet");_jspx_imports_packages.add("javax.servlet.http");_jspx_imports_packages.add("javax.servlet.jsp");_jspx_imports_classes = null;}private volatile javax.el.ExpressionFactory _el_expressionfactory;private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;public java.util.Map<java.lang.String,java.lang.Long> getDependants() {return _jspx_dependants;}public java.util.Set<java.lang.String> getPackageImports() {return _jspx_imports_packages;}public java.util.Set<java.lang.String> getClassImports() {return _jspx_imports_classes;}public javax.el.ExpressionFactory _jsp_getExpressionFactory() {if (_el_expressionfactory == null) {synchronized (this) {if (_el_expressionfactory == null) {_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();}}}return _el_expressionfactory;}public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {if (_jsp_instancemanager == null) {synchronized (this) {if (_jsp_instancemanager == null) {_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());}}}return _jsp_instancemanager;}public void _jspInit() {}public void _jspDestroy() {}public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)throws java.io.IOException, javax.servlet.ServletException {final java.lang.String _jspx_method = request.getMethod();if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");return;}final javax.servlet.jsp.PageContext pageContext;javax.servlet.http.HttpSession session = null;final javax.servlet.ServletContext application;final javax.servlet.ServletConfig config;javax.servlet.jsp.JspWriter out = null;final java.lang.Object page = this;javax.servlet.jsp.JspWriter _jspx_out = null;javax.servlet.jsp.PageContext _jspx_page_context = null;try {response.setContentType("text/html;charset=UTF-8");pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);_jspx_page_context = pageContext;application = pageContext.getServletContext();config = pageContext.getServletConfig();session = pageContext.getSession();out = pageContext.getOut();_jspx_out = out;out.write("\n");out.write("\n");out.write("<html>\n");out.write("<head>\n");out.write("    <title>$Title$</title>\n");out.write("</head>\n");out.write("<body>\n");out.write("<h1>第一个jsp页面</h1>\n");out.write("</body>\n");out.write("</html>\n");} catch (java.lang.Throwable t) {if (!(t instanceof javax.servlet.jsp.SkipPageException)){out = _jspx_out;if (out != null && out.getBufferSize() != 0)try {if (response.isCommitted()) {out.flush();} else {out.clearBuffer();}} catch (java.io.IOException e) {}if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);else throw new ServletException(t);}} finally {_jspxFactory.releasePageContext(_jspx_page_context);}}
}

HttpJspBase

package org.apache.jasper.runtime;import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.HttpJspPage;
import org.apache.jasper.compiler.Localizer;public abstract class HttpJspBase extends HttpServletimplements HttpJspPage
{private static final long serialVersionUID = 1L;public final void init(ServletConfig config)throws ServletException{super.init(config);jspInit();_jspInit();}public String getServletInfo(){return Localizer.getMessage("jsp.engine.info");}public final void destroy(){jspDestroy();_jspDestroy();}public final void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{_jspService(request, response);}public void jspInit(){}public void _jspInit(){}public void jspDestroy(){}protected void _jspDestroy(){}public abstract void _jspService(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse)throws ServletException, IOException;
}

3.5 Jsp语法

  • JSP注释
 < %--注释的内容--%>
  • Java 代码块
<%System. out. printIn( "He11o JSP");//普通输出语句,输出在控制台out. printIn("He11o JSP");//out是JspWriter对象,输出在页面上
%>
  • JSP 表达式
<%="He11o"%> //相当于out. print1n("He11o");
  • JSP声明
< %!声明变量或方法%>
//如果加!代表的是声明的是成员变量 方法一定要加!
//如果不加!代表的是声明的是局部变量

3.6 JSP指令

  • page 指令
<%@ page属性名=属性值属性名=属性值... %>

<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="/error.jsp" %>
  • include 指令:可以包含其他页面
<%@ include file=包含的页面%>
<%@include file="include.jsp" %> //使用其他页面的变量
  • taglib 指令:可以引入外部标签库
<%@ taglib uri=标签库的地址 prefix =前缀名称%>

3.7 JSP细节

  • 九大隐式对象
  • PageContext 对象
    是JSP独有的, Servlet中没有。
    是四大域对象之一的页面域对象,还可以操作其他3三个域对象中的属性。
    还可以获取其他八个隐式对象。
    生命周期是随着JSP的创建而存在,随着JSP的结束而消失。每个JSP页面都有一个PageContext对象。


  • 四大域对象

3.8 MVC模型

  • M(Model) :模型。用于封装数据,封装的是数据模型!
  • V(View) :视图。用于显示数据,动态资源用JSP页面,静态资源用HTML页面!
  • C(Controller) :控制器。用于处理请求和响应,例如Servlet !

四、学生管理系统

4.1 案例效果


4.2 登录功能实现

1.创建一个web项目。
2.在web目录下创建一个index:jsp.
3.在页面中获取会话域中的用户名,获取到了就显示添加和查看功能的超链接,没获取到就显示登录功能的超链接。
4.在web目录下创建一个loginjsp.实现登录页面。
5.创建LoginServlet ,获取用户名和密码。
6.如果用户名为空,则重定向到登录页面。
7.如果不为空,将用户名添加到会话域中,再重定向到首页。

创建一个web项目,在 web 目录下创建一个 index.jsp。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>学生管理系统首页</title>
</head>
<body><%--获取会话域中的数据如果获取到了则显示添加和查看功能的超链接如果没获取到则显示登录功能的超链接--%><% Object username = session.getAttribute("username");if(username == null) {%><a href="/stu/login.jsp">请登录</a><%} else {%><a href="/stu/addStudent.jsp">添加学生</a><a href="/stu/listStudentServlet">查看学生</a><%}%>
</body>
</html>

在 web 目录下创建一个 login.jsp。实现登录页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>学生登录</title>
</head>
<body><form action="/stu/loginStudentServlet" method="get" autocomplete="off">姓名:<input type="text" name="username"> <br>密码:<input type="password" name="password"> <br><button type="submit">登录</button></form>
</body>
</html>

3.1.3 创建 LoginStudentServlet,获取用户名和密码

package com.itheima.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*学生登录*/
@WebServlet("/loginStudentServlet")
public class LoginStudentServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.获取用户名和密码String username = req.getParameter("username");String password = req.getParameter("password");//2.判断用户名if(username == null || "".equals(username)) {//2.1用户名为空 重定向到登录页面resp.sendRedirect("/stu/login.jsp");return;}//2.2用户名不为空 将用户名存入会话域中req.getSession().setAttribute("username",username);//3.重定向到首页index.jspresp.sendRedirect("/stu/index.jsp");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

4.3 添加功能实现

在 web 目录下创建一个 addStudent.jsp,实现添加学生的表单项

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>添加学生</title>
</head>
<body>
<form action="/stu/addStudentServlet" method="get" autocomplete="off">学生姓名:<input type="text" name="username"> <br>学生年龄:<input type="number" name="age"> <br>学生成绩:<input type="number" name="score"> <br><button type="submit">保存</button>
</form>
</body>
</html>

创建 AddStudentServlet,获取学生信息并保存到文件中

package com.itheima.servlet;import com.itheima.bean.Student;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;/*实现添加功能*/
@WebServlet("/addStudentServlet")
public class AddStudentServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.获取表单中的数据String username = req.getParameter("username");String age = req.getParameter("age");String score = req.getParameter("score");//2.创建学生对象并赋值Student stu = new Student();stu.setUsername(username);stu.setAge(Integer.parseInt(age));stu.setScore(Integer.parseInt(score));//3.将学生对象的数据保存到d:\\stu.txt文件中BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\stu.txt",true));bw.write(stu.getUsername() + "," + stu.getAge() + "," + stu.getScore());bw.newLine();bw.close();//4.通过定时刷新功能响应给浏览器resp.setContentType("text/html;charset=UTF-8");resp.getWriter().write("添加成功。2秒后自动跳转到首页...");resp.setHeader("Refresh","2;URL=/stu/index.jsp");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

4.4 查看学生功能

创建 ListStudentServlet,读取文件中的学生信息到集合中

1、将集合添加到会话域中2、重定向到 listStudent.jsp 页面上
package com.itheima.servlet;import com.itheima.bean.Student;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;/*实现查看功能*/
@WebServlet("/listStudentServlet")
public class ListStudentServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.创建字符输入流对象,关联读取的文件BufferedReader br = new BufferedReader(new FileReader("d:\\stu.txt"));//2.创建集合对象,用于保存Student对象ArrayList<Student> list = new ArrayList<>();//3.循环读取文件中的数据,将数据封装到Student对象中。再把多个学生对象添加到集合中String line;while((line = br.readLine()) != null) {//张三,23,95Student stu = new Student();String[] arr = line.split(",");stu.setUsername(arr[0]);stu.setAge(Integer.parseInt(arr[1]));stu.setScore(Integer.parseInt(arr[2]));list.add(stu);}//4.将集合对象存入会话域中req.getSession().setAttribute("students",list);//5.重定向到学生列表页面resp.sendRedirect("/stu/listStudent.jsp");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req,resp);}
}

在 web 目录下创建一个 listStudent.jsp

<%@ page import="com.itheima.bean.Student" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>查看学生</title>
</head>
<body><table width="600px" border="1px"><tr><th>学生姓名</th><th>学生年龄</th><th>学生成绩</th></tr><% ArrayList<Student> students = (ArrayList<Student>) session.getAttribute("students");for(Student stu : students) {%><tr align="center"><td><%=stu.getUsername()%></td><td><%=stu.getAge()%></td><td><%=stu.getScore()%></td></tr><%}%></table>
</body>
</html>

JavaWeb核心|CookieSessionJsp相关推荐

  1. Javaweb核心之servlet规范过滤器-----Filter

    2 Servlet规范中的过滤器-Filter 2.1 过滤器入门 2.1.1 过滤器概念及作用 过滤器--Filter,它是JavaWeb三大组件之一.另外两个是Servlet和Listener. ...

  2. JavaWeb核心知识

    JavaWeb简介 Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站. JavaWeb:用Java技术来解决相关web互联网领域的技术栈. B/S架构:Browser/Server ...

  3. 一起复习:请求、响应、JavaWeb核心概念等知识

    文章目录 一.前言 二.XML简介 三.解析XML 四.dom4j解析技术 五.JavaWeb概念 六.部署工程到Tomcat 1.方式一 2.方式二 七.细节对比 八.总结 一.前言 大家好,我是卷 ...

  4. JavaWeb核心编程之Tomcat安装和配置

    什么是JavaWeb 在Sun的Java Servlet规范中, 对Java Web应用做了这样的定义: "Java Web应用由一组Servlet, HTML页面, 类, 以及其他可以被绑 ...

  5. JavaWeb核心常用API一览

    1.核心知识点 2.常用API

  6. Javaweb核心响应对象

    1 响应对象 1.1 响应对象概述 1.1.1 关于响应 响应,它表示了服务器端收到请求,同时也已经处理完成,把处理的结果告知用户.简单来说,指的就是服务器把请求的处理结果告知客户端.在B/S架构中, ...

  7. JavaWeb核心|EL表达式JSTLFilterListener

    文章目录 一.EL 表达式 1.1 EL表达式介绍 1.2 EL表达式快速入门 1.3 EL表达式获取数据 1.4 EL表达式运算符 1.5 EL表达式使用细节 1.6 EL表达式隐式对象 二.JST ...

  8. JavaWeb核心|Servlet

    文章目录 一.发布资源引入: 二.发布动态资源(Servlet基础) 三.Servlet 3.1 Servlet介绍 3.2 Servlet快速入门 3.3 Servlet执行过程 3.4 Servl ...

  9. Javaweb核心之servlet详解

    1 Servlet 1.1 Servlet概述 Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一.我们可以像学习Java基础一样,通过API来学习Ser ...

最新文章

  1. 轻雀协作客户最佳实践之A站
  2. 人工智能开放平台建设火热,AI发展未来可期
  3. mysql索引 钱缀_-MySQL索引背后的数据结构及算法原理--索引选择性与前缀索引
  4. Silverlight - Out of Browser配置,安装和卸载
  5. 网页css样式中英对照,css中文样式(含中英文对照表).doc
  6. java动态代理(JDK和cglib)
  7. java代码实现链表_java单链表代码实现
  8. UVA11427概率期望+独立重复事件
  9. 基础篇5-python基本数据类型讲解1.1
  10. Java 并发编程 --- ThreadPoolExecutor(五)
  11. 电力-101/104规约基础2
  12. 计算机中丢失d3dx9_26.dll,d3dx9_26.dll
  13. 计算机星形拓扑结构,星型拓扑结构
  14. LeetCode之K sum problem
  15. ALTREA cyclone IV e系列程序固化方法
  16. 云服务器无法连接怎么办
  17. 用20行代码读懂复仇者联盟的人物关系(无剧透)
  18. 疯狂脑机接口计划:马斯克的 “读心术”
  19. Windows Core Audio APIs(一)介绍
  20. 中国经济衰退 周期投资风向标

热门文章

  1. sql服务器显示error,SQL Server 出现Error: 1326错误(管理器无法连接远程数据库)问...
  2. 微信开放标签<wx-open-launch-app>之Vue项目H5唤醒APP
  3. matlab 绘制有效前沿和资本市场线
  4. 淘宝双11数据分析与预测
  5. maven是干嘛的_maven项目是干嘛的
  6. 浪潮集团入职技术培训(一)
  7. chrome浏览器登录谷歌账号显示“为安全起见,您无法从此设备登录。请稍后重试,或从其他设备登录”
  8. 《信号与系统》实验-使用 MATLAB 进行生成数字音乐、生成乐器音乐、音乐处理与添加音乐特效(题解)
  9. [UE][UE5]找资源的网站、好用的插件、找3D模型的网站
  10. 铲子哥,可在CentOS安装mysql数据库时铲土填坑