狂神讲解Java Web技术要点是什么?
- 内容介绍
- 文章标签
- 相关推荐
本文共计4472个文字,预计阅读时间需要18分钟。
JavaWeb简介:
1.基本概念:Web开发,包括静态Web和动态Web,如淘宝等。
2.技术栈:Servlet/JSP、ASP、PHP等。
3.Web应用程序:提供浏览器访问的程序,如世界各地的网页。
javaweb
1、基本概念
web开发:
- web
- 静态web
- 动态web
- 淘宝,
- 不断变化
- 技术栈:Servlet/JSP ASP PHP
1.2、web应用程序
web应用程序:可以提供浏览器访问的程序
- 能访问的任何页面都存在于世界的某个角落
- URL
- 这些同意的web资源会被放到同一个文件夹 Tomcat
- 一个web 组成
- html css js
- jsp servlet
- java程序
- jar包
- 配置文件(Properties)
外部访问需要服务器统一管理
1.3、静态web
2、web服务器
ASP:
- 微软:
- HTML中嵌入VB脚本
PHP
- PHP开发速度快,功能强大,跨平台,代码简单
- 无法承载大访问量的情况
JSP/Servlet
B/S
C/S
- sun公司主推的B/S
- 基于Java
- 承载三高带来的影响
- 语法像ASP
2.2、web服务器
一种被动的操作 处理用户强求和信息
IIS
微软的 ASP window自带
Tomcat
百度百科
手写Tomcat
3、Tomcat
启动关闭
Tomcat:8080
mysql:3306
hTTP:80
HTTPS:443
可以配置主机的名称
- 默认主机名为:
- 默认网站
高难度面试题
请你谈谈网站是如何进行访问的!
3.4、发布一个web网站
先模仿
- 将自己写的网站,放到Tomcat的webapps(应用的文件夹)下
网站应该有的结构
--webapps:Tomcat服务器的web目录 -ROOT -kuangstudy:网站的目录名 -WEB-INF -calsses:Java程序 -lib.xml :网站配置文件 -index.html 默认的首页 -static -css -style.css -js -img -.......4、HTTP
4.1、什么是HTTP
HTTP 简单的请求响应协议,通常运行在TCP之上
- 文本
- 超文本
www.baidu.com/ 请求地址Request Method: GET 请求方式/POSTStatus Code: 200 OK 状态码:200Remote(远程) Address: 110.242.68.3:443Referrer Policy: strict-origin-when-cross-originAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9Cache-Control: max-age=0Connection: keep-aliveCookie: PSTM=1642766731; BAIDUID=FF1EA490E8F8F1CE6C7FA5385721FEFE:FG=1; BD_UPN=12314753; BIDUPSID=09E509314F3EB3812F3612BCD6996E78; __yjs_duid=1_87aeb27da8e0a5310018c003dc9c8a141642819771266; BDSFRCVID_BFESS=vM4OJexroG0RE6oHNZuLhC45X-mPxN5TDYLEOwXPsp3LGJLVgaSTEG0PtfppquI-2ZlgogKKBeOTHn0F_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=JJkO_D_atKvDqTrP-trf5DCShUFsKnolB2Q-XPoO3KJCsDQvyMTEbfAJLN8tXIrLLTbw_xbgylRp8P3y0bb2DUA1y4vpK-ogQgTxoUJ25tJ2qt5Vqj5Ah--ebPRi3tQ9QgbXopQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0MC09j6KhDTPVKgTa54cbb4o2WbCQQ-Jd8pcN2b5oQT8wQHjyBU605G635K-ayT6VV-n8jqOUWfAkXpJvQnJjt2JxaqRC5bj6Sh5jDh3MbR8QKqoAe6jzaIvy0hvc0J5cShnkDMjrDRLbXU6BK5vPbNcZ0l8K3l02V-bIe-t2XjQhjGtOtjDttb32WnTJ25rHDbTw5tI_-P4DeUTWBxRZ56bHWh0MLqK-Dpn8MtoBMMJ3jJAL2lOOBJTnKUT1366OMCblK-RGQj-d3xJKQh343bRTLnQM-PjhOjC4W4vJhP-UyP5-Wh37aJRlMKoaMp78jR093JO4y4Ldj4oxJpOJ5JbMopCafDDbbD0xj6LBePtjMfbWetoQ265tWjrJabC3EfTJXU6qLT5X5tn8bxQqWgo0aPcS0K-hoKoOjTOTyl0njxQyWt7EtTRlanvy2DQGDbOCjMonDh8n3H7MJUntKHcAoj6O5hvvER5O3M7_DMKmDloOW-TB5bbPLUQF5l8-sq0x0bOte-bQXH_Etj-OJJutoKvt-5rDHJTg5DTjhPrM54FJWMT-MTryKKJ43CQoOhrL5fvsLT30W2cLQnvwJGnRhlRNB-3iV-OxDUvnyxAZbUQgLUQxtNRJ0tJM-45zKDoLh-JobUPULxo9LUvXtgcdot5yBbc8eIna5hjkbfJBQttjQn3hfIkj2CKLK-oj-DK6DTu53q; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BAIDUID_BFESS=FF1EA490E8F8F1CE6C7FA5385721FEFE:FG=1; BD_HOME=1; H_PS_PSSID=35839_35104_31254_34584_35491_35872_35541_35796_35315_26350_35743; BA_HECTOR=018h01808lala5855p1h0m9ok0qHost: www.baidu.comsec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: noneSec-Fetch-User: ?1Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
1、请求行
- 请求行中的请求方式:GET
- 请求方式:GET,POST,HEAD,DELETE,PUT,TRACT...
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL显示内容,不安全,但高效
- post:相反
2、消息头
Accept:告诉浏览器,他所支持的数据类型Cache-Control:缓存控制 Connection:告诉浏览器断开还是连接4.4、HTTP响应
- 服务器--响应--客户端
百度
Bdqid: 0xe82971940005867b 缓存控制Connection: keep-alive 连接:保持连接Content-Encoding: gzip 编码Content-Type: text/html;charset=utf-8 类型1.响应体
Accept:告诉浏览器,它所支持的数据类型Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 IS08859-1Accept-Language:告诉浏览器,它的语言环境Cache-Control:缓存控制Connection:告诉浏览器,请求完成是断开还是保持连接HOST: 主机..../.Refresh:告诉客户端,多久刷新1次;Location:让网页重新定位;2、响应状态码(重点)
200:成功 200
3**:请求重定向
- 重定向:重新到新位置去302
4**:找不到资源404
- 资源不存在
5**:服务器代码错误 500 502:网关错误
常见面试:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面展示出来,经历了什么
5、Maven
我为什么要学习这个技术?
5.1、Maven项目架构管理工具
就是方便导入jar包的
Maven的核心思想:约定大于配置
- 有约束,不要去违反
Maven会规定好应该如何写Java
5.2、下载安装Maven
官网
下载完解压即可:
狂神建议:电脑上的所有环境都放在哟个文件夹下
5.3、环境变量配置
在我们的系统环境变量配置中配置如下配置:
- M2_HOME maven目录下的bin目录
- MAVEN_HOME maven的目录
- 在系统的path中配置%MAVEN_HOME%\bin
5.4、阿里云镜像
- 镜像:mirrors
- 作用加速
- 在setttins.xml文件中找到<mirrors></mirrors>标签对,进行修改:
5.5、本地仓库
在本地的仓库,远程仓库;
建立一个本地仓库:
<localRepository>D:\Java_IDE\apache-maven-3.8.4\maven-repo</localRepository>5.6、在IDEA中使用Maven
5.7、创建一个普通的maven项目
这个只有在web下才有
5.8、在idea中标记
配置Tomcat
解决警告问题 为什么会有这个问题:我们访问一一个网站,需要指定一个文件夹名字;****
5.10、POM文件
maven由于约定大于配置,我们之后的可能遇到我们写的配置文件无法导出
<!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>**/*.properties</exclude> <exclude>**/*.xml</exclude> </excludes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>5.12、IDEA操作
目录树
5.13、解决遇到的问题
Maven仓库的使用
官网:mvnrepository.com/
6、什么是servlet
6.1、servlet简介
- sun开发动态web的一门技术
- sun在这些api中提供了一个接口叫servlet,开发的两个步骤
- 编写一个类,实现servlet接口
- 把开发好的java类部署到web服务器中
把实现了servlet接口的Java程序叫做 servlet
6.2、HelloServlet
servlet接口在sun公司有两个默认的的实现类:
HttpServlet,GenericServlet
继承差不多
Maven环境优化
编写一个servlet程序
6.3、servlet原理
servlet是由web服务器调用,web服务器在收到浏览器请求之后会:
6.4、mapping问题
6.5、ServletContext
web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象, 它代表了当前 的web应用;
1、共享数据
- 在这个servlet保存的数据可以在另一个拿到
2、获取初始化参数
<!-- 设置一些web应用初始化参数--> <context-param> <param-name>url</param-name> <param-value>jdbc:mysql//localhost:3306/mybatis</param-value> </context-param>public class ServletDemo03 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); ServletContext context = this.getServletContext(); String url = context.getInitParameter("url"); resp.getWriter().print(url); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}3、请求转发
public class ServletDemo04 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); System.out.println("进去了04"); ServletContext context = this.getServletContext(); context.getRequestDispatcher("/gp").forward(req,resp);// RequestDispatcher gp = context.getRequestDispatcher("gp");// gp.forward(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}<servlet> <servlet-name>sd3</servlet-name> <servlet-class>com.mink.servlet.ServletDemo03</servlet-class> </servlet> <servlet-mapping> <servlet-name>sd3</servlet-name> <url-pattern>/gp</url-pattern> </servlet-mapping> <servlet> <servlet-name>sd4</servlet-name> <servlet-class>com.mink.servlet.ServletDemo04</servlet-class> </servlet> <servlet-mapping> <servlet-name>sd4</servlet-name> <url-pattern>/sd4</url-pattern> </servlet-mapping>4、读取资源文件
Properties
- 在java目录下新建properties
- 在resources下新建properties
两个都被打包到理同意路径下:classes,我们俗称这个路径为classpath
思路:需要一个文件流
public class ServletDemo05 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties"); Properties prop = new Properties(); prop.load(is); String uname = prop.getProperty("username"); String pwd = prop.getProperty("password"); resp.getWriter().print(uname+":"+pwd); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}访问测试即可ok!!!
6.6、HttpResponse
web服务器接收到客户端的localhost: 8080/jsptag. jsp?name-kuangshen&age=12--%><jsp :forward page="/jsptag2.jsp"><jsp :paramname="name"value="kuangshen"></jsp :param><jsp :param name="age" value="12"></jsp :param></jsp : forward>
JSTL表达式
弥补html的不足
核心标签(掌握部分)
<%@ taglib prefix="c" uri="java.sun.com/jsp/jstl/core" %>使用步骤
- 引入队应的taglib
格式化标签
SQL标签
XML标签
9、JavaBean
实体类
实体类 JavaBean有特定的写法: ●必须要有一个无参构造 ●属性必须私有化 ●必须有对应的get/set方法;
一般用来和数据库的字段做映射 ORM;
ORM:对象关系映射
- 表-->类
- 字段-->属性
- 行记录-->对象
id
name
age
address
1
秦将1号
3
2
秦将2号
18
3
秦将3号
100
????????????????????????
10、MVC三层框架
Model
View
Controller
10.1、早些年
Servlet和Jsp都可以写ava代码;为了易于维护和使用; Servlet专注于处理请求,以及控制视图跳转 JSP专注于显示数据
用户直接访问控制层,控制层就可以直接操作数据库;
servlet--CRUD-->数据库弊端:程序十分臃肿,不利于维护servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码架构:没有什么是加一-层解决不了的!程序猿调用|JDBC|Mysq1 Oracle Sq1Server10.2、MVC三层架构
Model
- 业务处理:业务逻辑(Service)
- 数据持久层:CRUD(Dao)
View
- 展示数据
- 提供连接发送Servlet请求
Controller
- 接受用户请求
- 交给业务层处理响应的代码
- 控制视图的跳转
11、Filter
Filter:过滤器,过滤网站数据
- 处理中文乱码
- 登录验证
servlet版本3.1.0
12、监听器
实现一个监听器的接口:(有N种)
13、过滤器、监听器常见应用
监听器:GUI种常用
用户登录后才能进入主页
本文共计4472个文字,预计阅读时间需要18分钟。
JavaWeb简介:
1.基本概念:Web开发,包括静态Web和动态Web,如淘宝等。
2.技术栈:Servlet/JSP、ASP、PHP等。
3.Web应用程序:提供浏览器访问的程序,如世界各地的网页。
javaweb
1、基本概念
web开发:
- web
- 静态web
- 动态web
- 淘宝,
- 不断变化
- 技术栈:Servlet/JSP ASP PHP
1.2、web应用程序
web应用程序:可以提供浏览器访问的程序
- 能访问的任何页面都存在于世界的某个角落
- URL
- 这些同意的web资源会被放到同一个文件夹 Tomcat
- 一个web 组成
- html css js
- jsp servlet
- java程序
- jar包
- 配置文件(Properties)
外部访问需要服务器统一管理
1.3、静态web
2、web服务器
ASP:
- 微软:
- HTML中嵌入VB脚本
PHP
- PHP开发速度快,功能强大,跨平台,代码简单
- 无法承载大访问量的情况
JSP/Servlet
B/S
C/S
- sun公司主推的B/S
- 基于Java
- 承载三高带来的影响
- 语法像ASP
2.2、web服务器
一种被动的操作 处理用户强求和信息
IIS
微软的 ASP window自带
Tomcat
百度百科
手写Tomcat
3、Tomcat
启动关闭
Tomcat:8080
mysql:3306
hTTP:80
HTTPS:443
可以配置主机的名称
- 默认主机名为:
- 默认网站
高难度面试题
请你谈谈网站是如何进行访问的!
3.4、发布一个web网站
先模仿
- 将自己写的网站,放到Tomcat的webapps(应用的文件夹)下
网站应该有的结构
--webapps:Tomcat服务器的web目录 -ROOT -kuangstudy:网站的目录名 -WEB-INF -calsses:Java程序 -lib.xml :网站配置文件 -index.html 默认的首页 -static -css -style.css -js -img -.......4、HTTP
4.1、什么是HTTP
HTTP 简单的请求响应协议,通常运行在TCP之上
- 文本
- 超文本
www.baidu.com/ 请求地址Request Method: GET 请求方式/POSTStatus Code: 200 OK 状态码:200Remote(远程) Address: 110.242.68.3:443Referrer Policy: strict-origin-when-cross-originAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflate, brAccept-Language: zh-CN,zh;q=0.9Cache-Control: max-age=0Connection: keep-aliveCookie: PSTM=1642766731; BAIDUID=FF1EA490E8F8F1CE6C7FA5385721FEFE:FG=1; BD_UPN=12314753; BIDUPSID=09E509314F3EB3812F3612BCD6996E78; __yjs_duid=1_87aeb27da8e0a5310018c003dc9c8a141642819771266; BDSFRCVID_BFESS=vM4OJexroG0RE6oHNZuLhC45X-mPxN5TDYLEOwXPsp3LGJLVgaSTEG0PtfppquI-2ZlgogKKBeOTHn0F_2uxOjjg8UtVJeC6EG0Ptf8g0M5; H_BDCLCKID_SF_BFESS=JJkO_D_atKvDqTrP-trf5DCShUFsKnolB2Q-XPoO3KJCsDQvyMTEbfAJLN8tXIrLLTbw_xbgylRp8P3y0bb2DUA1y4vpK-ogQgTxoUJ25tJ2qt5Vqj5Ah--ebPRi3tQ9QgbXopQ7tt5W8ncFbT7l5hKpbt-q0x-jLTnhVn0MBCK0MC09j6KhDTPVKgTa54cbb4o2WbCQQ-Jd8pcN2b5oQT8wQHjyBU605G635K-ayT6VV-n8jqOUWfAkXpJvQnJjt2JxaqRC5bj6Sh5jDh3MbR8QKqoAe6jzaIvy0hvc0J5cShnkDMjrDRLbXU6BK5vPbNcZ0l8K3l02V-bIe-t2XjQhjGtOtjDttb32WnTJ25rHDbTw5tI_-P4DeUTWBxRZ56bHWh0MLqK-Dpn8MtoBMMJ3jJAL2lOOBJTnKUT1366OMCblK-RGQj-d3xJKQh343bRTLnQM-PjhOjC4W4vJhP-UyP5-Wh37aJRlMKoaMp78jR093JO4y4Ldj4oxJpOJ5JbMopCafDDbbD0xj6LBePtjMfbWetoQ265tWjrJabC3EfTJXU6qLT5X5tn8bxQqWgo0aPcS0K-hoKoOjTOTyl0njxQyWt7EtTRlanvy2DQGDbOCjMonDh8n3H7MJUntKHcAoj6O5hvvER5O3M7_DMKmDloOW-TB5bbPLUQF5l8-sq0x0bOte-bQXH_Etj-OJJutoKvt-5rDHJTg5DTjhPrM54FJWMT-MTryKKJ43CQoOhrL5fvsLT30W2cLQnvwJGnRhlRNB-3iV-OxDUvnyxAZbUQgLUQxtNRJ0tJM-45zKDoLh-JobUPULxo9LUvXtgcdot5yBbc8eIna5hjkbfJBQttjQn3hfIkj2CKLK-oj-DK6DTu53q; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BAIDUID_BFESS=FF1EA490E8F8F1CE6C7FA5385721FEFE:FG=1; BD_HOME=1; H_PS_PSSID=35839_35104_31254_34584_35491_35872_35541_35796_35315_26350_35743; BA_HECTOR=018h01808lala5855p1h0m9ok0qHost: www.baidu.comsec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"sec-ch-ua-mobile: ?0sec-ch-ua-platform: "Windows"Sec-Fetch-Dest: documentSec-Fetch-Mode: navigateSec-Fetch-Site: noneSec-Fetch-User: ?1Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36
1、请求行
- 请求行中的请求方式:GET
- 请求方式:GET,POST,HEAD,DELETE,PUT,TRACT...
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL显示内容,不安全,但高效
- post:相反
2、消息头
Accept:告诉浏览器,他所支持的数据类型Cache-Control:缓存控制 Connection:告诉浏览器断开还是连接4.4、HTTP响应
- 服务器--响应--客户端
百度
Bdqid: 0xe82971940005867b 缓存控制Connection: keep-alive 连接:保持连接Content-Encoding: gzip 编码Content-Type: text/html;charset=utf-8 类型1.响应体
Accept:告诉浏览器,它所支持的数据类型Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 IS08859-1Accept-Language:告诉浏览器,它的语言环境Cache-Control:缓存控制Connection:告诉浏览器,请求完成是断开还是保持连接HOST: 主机..../.Refresh:告诉客户端,多久刷新1次;Location:让网页重新定位;2、响应状态码(重点)
200:成功 200
3**:请求重定向
- 重定向:重新到新位置去302
4**:找不到资源404
- 资源不存在
5**:服务器代码错误 500 502:网关错误
常见面试:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面展示出来,经历了什么
5、Maven
我为什么要学习这个技术?
5.1、Maven项目架构管理工具
就是方便导入jar包的
Maven的核心思想:约定大于配置
- 有约束,不要去违反
Maven会规定好应该如何写Java
5.2、下载安装Maven
官网
下载完解压即可:
狂神建议:电脑上的所有环境都放在哟个文件夹下
5.3、环境变量配置
在我们的系统环境变量配置中配置如下配置:
- M2_HOME maven目录下的bin目录
- MAVEN_HOME maven的目录
- 在系统的path中配置%MAVEN_HOME%\bin
5.4、阿里云镜像
- 镜像:mirrors
- 作用加速
- 在setttins.xml文件中找到<mirrors></mirrors>标签对,进行修改:
5.5、本地仓库
在本地的仓库,远程仓库;
建立一个本地仓库:
<localRepository>D:\Java_IDE\apache-maven-3.8.4\maven-repo</localRepository>5.6、在IDEA中使用Maven
5.7、创建一个普通的maven项目
这个只有在web下才有
5.8、在idea中标记
配置Tomcat
解决警告问题 为什么会有这个问题:我们访问一一个网站,需要指定一个文件夹名字;****
5.10、POM文件
maven由于约定大于配置,我们之后的可能遇到我们写的配置文件无法导出
<!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>**/*.properties</exclude> <exclude>**/*.xml</exclude> </excludes> <filtering>false</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>5.12、IDEA操作
目录树
5.13、解决遇到的问题
Maven仓库的使用
官网:mvnrepository.com/
6、什么是servlet
6.1、servlet简介
- sun开发动态web的一门技术
- sun在这些api中提供了一个接口叫servlet,开发的两个步骤
- 编写一个类,实现servlet接口
- 把开发好的java类部署到web服务器中
把实现了servlet接口的Java程序叫做 servlet
6.2、HelloServlet
servlet接口在sun公司有两个默认的的实现类:
HttpServlet,GenericServlet
继承差不多
Maven环境优化
编写一个servlet程序
6.3、servlet原理
servlet是由web服务器调用,web服务器在收到浏览器请求之后会:
6.4、mapping问题
6.5、ServletContext
web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象, 它代表了当前 的web应用;
1、共享数据
- 在这个servlet保存的数据可以在另一个拿到
2、获取初始化参数
<!-- 设置一些web应用初始化参数--> <context-param> <param-name>url</param-name> <param-value>jdbc:mysql//localhost:3306/mybatis</param-value> </context-param>public class ServletDemo03 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); ServletContext context = this.getServletContext(); String url = context.getInitParameter("url"); resp.getWriter().print(url); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}3、请求转发
public class ServletDemo04 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); System.out.println("进去了04"); ServletContext context = this.getServletContext(); context.getRequestDispatcher("/gp").forward(req,resp);// RequestDispatcher gp = context.getRequestDispatcher("gp");// gp.forward(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}<servlet> <servlet-name>sd3</servlet-name> <servlet-class>com.mink.servlet.ServletDemo03</servlet-class> </servlet> <servlet-mapping> <servlet-name>sd3</servlet-name> <url-pattern>/gp</url-pattern> </servlet-mapping> <servlet> <servlet-name>sd4</servlet-name> <servlet-class>com.mink.servlet.ServletDemo04</servlet-class> </servlet> <servlet-mapping> <servlet-name>sd4</servlet-name> <url-pattern>/sd4</url-pattern> </servlet-mapping>4、读取资源文件
Properties
- 在java目录下新建properties
- 在resources下新建properties
两个都被打包到理同意路径下:classes,我们俗称这个路径为classpath
思路:需要一个文件流
public class ServletDemo05 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); resp.setCharacterEncoding("utf-8"); InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties"); Properties prop = new Properties(); prop.load(is); String uname = prop.getProperty("username"); String pwd = prop.getProperty("password"); resp.getWriter().print(uname+":"+pwd); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}访问测试即可ok!!!
6.6、HttpResponse
web服务器接收到客户端的localhost: 8080/jsptag. jsp?name-kuangshen&age=12--%><jsp :forward page="/jsptag2.jsp"><jsp :paramname="name"value="kuangshen"></jsp :param><jsp :param name="age" value="12"></jsp :param></jsp : forward>
JSTL表达式
弥补html的不足
核心标签(掌握部分)
<%@ taglib prefix="c" uri="java.sun.com/jsp/jstl/core" %>使用步骤
- 引入队应的taglib
格式化标签
SQL标签
XML标签
9、JavaBean
实体类
实体类 JavaBean有特定的写法: ●必须要有一个无参构造 ●属性必须私有化 ●必须有对应的get/set方法;
一般用来和数据库的字段做映射 ORM;
ORM:对象关系映射
- 表-->类
- 字段-->属性
- 行记录-->对象
id
name
age
address
1
秦将1号
3
2
秦将2号
18
3
秦将3号
100
????????????????????????
10、MVC三层框架
Model
View
Controller
10.1、早些年
Servlet和Jsp都可以写ava代码;为了易于维护和使用; Servlet专注于处理请求,以及控制视图跳转 JSP专注于显示数据
用户直接访问控制层,控制层就可以直接操作数据库;
servlet--CRUD-->数据库弊端:程序十分臃肿,不利于维护servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码架构:没有什么是加一-层解决不了的!程序猿调用|JDBC|Mysq1 Oracle Sq1Server10.2、MVC三层架构
Model
- 业务处理:业务逻辑(Service)
- 数据持久层:CRUD(Dao)
View
- 展示数据
- 提供连接发送Servlet请求
Controller
- 接受用户请求
- 交给业务层处理响应的代码
- 控制视图的跳转
11、Filter
Filter:过滤器,过滤网站数据
- 处理中文乱码
- 登录验证
servlet版本3.1.0
12、监听器
实现一个监听器的接口:(有N种)
13、过滤器、监听器常见应用
监听器:GUI种常用
用户登录后才能进入主页

