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>

三层架构

三层模型



三层关系








本文详细介绍了JavaWeb环境的配置,包括Tomcat的下载、安装与卸载,动态网页的概念、B/S架构原理,以及HTTP协议、响应状态码等关键知识点。重点讲解了如何在Idea中创建和部署项目,涉及Servlet、JSP和Cookie回话技术的应用示例。
1万+

被折叠的 条评论
为什么被折叠?



