Java web
目录
环境
下载tomcat
下载 8.5.7和9都可以
安装与卸载 tomcat
注意路径中不可以有中文
运行
第一步
注意 JAVA_HOME 一定要大写
就好了
第二步
后台开着黑窗 再
输入这个 http://127.0.0.1:8080/ 就说明好了
放自己的网页
这样就可以了
动态网页
什么是B\S架构
为什么要使用B\S架构
B\S架构工作原理
URL
HTTP 协议
HTTP 状态码
动态网页
资源分类
网络通信三要素
关于web服务器
下载 tomcar 见上
tamcat
tamcat 目录结构
启动tomcat
如果 黑窗一闪而过 见上面讲解
进程
进程一览
关闭
方式一
可以暴力关闭
方式二
Ctrl + C
有序关闭
项目部署
部署方式 简化版本
tomcar 集成 idea
出现下面这个就算成功了
步骤一
步骤二
创建 javaweb 项目
显示这个就说明,没有识别到,要重启软件
这样就完成了
2020 1月版本 idea
注意如果是 2020 1月的版本 操作如下
点开始
出现这个就好了
注意
出现下面这个
要关闭端口,即可解决
JSP 核心内置对象
最后呈现效果
可以实现跳转页面
JSP 内置对象
servlet
认识 servlet
创建一个 servlet
2020.1版本
2020.3 版本
配置对应关系
2020.1 版本
配置写法
注意 网页里什么都没有
但控制台里有 inti… service…
init 初始化方法
destroy 结束方法
注意
访问servlet
servlet 执行原理
servlet 3 简单配置方法
servlet 存在问题
更好用的类 HttpServlet
路径方面
修改虚拟路径
路径定义规则
网络请求与响应
HTTP 协议
请求消息数据格式
对比
get 与 post
常见的请求头
request 体系结构
package myServlet;
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("/*")
public class list extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("404");
String remoteAddr = req.getRemoteAddr();
System.out.println(remoteAddr);
String requestURI = req.getRequestURI();
System.out.println(requestURI);
String contextPath = req.getContextPath();
System.out.println(contextPath);
String queryString = req.getQueryString();
System.out.println(queryString);
}
}
request 对象获取请求头数据
演示
request 对象获取流对象
获取请求参数
拿参数对应的值
获取多个值
中文乱码问题
演练 用户登录
演示
request 对象的其他方法
请求转发
演练
获取用户输入并传数据
获取数据并欢迎
错误示例
可以看到发了一次请求
正确示例
request 作用域
响应
响应字符串
响应的组成
响应行的组成
响应状态吗
常见响应头
响应体
HTTP响应协议的组成内容
response对象
演示
package myServlet;
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;
import java.io.PrintWriter;
@WebServlet("/index")
public class index extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("欢迎访问");
//
PrintWriter writer = resp.getWriter();
writer.write("<h1>welcome</h1>");
}
}
重定向的的操作
演示
重定向的特点
路径的分类与写法
相对路径不带/ , 绝对路径加/ 而且必须加上 虚拟目录
这样写也可以进行跳转
绝对路径写法
动态获得虚拟目录
把响应内容数据变成 utf-8 数据
另一种写法
Servlet 对象
获取ServletContext对象
演示
另一个 servlet
获取文件真实路径
getRealPath 获取的是编译后文件
获取图片
编译后文件,应该放在这里面,不然不可以进行访问
cookie 回话技术
登录
解决登录大量用户长时间登录
用法
示例
新建一个布尔值的is_login 让他默认等于false
cookie 的生命
常见问题
代码
进行访问网页
过一会后
cookie 是否支持中文
cookie 数据是否共享
案例 欢迎网页
项目
青迅项目
页面
JSP
JSP 基础
为什么要用 JSP
JSP 的本质就是servlet
JSP 脚本
JSP 内置对象
out 对象
主要方法
使用out 对象可以输出
sout 显示在控制台里的
out 是显示在网页里的
session 对象
基本用法
获取session 对象
取值
设置值
原理
session 依赖cookie的
细节
客服端关闭 服务端不关 两次 session 是同一个么
session 生命周期
案例
登录
完成重定向
上面是获取 cookies 数组
JSP
JSP 头部格式
例子
page
常见指令
例子
page指令
演示
出错跳转到 error.jsp 这个网页
人为制造错误
error.jsp
页面编写
errorPage 页面
设置后可以获得报错信息
include
taglib 指令
导入标签库资源
el 表达式
体验
运算符
配置扩展
比较运算符
空运算符
逻辑运算符
获取域的值
session
request
servletContext
记得要先 new servletContext
page
当前页面 生效
pageScope.name
可以不写作用率,自己写值,按最小的来拿
获取域中对象
演示
获取域中的集合
演示
记得新建集合
el 表达式来拿
jsp 来拿
java工具 jstl and standard 的使用
环境的准备
一定要放在web 里面
使用记得导入
if 的用法
更多表达式
1
2
3
choose 用法
演示
注意这里的day 是objs 的类型的 ,但这里可以与int 类型做加减法,是因为见下图
forEach 遍历
示例
<%--输出十行--%>
<c:forEach begin="1" end="10" var="num" step="3" varStatus="status">
<p>当前的数据是${num},状态对象的序号${status.index},状态对象的编号是${status.count}</p>
</c:forEach>
遍历对象集合
示例 输出学生信息
新建小明类
package bean;
public class Student {
// 声明变量
private String name;
private int age;
// 字符串显示形态
@Override
public String toString() {
return "student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
// 提供构造方法
public Student() {
}
public Student(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;
}
}
jsp 页面
<%@ page import="java.util.Date" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="bean.Student" %><%--
Created by IntelliJ IDEA.
User: SSOA
Date: 2022/5/2
Time: 8:34
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
$END$
<c:if test="true">
<h1>你好</h1>
</c:if>
<c:if test="false">
<h1>你好</h1>
</c:if>
<%
Date date = new Date();
int day = date.getDay();
pageContext.setAttribute("day", day);
%>
<h1>
今天星期
<span style="color: red">
<c:choose>
<c:when test="${day == 0}">星期天</c:when>
<c:when test="${day == 1}">星期一</c:when>
<c:when test="${day == 2}">星期二</c:when>
<c:when test="${day == 3}">星期三</c:when>
<c:when test="${day == 4}">星期四</c:when>
<c:when test="${day == 5}">星期五</c:when>
<c:when test="${day == 6}">星期六</c:when>
<c:otherwise>数据获取异常</c:otherwise>
</c:choose>
</span>
</h1>
<h2>
明天星期
<span style="color: aqua">
<c:if test="${day+1 == 1}">星期一</c:if>
<c:if test="${day+1 == 2}">星期二</c:if>
</span>
</h2>
<%--输出十行--%>
<c:forEach begin="1" end="10" var="num" step="3" varStatus="status">
<p>当前的数据是${num},状态对象的序号${status.index},状态对象的编号是${status.count}</p>
</c:forEach>
<%--准备数据--%>
<%
// 来一个有序集合
ArrayList<Student> students = new ArrayList<Student>();
// 实例化学生对象
Student zs = new Student("张三", 16);
Student ls = new Student("李四", 20);
Student wa = new Student("王五", 14);
students.add(zs);
students.add(ls);
students.add(wa);
pageContext.setAttribute("studentList",students);
%>
<table width="600" border="1" cellpadding="0" cellspacing="0">
<caption><h1 >学生信息表</h1></caption>
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:forEach items="${studentList}" var="stu" varStatus="status">
<tr align="center"
<c:if test="${status.count%2==1}">
style="background-color: aqua"
</c:if>
>
<td>${status.count}</td>
<td>${stu.name}</td>
<td>${stu.age}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
三层架构
三层模型