前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap

早期javeweb技术 JSP JDBC JSTJ Servlet BooStrap

作者头像
Qiuner
发布2024-07-19 15:56:37
830
发布2024-07-19 15:56:37
举报
文章被收录于专栏:杂烩

jar包放在web-web-inf中

Boot strap框架

image-20230925174239682
image-20230925174239682
image-20230926145307531
image-20230926145307531
  • container是两边留白
  • container-fluid是每种设备都100%宽度
image-20230926145639211
image-20230926145639211
  • 剩下的去看开发文档就好

XML

image-20230926150548069
image-20230926150548069
image-20230926150717232
image-20230926150717232
image-20230926151058425
image-20230926151058425

Servlet技术

  • 翻译为 小服务程序
  • 用来处理http请求和生成http相应的一个接口
  • 可以有多个servlet,因为不同的网址需要不同的servlet来处理:比如访问https://www.baidu.com/是一个servlet来处理,访问https://www.baidu.com/11 是另一个来处理
  • 是一个继承了servlet的类
image-20230926152037109
image-20230926152037109
  • 使用servlet来指定要访问继承了Servlet的java类的位置与名字。
  • 使用servlet—mapping指定访问的具体地址
image-20231007110031802
image-20231007110031802
  • 访问demo1时,服务器打印
image-20231007110109022
image-20231007110109022
image-20230926152143052
image-20230926152143052
image-20230926154832431
image-20230926154832431
执行原理与生命周期
  • 可以有多个servlet来处理不同的请求,但同一个请求只会有一个servlet
image-20230926160108423
image-20230926160108423
image-20230926160037232
image-20230926160037232
image-20231007111153054
image-20231007111153054
子类与具体应用
image-20231007112825376
image-20231007112825376
image-20231007112924582
image-20231007112924582
  • 使用Httpservlet的可以对不同的请求方式做出不同的反应,省去了编写判断请求方式来不同响应的步骤
代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用表单来实现不同的请求方式</title>
</head>
<body>
<form action="demo" method="post">
  <input name="username">
  <input type="submit" value="提交">
</form>
</body>
</html>
注解的使用
  • 可以使用 * 来使得无论输入什么都可以访问。
  • *.do表示后缀一定要是do才能访问到
Http
HTTP协议
HTTP协议
代码语言:javascript
复制
* 概念:Hyper Text Transfer Protocol 超文本传输协议
	* 传输协议:定义了,客户端和服务器端通信时,发送数据的格式
	* 特点:
		1. 基于TCP/IP的高级协议
		2. 默认端口号:80
		3. 基于请求/响应模型的:一次请求对应一次响应
		4. 无状态的:每次请求之间相互独立,不能交互数据

	* 历史版本:
		* 1.0:每一次请求响应都会建立新的连接
		* 1.1:复用连接

* 请求消息数据格式
	1. 请求行
		请求方式 请求url 请求协议/版本
		GET /login.html	HTTP/1.1

		* 请求方式:
			* HTTP协议有7中请求方式,常用的有2种
				* GET:
					1. 请求参数在请求行中,在url后。
					2. 请求的url长度有限制的
					3. 不太安全
				* POST:
					1. 请求参数在请求体中
					2. 请求的url长度没有限制的
					3. 相对安全
	2. 请求头:客户端浏览器告诉服务器一些信息
		请求头名称: 请求头值
		* 常见的请求头:
			1. User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
				* 可以在服务器端获取该头的信息,解决浏览器的兼容性问题

			2. Referer:http://localhost/login.html
				* 告诉服务器,我(当前请求)从哪里来?
					* 作用:
						1. 防盗链:通过判断请求来源防止盗链
						2. 统计工作:通过判断实现
	3. 请求空行
		空行,就是用于分割POST请求的请求头,和请求体的。
	4. 请求体(正文):
		* 封装POST请求消息的请求参数的

	* 字符串格式:
		POST /login.html	HTTP/1.1
		Host: localhost
		User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
		Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
		Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
		Accept-Encoding: gzip, deflate
		Referer: http://localhost/login.html
		Connection: keep-alive
		Upgrade-Insecure-Requests: 1
		
		username=zhangsan	
Referer请求头
Referer请求头
  • 使用Referer来防止盗链
Request
image-20231007161715711
image-20231007161715711
获取请求传递的参数
代码语言:javascript
复制
request对象和response对象的原理
request和response对象是由服务器创建的。我们来使用它们
request对象是来获取请求消息,response对象是来设置响应消息
request对象继承体系结构:	
   		ServletRequest		--	接口
   				|	继承
   		HttpServletRequest	-- 接口
   				|	实现
   	org.apache.catalina.connector.RequestFacade 类(tomcat编写)
request功能:
   1. 获取请求消息数据
   	1. 获取请求行数据
   //以下是一个请求
   		* GET /day14/demo1?name=zhangsan HTTP/1.1
   		* 方法:
   			1. 获取请求方式 :GET
   				* String getMethod()  
   			2. (*)获取虚拟目录:/day14(重要)
   				* String getContextPath()
   			3. 获取Servlet路径: /demo1
   				* String getServletPath()
   			4. 获取get方式请求参数:name=zhangsan
   				* String getQueryString()
   			5. (*)获取请求URI:/day14/demo1(重要)
   				* String getRequestURI():		/day14/demo1
   				* StringBuffer getRequestURL()  :http://localhost/day14/demo1

   				* URL:统一资源定位符 : http://localhost/day14/demo1	中华人民共和国
   				* URI:统一资源标识符 : /day14/demo1					共和国
   			
   			6. 获取协议及版本:HTTP/1.1
   				* String getProtocol()

   			7. 获取客户机的IP地址:
   				* String getRemoteAddr()
   			
   	2. 获取请求头数据
   		* 方法:
   			* (*)String getHeader(String name):通过请求头的名称获取请求头的值(重要)
   			* Enumeration<String> getHeaderNames():获取所有的请求头名称
   		
   	3. 获取请求体数据:
   		* 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
   		* 步骤:
   			1. 获取流对象
   				*  BufferedReader getReader():获取字符输入流,只能操作字符数据
   				*  ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据
   					* 在文件上传知识点后讲解

   			2. 再从流对象中拿数据
解决编码
代码语言:javascript
复制
2. 其他功能:
		1. 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方法来获取请求参数
			1. String getParameter(String name):根据参数名称获取参数值    username=zs&password=123
			2. String[] getParameterValues(String name):根据参数名称获取参数值的数组  hobby=xx&hobby=game
    //用于复选框
			3. Enumeration<String> getParameterNames():获取所有请求的参数名称
			4. Map<String,String[]> getParameterMap():获取所有参数的map集合
	//把对应的键和值都拿到
			* 中文乱码问题:
				* get方式:tomcat 8 已经将get方式乱码问题解决了
				* post方式:会乱码
    //在方法执行的时,先设置编码格式
					* 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");
代码语言:javascript
复制
//解决编码格式
package demo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class Test2 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置编码格式
        req.setCharacterEncoding("utf-8");
        //使用req对象获取请求参数
        String username= req.getParameter("username");
        System.out.println();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }
}
请求转发
代码语言:javascript
复制
	2. 请求转发:一种在服务器内部的资源跳转方式
			1. 步骤:
				1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
				2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response) 

	2. 特点:
		1. 浏览器地址栏路径不发生变化
		2. 只能转发到当前服务器内部资源中。
		3. 转发是一次请求
image-20231107105044955
image-20231107105044955
image-20231107110855880
image-20231107110855880
数据共享
image-20231107112539934
image-20231107112539934
image-20231107112749762
image-20231107112749762

image-20231107113312515
image-20231107113312515
Resopnse
image-20231107145528930
image-20231107145528930
重定向

两种方式

image-20231107145912202
image-20231107145912202
重定向和请求转发的区别
image-20231107150114480
image-20231107150114480
  • 不能数据共享
image-20231107150655597
image-20231107150655597
路径写法
image-20231107151533892
image-20231107151533892
统一字符编码的方式
image-20231107151959162
image-20231107151959162
验证码
image-20231107152844489
image-20231107152844489
image-20231107152934949
image-20231107152934949
image-20231107153058879
image-20231107153058879
  • 验证码切换
servletContext对象
image-20231107153805944
image-20231107153805944
image-20231107161253490
image-20231107161253490
image-20231107161330597
image-20231107161330597

idea

image-20231112173207704
image-20231112173207704
  • 当你修改了这里的webservlet时候,需要重新部署才能生效

会话技术

cookie

在两个servlet中传输的方法,保存在请求对象中,可以有多个cookie

Cookie的原理

Cookie是一种在客户端(浏览器)和服务器之间存储和传递信息的小型文本文件。其原理如下:

  1. 服务器端创建Cookie: 当用户访问一个网站时,服务器可以向用户的浏览器发送一个包含信息的HTTP响应头,其中包括一个Set-Cookie字段。这个字段会包含一个唯一的Cookie标识符以及要存储在Cookie中的数据。
  2. 浏览器存储Cookie: 浏览器接收到Cookie后,将其存储在用户的本地计算机上,通常存储在特定的Cookie文件中。
  3. 浏览器发送Cookie: 每次用户再次访问同一网站时,浏览器都会自动将该网站的Cookie信息包含在HTTP请求头中,发送给服务器。
  4. 服务器读取Cookie: 服务器在接收到HTTP请求时,会读取请求头中的Cookie信息,从中提取出所需的数据。
  5. 服务器响应: 服务器可以根据Cookie中的信息来识别用户或存储用户的状态信息。然后,服务器可以在HTTP响应中使用Set-Cookie字段来更新或创建新的Cookie,以便在以后的请求中使用。

Cookie的用途包括会话管理、用户跟踪、个性化体验等。然而,需要注意的是,Cookie可能引发隐私和安全问题,因此通常会受到浏览器的限制,例如同源策略、Cookie生存期和安全标志等。

image-20231107200622905
image-20231107200622905
image-20231107201040768
image-20231107201040768
image-20231107201409869
image-20231107201409869
image-20231107201430018
image-20231107201430018
  • cookie可以是会话cookie或持久性cookie
image-20231224143406052
image-20231224143406052
  • 和jwt的异同
image-20231224143458878
image-20231224143458878
session
image-20231224151212443
image-20231224151212443
  • 原理:基于cookie实现
image-20231224151555968
image-20231224151555968
  • 细节
image-20231224152803879
image-20231224152803879
image-20231224152842094
image-20231224152842094
image-20231224153029778
image-20231224153029778

验证码案例

image-20231224171647709
image-20231224171647709

jsp技术

image-20231218215244966
image-20231218215244966
执行的原理与基础标签的使用
image-20231218221724419
image-20231218221724419

当然,下面是用 Markdown 格式解释这三个 JSP 元素的含义:

<% %> - Scriptlet 标签

<% %> 用于将 Java 代码片段嵌入到 JSP 文件中。

它允许直接在 JSP 文件中插入 Java 代码,实现诸如循环、条件语句、方法调用等任务。

示例:

代码语言:javascript
复制
<% 
   String message = "Hello, JSP!";//此处定义的变量是方法变量,可以理解为该标签作用是变成一个方法
   out.println(message);
%>
<%! %> - 声明标记

<%! %> 用于在 servlet 类的主体中定义变量或方法。

<%! %> 用于定义在 Servlet 类中的成员变量或方法。在 JSP 被翻译为 Servlet 时,声明部分的内容会放在 Servlet 类的类体中。

声明的变量和方法在整个 JSP 页面的 Servlet 类中都是可见的,可以在其他部分(比如 <% %><%= %>)中使用。

声明的是成员变量

代码语言:javascript
复制
jspCopy code<%! 
   private int count = 0;

   public void incrementCount() {
       count++;
   }
%>
<%= %> - 表达式标记

<%= %> 用于直接将表达式的结果输出到 HTML 响应中。

它直接将表达式的结果输出到客户端的浏览器中。

示例:

代码语言:javascript
复制
jspCopy code<% String name = "Alice"; %>
<%= "Hello, " + name %>
优先级
image-20231224111850047
image-20231224111850047
指令
image-20231226103411090
image-20231226103411090
image-20231226103520365
image-20231226103520365
  • 这一行里有很多属性,其中就包括errorpage啥的。
image-20231226104003704
image-20231226104003704
image-20231226104233134
image-20231226104233134

MVC开发模式

  • 是开发模式不是设计模式,设计模式只解决一些小的问题
image-20231226105606001
image-20231226105606001
image-20231226105505730
image-20231226105505730
  • javabean是指java类中的get等方法
image-20231226105917743
image-20231226105917743

EL表达式

  • 使用这个表达式是为了更加符合mac开发规范
image-20231226112055852
image-20231226112055852
image-20231226112151018
image-20231226112151018

## 获取字符串

  • 获取存储的值
image-20231226112712182
image-20231226112712182
  • 相当于把代码变成以上形式
image-20231226112724202
image-20231226112724202
image-20231226112822306
image-20231226112822306
  • 按照PageContextRequestSessionApplication

获取对象、集合的值

  • 需要先创建对象
image-20231226164939704
image-20231226164939704
image-20231226164906491
image-20231226164906491
image-20231226165130997
image-20231226165130997

隐式对象

image-20231226165501792
image-20231226165501792

JSTL

image-20231226171653560
image-20231226171653560
image-20231226171341209
image-20231226171341209
image-20231226171539170
image-20231226171539170
image-20231226171744876
image-20231226171744876
image-20231226171813732
image-20231226171813732

三层架构

image-20231226171935408
image-20231226171935408

JDBC

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Boot strap框架
  • XML
  • Servlet技术
    • 执行原理与生命周期
      • 子类与具体应用
        • 注解的使用
          • Http
            • Request
              • Resopnse
              • idea
              • 会话技术
              • jsp技术
                • 执行的原理与基础标签的使用
                  • 优先级
                    • 指令
                    • MVC开发模式
                    • EL表达式
                      • 获取对象、集合的值
                      • 隐式对象
                      • JSTL
                      • 三层架构
                      • JDBC
                      相关产品与服务
                      验证码
                      腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档