第一章:Javaweb介绍

HTML:超文本标记语言
<html>
<head>
<title>   网页标题</title>
<meta charset="utf-8"></head>
<body>
网页显示内容
</body></html>html页面中由一对标签组成 :<html>   </html><html>称为开始标签</html>称之为结束标签
title表示网页的标题
可以在里面设置编码方式
<br/>表示换行 br标签是一个单标签
单标签:开始标签和结束标签是同一个 斜杠放在多次后面
p表示段落标签<img>表示图片标签1.相对路径
2.绝对路径3.标题标签:<h1></h1>
h1~h6
html是解释性语言被编译形语言4.有序列表标签:
<ol></ol>
参数type 表示显示的类型:A a...
start 表示从*开始5.无序列表ulcss  JavaScript HTMLjs是客户端运行的脚本语言 语法风格和Java比较相似
js是弱类型的语言  var str=""  根据等号后面的实际值来判断数据类型
js中的函数:function 函数名称(形参列表){}
DOM技术:鼠标悬浮:onmouseover event  srcElement  事件传递  parentElement style backgroundcolor
鼠标离开:onmouseout
鼠标点击:head/pointer onclick td innerText在DOm中的增删改查  绑定各种事件

第二章:服务器端编程

1.配置Tomcat服务器

Java/DB/JDBC
HTML/CSS/JS
CS:客户端服务器架构模式
优点:充分利用客户端的资源 减轻服务器的负荷一般安全要求下不高的计算存储任务放在客户端执行  不需要把所有的计算和存储都放在服务器端执行 从而减轻服务器的压力 也能减轻网络负荷缺点:需要安装客户端  ,升级维护成本较高BS: 浏览器服务器架构模式优点:客户端不需要安装 维护成本较低
缺点:因为所有的计算和存储都是在服务器端的  服务器的负荷较重  在服务器计算后才发送给客户端 一次客户端和服务器端会进行非常频繁的数据通信 从而网络负荷会比较重1.BS/cs
2.Tomcat
3.Servlet入门Tomcat介绍:
第一步:解压:解压的时候 不能存在空格特殊字符
第二步:目录结构说明:bin可执行文件目录 conf配置文件目录logs:日志文件目录webapps:项目部署目录work:工作目录temp:临时文件目录第三步:配置环境变量:使:Tomact能够跑起来:第四步:启动Tomact 然后访问主页第五步:新建项目 并在Tomact中部署:方法:打开:webapps新建一个项目名称 然后再这个名称下新建一个WEB-INF开始在浏览器中访问:找到bin目录里面的startup 点击开始如果启动不了 就进入电脑资源管理器 打开Tomcat服务在idea中部署项目:在module里面新建一个项目 然后 在Project Structure 中找到Facets 点+号配置Web模块 Tomact配置完成1.获取用户客户端发给我的数据
2.调用dao中的数据中的方法完成添加功能
3.在控制台打印添加成功由用户输入数据提交给服务器add--->AddServlet1.获取用户(客户端)发送给我的数据2.调用DAO中的方法完成添加功能3.在控制台打印添加 成功发送到服务器 之后调用数据库

2.Servlet介绍

index.html代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><!----><h1>计算机科学与技术学院</h1>
<!--设置好表单发送的请求类型为post-->
<form action="add" method="post">名称: <input type="text" name="fname"><br>价格: <input type="text" name="price"><br>库存:  <input type="text" name="fcount"><br>备注:  <input type="text" name="remark"><br><input type="submit" value="添加"></form></body>
</html>
servlet代码:
package com.atguigu;import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;public class servlets extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//        1.参数一 request(req)String fname = request.getParameter("fname");String price = request.getParameter("price");int i = Integer.parseInt(price);String fcount = request.getParameter("fcount");int i1 = Integer.parseInt(fcount);String remark = request.getParameter("remark");System.out.println("fname"+fname+"******"+"price"+price+"fcount"+fcount+"remark"+remark);}
}
web.xml模块配置代码:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><servlet><servlet-name>servlets</servlet-name><servlet-class>com.atguigu.servlets</servlet-class></servlet><servlet-mapping><servlet-name>servlets</servlet-name><url-pattern>/add</url-pattern></servlet-mapping><!--    1.用户发送请求 action=add2.项目中 web.xml文件中找到 url-pattern=/add 第14行
3.找到 servlet-name=servlets
4.找到和servlet-mapping中的servlet-name一致的servlet
找到servlet-class 就可以找到
用户发送的是post请求method=post  因此Tomcat会执行servlets中的doPost方法404 :找不到资源
-->
</web-app>

3.serVlet与review

项目---->模块1.新建项目--新建模块
2.在模块中添加web
3.创建artifact--部署包
4.Lib-artifect先有artifact  后来才添加的mysql.jar 此时 这个jar包并没有添加到部署包中 那么在projectSetting中有一个Problems 我们点击fix选择add to....另外我们也可以直接把lib文件夹直接新建在WEB—INF下
5.在部署的时候  修改Application Context 然后再回server检查URl的值  URL的值就是Tomcat启动完成后自动打开你指定的浏览器 然后默认访问的网址
启动后报错404  404意味着找不到指定的资源
6.405问题:当前请求的方法不支持  比如表单method=post  那么Servlet必须对应DoPost 否则会报405错误
7.空指针或者NumberFormatException 意味有价格和库存  如果价格取不到 结构你想对null进行Integer.pareInt()
就会报错 错误的原因大部分是name="peice" 此处写错了 结构在Servlet端还是使用request1.设置编码post方式下设置编码  防止中文编码//        post请求下设置编码 防止乱码request.setCharacterEncoding("UTF-8");//        如果是get请求下错误的中文数据  转码有点麻烦 (Tomcat
//        )  需要注意的是设置编码这一句代码必须要在所有的获取参数工作之前2.servlet的继承关系--1.继承关系Servlet接口:GenericServlet抽象类--2.相关方法:init(config) 初始化方法service(request,response)服务方法destory()  销毁方法javax.servlet.GenerServlet仍然是抽象的1.string method=req.getMethod()获取请求方式2.各种if判断 根据请求方式不同 决定调用不同的do方法3.小结:1.继承关系;httpServlet--->GenericServlet--->Servlet2.Servlet中的核心方法 init() service() destroy()服务方法:当有请求过来时 service()方法会自动响应 其实是Tomcat容器调用的在HttpServlet中我们会去分析请求的方式:到底是get  post 还是delete等然后再决定调用的是那个do开头的方法那么我们在HttpServlet中这些do方法都是405的实现风格
3.Servlet的生命周期--1.生命周期:从出生到死亡的过程叫做的生命周期 对应servelet中的三个方法init() service() destory()--2.默认情况下第一次接收请求时 这个Servlet会进行实例化 初始化 然后服务从第二次请求开始 每一次都是服务  当容器关闭时 其中的所有servlet实例会被销毁  调用销毁方法--3.通过昂立我们发现 servlet实例tomcat都只会创建一个  所有的请求都是这个实例去响应 默认情况下第一次请求时  Tomcat才会去实例化 初始化 然后再服务 这样子提高了启动速度  第一次请求时 耗时是较长的因此得出结论 如果需要提高系统的启动速度 当前默认情况是这样 如果需要提高响应速度 我们莺歌海设置serVlet的初始化时机--4.Servlet的初始化时机:默认是第一次接收请求时 实例化 初始化-我们可以通过<load-on-startup>1</load-on-startup>来设置servlet启动的先后顺序数字越小启动越靠前--5.Servlet在容器中是 单例的 线程不安全的--单例:所有的请求都是同一个实例去响应--线程不安全:一个线程需要工具这个实例中的某个成员变量值去做逻辑判断  但是在中间某个时机 另一个线程改变了这个成员变量的值 从而导致第一个线程的执行路径发生了变化
--我们已经知道了servlet是线程不安全的 给我们的启发是  尽量不雅在servlet中定义成员变量  如果不得不定义成员变量
那么就不要去根据成员变量的值去做一些逻辑判断<servlet><servlet-name>servlets</servlet-name><servlet-class>com.atguigu.servlets</servlet-class></servlet><servlet-mapping><servlet-name>servlets</servlet-name><url-pattern>/add</url-pattern><load-on-startup>1</load-on-startup></servlet-mapping>4.Http协议:超文本传输协议http request  http请求:http请求应包含两个部分:请求和响应--请求包含三个部分     1.请求行 :包含三个消息  1.请求的方式  2.请求的URl  3.请求的协议(一般都是HTTP1.1)请求的消息头包含了很多客户端需要告诉服务器的消息 比如浏览器型号 发送的内容消息请求体:三种情况:get方式 没有请求体  都是有一个queryStringpost方式:有请求体  form datajson格式:有请求体 request payload响应:也包含三部分1.响应行  2.响应头  3.响应体1.响应行包含三个消息  1.协议 2.协议状态码 3.响应状态200:正常响应404:找不到资源405:请求方式不支持500:服务器内部错误2.响应头:包含了服务器的信息 服务器发送给浏览器的消息(内部的媒体类型 编码 内容长度)3.响应体:响应的实际内容(比如请求add.html页面时 响应的内容就是html body head from....)5.会话6.Thymeleaf

第27节servlet-session会话跟踪技术

Javaweb教程(2023-1-10)相关推荐

  1. Python培训教程分享:10款超好用的Python开发工具

    学会Python技术后,我们在参加工作的时候如果能有辅助工具的话,那么会很大程度的提高我们的工作效率,那么Python都有哪些好用的开发工具呢?下面小编就为大家详细的介绍一下10款超好用的Python ...

  2. java web 请求跟踪_IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术

    原标题:IT兄弟连 JavaWeb教程 Servlet会话跟踪 Cookie技术 Cookie使用HTTPHeader传递数据.Cookie机制定义了两种报头,Set-Cookie报头和Cookie报 ...

  3. 【知识图谱】本周文献阅读笔记(3)——周二 2023.1.10:英文)知识图谱补全研究综述 + 网络安全知识图谱研究综述 + 知识图谱嵌入模型中的损失函数 + 图神经网络应用于知识图谱推理的研究综述

    声明:仅学习使用~ 对于各文献,目前仅是泛读形式,摘出我认为重要的点,并非按照原目录进行简单罗列! 另:鉴于阅读paper数目稍多,对paper内提到的多数模型暂未细致思考分析.目的是总结整理关于KG ...

  4. 【Mac 教程系列第 10 篇】如何在 Mac 上破解带有密码的 ZIP 压缩文件

    这是[Mac 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 我们知道如果是一般的压缩文件,可以用系统自带的或者很好用的压缩工具 Keka 来解压,但如果要解压的压缩文件设置了密码,这个时候 ...

  5. mulesoft MCIA 破釜沉舟备考 2023.02.10.01

    mulesoft MCIA 破釜沉舟备考 2023.02.10.01 1. What is a defining charcateristic of an integration-Platform-a ...

  6. 【Unity3D 教程系列第 10 篇】Unity 脚本中的生命周期流程图

    这是[Unity3D 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:生命周期流程图 二:常用的生命周期函数 三:脚本初始化和销毁 四:脚本的动态添加与静态添加 五:Awake ...

  7. 【JavaScript 教程系列第 10 篇】判断一个数是整数还是小数

    这是[JavaScript 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 思路 如果一个数是整数,那么 parseInt() 函数和 parseFloat() 函数的返回值是相同的,反之返 ...

  8. 【C# 教程系列第 10 篇】c# 中如何让指定类不能被继承?

    这是[C# 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. 有时候我们并不希望自己写的类被继承,怎么做呢? 方法很简单,只需要在定义类时加上 sealed 关键字,用 sealed 关键字声 ...

  9. 【Dart 教程系列第 10 篇】Dart 之 removeLast 删除数组的最后一个元素

    这是[Dart 教程系列第 10 篇],如果觉得有用的话,欢迎关注专栏. Dart 删除数组的最后一个元素,用 removeLast() 方法,该方法无参数,返回被删除对象. List<Stri ...

  10. 04 frameset-iframe【尚硅谷JavaWeb教程】

    04 frameset-iframe[尚硅谷JavaWeb教程] JAVAWEB的学习笔记 学习视频来自:https://www.bilibili.com/video/BV1AS4y177xJ/?vd ...

最新文章

  1. LeetCode刷题-4
  2. js的apply()与call()的区别
  3. php绘制历史曲线,thinkphp浏览历史功能实现方法
  4. 各省市数据中心机房工程新建项目汇总(2021年)
  5. boost::detail模块实现宏IS_SORTED的测试程序
  6. Android studio 混淆打包 proguard-rules.pro 与 bulid.gradle 配置总结
  7. MFC动态调用DLL
  8. HTML accesskey 属性
  9. windows虚拟声卡直播_【韭菜爱镰刀】高性价比的录音/直播设备推荐
  10. access口 环路_利用STP解决二层环路、实现链路冗余-stp文件怎么打开
  11. C ++ 的 背 影    ——C++之父Bjarne Stroustrup印象 左轻侯 2002.11.4
  12. 信道模型时延和路径增益:cost207,cost2100,cost259,cost273,SCM,I-METRA,WINNER II
  13. java 判断两个时间相差的天数
  14. Electron-forge使用实战
  15. fw150rm刷openwrt固件_迅捷FW150R刷TP741N后再刷Openwrt和DDWRT以及固件还原
  16. 从零开始搭建自己的个人博客网站
  17. 计算广告丨《互联网广告算法和系统实践》读书笔记
  18. 缓存穿透、击穿、雪崩
  19. 配置MAWEN环境变量,总是出错
  20. pytorch学习最全官网地址

热门文章

  1. EasyUI/TopJUI之如何动态改变下拉列表框ComboBox输入框的背景颜色
  2. IntelliJ IDEA Debug 快捷键
  3. 阿里达摩院做 AI 这两年
  4. 如何让Windows文件管理器滚动如macOS奶油般顺滑?
  5. win10下载后的背景图片在哪等背景图片位置的问题
  6. 布朗大学计算机科学博士怎样,数学差的人不配学计算机?布朗大学教授告诉你一毛钱关系都没有!...
  7. 军队文职(数学2+物理)——考试介绍
  8. 微信小程序基于node.js的websocket服务器搭建和SSL证书申请、配置全家桶
  9. 从源代码获取视频和封面图
  10. java坦克大战代码脚本之家,javascript制作坦克大战全纪录(1)