JavaWeb
一、web开发的背景知识
web,顾名思义是网页的意思,如:www.baidu.com
web分为静态web和动态web
1、静态web
纯前端网站即使静态web,只使用html,css等前端语言进行编写
静态web提供给所有人看的数据始终不会发生变化
2、动态web
几乎现在所有的网站都是动态web网站,如:淘宝,百度,B站等
提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同
动态web除了静态web所需的技术之外,还需要引入后台技术,后台技术目前有两套比较常见的技术栈:
- JDBC+JSP+Servlet(已逐步被淘汰,但依然可以学习,了解原理)
- Spring+springMVC+Mybatis(也就是常说的SSM框架,目前最常用的框架)
本篇文章讲解的即是JDBC+JSP+Servlet的后台技术栈知识
SSM框架将在后续发出
二、web应用程序web应用程序
可以提供浏览器访问的程序;
a.html、b.html.….多个web资源,这些web资源可以被外界访问,对外界提供服务;
你们能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上。
URL
这个统一的web资源会被放在同一个文件夹下,web应用程序>Tomcat:服务器
一个web应用由多部分组成(静态web,动态web)
html,css,js
jsp,servlet
Java程序
jar包
配置文件(Properties)
Web酸用程序编写完毕后,若想提供给外界访问;需费一个服务蔬来统一管理
三、静态web
*.htm, *.html这些都是网员的后境、如果服务器上一直存在这些东四,我们就可以直接进行读取、需要网络;
静态web存在的缺点
Web页面无法动态更新,所有用户看到都是同一个页面
轮播图,点击特效:伪动态
JavaScript[实际开发中,它用的最多]
VBScript
它无法和数据库交互(数据无法持久化,用户无法交互)
四、 动态web
页面会动态展示,“web页面的展示效果因人而异”
缺点:
加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布;
停机维护优点:
Web页面可以动态更新,所有用户看到都不是同一个页面
它可以与数据库交互(数据持久化:注册,商品信息,用户信息………)
五、web服务器
1、技术讲解
ASP:
微软:国内最早流行的就是ASP;
·在HTML中嵌入了VB的脚本,ASP+COM;
·在ASP开发中,基本一个页面都有几干行的业务代码,页面极其换乱
·维护成本高!
C#
IIS
php:
开发速度很快,功能很强大,跨平台,代码很简单(70%,WP)
无法承载大访问量的情况(局限性)
jSP/Servlet:
B/S;浏览和服务器C/S:客户端和服务器
sun公司主推的B/S架构
基于Java语言的(所有的大公司,或者一些开源的组件,都是用Java写的)
可以承载三高问题带来的影响;
语法像ASP,ASP->JSP,加强市场强度;
2、web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息;
lIS微软的;ASP,Windows中自带的
Tomcat
面向百度编程:
Tomcat是Apache 软件基金会(Apache Software Foundation)的jakarta项目中的一个核心项目,最新的Servlet 和JSP 规范总是能在Tomcat中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受lava爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个Java初学web的人来说,它是最佳的选择
Tomcat 实际上运行JSP页面和Serlet。Tornct最新版易9.0
工作3-5年之后,可以尝试手写Tomcat服务器;
下载tomcat:
安装or解压
了解配置文件及目录结构
这个东西的作用
六、Tomcat
可以修改 conf/logging.properties 中的 java.util.logging.ConsoleHandler.encoding = GBK 解决乱码问题
1、配置
可以配置启动的端口号
tomcat的默认端口号为:8080
mysql:3306
http:80
https:443
可以配置主机的名称
默认的主机名为:localhost->127.0.0.1
默认网站应用存放的位置为:webapps
高难度面试题:
请你谈谈网站是如何进行访问的!
1.输入一个域名;回车
2.检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
2.1有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
如:127.0.0.1 www.qinjiang.com
2.2没有:去DNS服务器找,找到的话就返回,找不到就返回找不到;
3.可以配置一下环境变量(可选性)
2、发布一个web网站
不会就先模仿
将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了
网站应该有的结构
HTTP协议:面试
Maven:构建工具
Maven安装包
Servlet入门
HelloWorld!
Servlet配置 ·原理
七、Http
1、什么是HTTP
(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。
文本:html,字符串,…
超文本:图片,音乐,视频,定位,地图.……
端口:80
Https:安全的
2、两个时代
http1.0
HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
http2.0
HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
3、Http请求
客户端–发请求(Request)–服务器
百度:
Request URL:https://www.baidu.com/ 请求地址
Request Method:GET get方法/post方法
Status Code:200 OK 状态码:200
Remote(远程) Address:14.215.177.39:443
Accept:text/html
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9 语言
Cache-Control:max-age=0
Connection:keep-alive
3.1、请求行
请求行中的请求方式:GET
请求方式:Get,Post,HEAD,DELETE,PUT,TRACT.…
get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
3.2、消息头
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机…/.
4、Http响应
服务器–响应…….客户端
百度:
Cache-Control:private 缓存控制
Connection:Keep-Alive 连接
Content-Encoding:gzip 编码
Content-Type:text/html 类型
4.1、响应体
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机…/.
Refresh:告诉客户端,多久刷新一次;
Location:让网页重新定位;
4.2、响应状态码
200:请求响应成功200
3xx:请求重定向·重定向:你重新到我给你新位置去;
4xx:找不到资源 404:资源不存在;
5xx:服务器代码错误 500 502:网关错误
常见面试题:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
八、Maven
1、maven的作用
javaweb开发中需要用到大量的jar包,频繁手动导入过于麻烦;由此诞生了maven,用于帮助我们自动导入并配置jar包。
maven是一个项目架构管理工具,而非技术
2、maven的核心思想:约定大于配置
maven会规定好我们如何编写我们的java代码,必须按照规范进行代码的编写
3、pom.xml是maven的核心配置文件
4、配置文件导出失败的问题的解决
在pom.xml中添加如下代码:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JvPBDbme-1630844699068)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210724234620914.png)]
九、Servlet
1、背景
Servlet就是sun公司开发动态web的一门技术
Sun在这些APi中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:
- 编写一个实现了Servlet的类
- 吧开发好的Java类部署到web服务器中
关于Serlvet接口,Sun公司有两个默认的实现类:HttpServlet,GenericServled
2、初识Servlet
- 构建一个普通的Maven项目,等理面的sc目录,以后我们的学习就在这个项目里面建立Moudel;这个空的工程就题Maven主工程
- 关于maven父子工程的理解
父项目中会有:
<modules>
<module>servlet-01</module>
</modules>
父项目中的jar包子项目可以直接使用,类似class的父类子类继承
3.Maven的环境优化
1.修改web.xml为最新版
2.将maven的结构搭建完整
4.编写一个servlet程序
- 编写一个普通类
- 实现Servlet接口,这里我们直接继承HttpServlet
5.编写Servlet的映射
为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需
要再web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;
6.配置Tomcat
7.启动测试
3、Servlet原理
Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会:
4、Servlet的映射
- 一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
- 一个servlet可以指定多个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello4</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello5</url-pattern>
</servlet-mapping>
- 一个servlet可以指定通用映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
- 默认请求路径
<!--默认请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
- 指定一些后缀或者前缀
<!--可以自定义后缀实现请求映射
注意点,*前面不能加项目映射的路径
hello/sajdlkajda.qinjiang
-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.qinjiang</url-pattern>
</servlet-mapping>
- 优先级问题:指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求
5、ServletContext
web容器在启动的时候,它会为每个web程序都创建一个对应的servletcontext对象,它代表了当前的web应用。
该对象的作用:
- 共享数据
共享数据实现步骤:
- 在一个servlet类中向上下文对象保存需要的数据
- 在另一个servlet类中从上下文对象中获取需要的数据
- 设置映射以及设置编码等,使得数据能正常使用
2.获取初始化参数
获取初始化参数实现步骤:
- 先在配置文件中设置参数
- 用上下文对象获取所需参数并使用
3.请求转发
//请求转发:显示另外一个路径的页面,但是该页面的路径不会改变
//重定向:显示另外一个路径的页面,且页面的路径也会改变为该页面的路径
- 读取资源文件
读取步骤:
- 在java目录或resources目录下创建properties文件(最好在resources目录,在java目录下可能资源无法使用)
- 这些properties文件会被打包到/target/项目名/classes/WEB-INF文件夹下,这个路径俗称classpath
- 需要一个文件流读取properties文件的内容,再由Properties对象读取文件流中的内容
- ps:获取properties路径时,默认路径是在/target/项目名,在此基础上填写相对路径
6、HttpServletRespones
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,和一个代表响应的HttpServletRespones对象。
如果要获取客户端请求过来的参数,则找HttpServletRequest。
如果要给客户端一些响应,则找HttpServletRespones。
1、对象封装内容的分类
- 负责向浏览器发送数据的方法
ServletOutputStream getOutputStream() throws IOException;
PrintWriter getWriter() throws IOException;
- 负责向浏览器发送响应头的方法
void setCharacterEncoding(String var1); void setContentLength(int var1); void setContentLengthLong(long var1); void setContentType(String var1); void setDateHeader(String var1, long var2); void addDateHeader(String var1, long var2); void setHeader(String var1, String var2); void addHeader(String var1, String var2); void setIntHeader(String var1, int var2); void addIntHeader(String var1, int var2);
- 响应状态码
int SC_CONTINUE = 100; int SC_SWITCHING_PROTOCOLS = 101; int SC_OK = 200; int SC_CREATED = 201; int SC_ACCEPTED = 202; int SC_NON_AUTHORITATIVE_INFORMATION = 203; int SC_NO_CONTENT = 204; int SC_RESET_CONTENT = 205; int SC_PARTIAL_CONTENT = 206; int SC_MULTIPLE_CHOICES = 300; int SC_MOVED_PERMANENTLY = 301; int SC_MOVED_TEMPORARILY = 302; int SC_FOUND = 302; int SC_SEE_OTHER = 303; int SC_NOT_MODIFIED = 304; int SC_USE_PROXY = 305; int SC_TEMPORARY_REDIRECT = 307; int SC_BAD_REQUEST = 400; int SC_UNAUTHORIZED = 401; int SC_PAYMENT_REQUIRED = 402; int SC_FORBIDDEN = 403; int SC_NOT_FOUND = 404; int SC_METHOD_NOT_ALLOWED = 405; int SC_NOT_ACCEPTABLE = 406; int SC_PROXY_AUTHENTICATION_REQUIRED = 407; int SC_REQUEST_TIMEOUT = 408; int SC_CONFLICT = 409; int SC_GONE = 410; int SC_LENGTH_REQUIRED = 411; int SC_PRECONDITION_FAILED = 412; int SC_REQUEST_ENTITY_TOO_LARGE = 413; int SC_REQUEST_URI_TOO_LONG = 414; int SC_UNSUPPORTED_MEDIA_TYPE = 415; int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416; int SC_EXPECTATION_FAILED = 417; int SC_INTERNAL_SERVER_ERROR = 500; int SC_NOT_IMPLEMENTED = 501; int SC_BAD_GATEWAY = 502; int SC_SERVICE_UNAVAILABLE = 503; int SC_GATEWAY_TIMEOUT = 504; int SC_HTTP_VERSION_NOT_SUPPORTED = 505;
2、常见应用
- 向浏览器输出消息,getwriter方法/getOutputStream()方法等
- 下载文件
- 要获取下载文件的路径
- 下载的文件名是什么
- 想办法设置让浏览器能支持我们下载需要的东西,这里要注意编码,否则中文可能显示为乱码
- 获取下载文件的输入流
- 创建缓冲区buffer
- 获取outputstream对象
- 将fileoutputstream流写入缓冲区buffer
- 使用outputstream将缓冲区的数据输出到客户端
- 验证码功能
- 可以前端实现
- 可以后端实现
- 编写随机数方法,生成验证码以便使用
- 创建缓存在内存中的图像类
- 对画笔对图像类进行操作
- 用响应头告诉浏览器该请求的打开方式以及让浏览器不会自动缓存图像
- 把图片写入响应的输出流
4.实现重定向
原理:一个web资源收到客户端的请求后,该web资源会通知客户端去访问另外一个web资源,这个过程就叫做重定向
面试题:重定向和转发的区别
相同点:页面都会实现跳转
不同点:
请求转发时,url不会发生变化,状态码为307
重定向时,url地址栏不会发生变化,状态码为302
常见场景:用户登录
7、HttpServletRequest
HttpServletRequest代表客户端的请求,用户通过http协议访问服务器,http请求中的所有信息会被封装到HttpServletRequest对象中,通过HttpServletRequest对象,我们可以获得客户端的所有信息。
应用场景:
- 获取前端传递的参数
- 请求转发(与重定向作区分)
十、Cookie、Session
1、背景概念
会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器的过程称之为会话session。
**有状态会话:**一个同学来过教室,下次再来教室,我们就会知道这个同学来过,称之为有状态会话
问题:一个网站怎么证明你访问过(可以解答cookie和session的区别)
- 服务端给客户端一个信件,客户端下次访问服务端的时候带上信件即可。cookie
- 服务端登记该客户端以及访问过了,下次服务端会匹配客户端是否已经访问过。session
2、保存会话的两种技术
cookie
客户端技术(首次访问客户端接受响应,下次访问客户端发送请求)
session
服务端技术,利用该技术,可以保存用户的会话信息,我们可以把信息或者数据放在session中
常见应用:网站登录后,下次访问无需再登录,而是直接自动登录
3、Cookie
- 从请求中获取cookie的信息
- 服务端响应给客户端cookie
- cookie一般保存在本地用户目录下的appdate文件夹中
- 细节问题:一个网站的cookie是否存在上限
一个cookie只能保存一个信息
一个web站点可以给浏览器发送多个cookie,最多存放20个cookie
cookie的大小限制为4kb
浏览器的上限为300个cookie - 删除cookie的方法
- 被动删除:不设置setMaxAge方法,则关闭浏览器后自动删除
- 主动删除:用setMaxAge方法将cookie的存活时间改为0,则可以在主动删除特定的cookie
- 编码解码问题
- URLEncoder.encode()方法设置编码方式,比如utf-8
- URLDecoder.decode()方法设置解码方式,比如utf-8
4、Session(重点)
- session知识背景
- 服务器会给每个用户(浏览器)创建一个session对象
- 一个session对象独占一个浏览器,只要浏览器没有关闭,这个session就存在
- 用户登录之后,整个网页内部进行跳转多可以进行访问,无需再次登录
- session和cookie的区别
cookie是把用户的数据写给用户的浏览器,由浏览器保存(即由客户端保存)(可以保存较多信息)
session是把用户的数据写到用户独占的session中,由服务端保存(尽量只保存重要信息,减少服务器资源的浪费)
十一、JSP
1、背景知识
JSP,全称为JavaServer Pages:Java服务端页面,和servlet一样,用于动态web技术
特点:
- JSP语法类似与HTML
- 区别:HTML只给用户提供静态数据;而JSP页面可以嵌入Java代码,用于给用户提供动态数据
2、原理
思考:JSP是怎么执行的
- 服务器内部:tomcat有一个work目录
- idea中使用tomcat的项目会在idea的tomcat中产生一个work目录
- jsp页面会转换成java程序
- 浏览器向服务器发送请求时,不管访问什么资源,其实都是在访问servlet
- JSP页面会被转换成一个java类
- JSP转换成的java程序的类继承了HttpServlet类,JSP本身也是一个servlet类
- 在JSP页面中:只要是java代码就会原封不动的输出,如果是html代码则会转换为形如:out.write("\n");的格式,输出到前端。
JSP的重要结构:
- 判断请求
- 内置对象
final javax.servlet.jsp.PageContext pageContext; //页面上下文javax.servlet.http.HttpSession session = null; //sessionfinal javax.servlet.ServletContext application; //applicationContextfinal javax.servlet.ServletConfig config; //configjavax.servlet.jsp.JspWriter out = null; //outfinal java.lang.Object page = this; //page:当前HttpServletRequest request //请求HttpServletResponse response //响应
- 输出页面前增加的代码
response.setContentType("text/html"); //设置响应的页面类型pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);_jspx_page_context = pageContext;application = pageContext.getServletContext();config = pageContext.getServletConfig();session = pageContext.getSession();out = pageContext.getOut();_jspx_out = out;
- 以上的这些个对象我们可以在JSP页面中直接使用!
3、基础语法
JS作为Java技术的一种应用,拥有自己扩充的一些语法(了解即可),且支持所有原Java语法。
- 注释
<%-- 注释的内容 --%>
- JSP表达式
作用:用来将程序的输出,输出到客户端(即输出到浏览器),而不是被当作字符处理
<%= 变量或表达式%>eg:<%= new Date()%>
- JSP脚本片段
<% 正常Java代码 %>eg:<% int sum = 0; for (int i = 0; i < 100; i+=10) { sum+=i; out.println("<h1>sum="+sum+"</h1>"); }%>
- 在脚本片段中嵌入html元素
eg:<% for (int i = 0; i < 5; i++) {%><h1>第</h1><%=i+1%><h1>个循环</h1><% }%>
- JSP声明
可以提高代码作用域
<%! 代码片段,可以定义全局变量 %>eg:<%--JSP生命--%><%! private int globalvar = 0;%>
- JSP注释和HTML注释的区别
<!-- HTML注释 --!> 会在客户端源代码中显示<%-- JSP注释 --%> 不会在客户端源代码中显示
- JSP指令(了解即可)
<%@ page args... %><%@ include args... %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%-- @include相当于把所有页面合在了一起 --%> <%@include file="common/header.jsp"%> <h1>body</h1> <%@include file="common/footer.jsp"%> <hr> <%-- jsp:include相当于页面拼接,本质上还是分为多个页面 --%> <jsp:include page="common/header.jsp"></jsp:include> <h1>body</h1> <jsp:include page="common/footer.jsp"></jsp:include>
4、九大JSP内置对象及其作用域
PageContext 存储数据Request 存储数据Response 响应Session 存储数据Application 【SerlvetContext】 存储数据config 【SerlvetConfig】配置out 输出page 不用了解exception 异常
<%-- 存储数据 --%> <%-- 作用域从低到高:page->request->session->application --%> <% pageContext.setAttribute("one","1");//保存的数据只在一个页面中有效 request.setAttribute("two","2");//保存的数据只在一次请求中有效,请求转发会携带该数据 session.setAttribute("three","3");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器都有效 application.setAttribute("four","4");//保存的数据只在服务器中有效,从打开服务器到关闭服务器都有效 %>
pageContext.forward(url)方法可以实现请求转发
5、JSP标签、JSTL标签库、EL表达式
- EL表达式:${}
作用:获取数据
执行运算
获取web开发的常用对象 - JSP标签:
<jsp:include page="common/header.jsp"></jsp:include><jsp:forward page="index.jsp"> <jsp:param name="name" value="xf"/> <jsp:param name="age" value="16"/></jsp:forward>
3.JSTL标签库:JSTL标签库的使用是为了弥补HTML标签的不足;它自定义了多个标签以供使用,标签的功能和Java代码一样
JSTL标签库分为:核心标签、格式化标签、SQL标签、XML 标签,主要用的是核心标签
使用JSTL标签库之前需要先导入标签库,如核心标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4EEFxFjM-1630844699073)(C:\Users\利姆鲁\AppData\Roaming\Typora\typora-user-images\image-20210802203716237.png)]
代码样例:
- if判断
<%--把页面获取的数据发送给自己--%><form action="tag.jsp" method="get"> <input type="text" name="username" value="${param.username}"> <input type="submit" name="login"></form><%--判断如果用户名是管理员,则登录成功--%><c:if test="${param.username=='admin'}" var="isadmin"> <c:out value="hello admin"/></c:if><br><c:out value="${isadmin}"/>
- for循环
<% ArrayList<String> user = new ArrayList<String>(); user.add(0,"user0"); user.add(1,"user1"); user.add(2,"user2"); user.add(3,"user3"); request.setAttribute("userlist",user);%><%--类似for循环 常用于数据库操作--%><%--var 遍历变量名的声明--%><%--items 要遍历的对象--%><%--begin 遍历起始点--%><%--end 遍历结束点--%><%--step 遍历步长--%><c:forEach var="username" items="${userlist}" begin="0" end="4" step="1"> <c:out value="${username}"/> <br></c:forEach>
6、JavaBean
实际上就是我们所说的实体类
Javabean的特定写法:
1. 必须有一个无参构造方法2. 属性必须私有化3. 必须有对应的get/set方法封装
一般用来和数据库的字段做映射
ORM: 对象关系映射
表对应类
字段对应属性
行记录对应对象
### 7、MVC三层架构
什么是MVC:model view controller ,也就是模型(实体类和数据库对应字段)、视图(JSP页面)、构造器(servlet)
- 早期架构
servlet--CRUD-->数据库弊端:程序十分臃肿,不利于维护 servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码架构思想:没有什么是加一层解决不了的!程序猿调用↑JDBC (实现该接口)↑Mysql Oracle SqlServer ....(不同厂商)
- 现在的MVC架构
Model
业务处理 :业务逻辑(Service)
数据持久层:CRUD (Dao - 数据持久化对象)
View
展示数据
提供链接发起Servlet请求 (a,form,img…)
Controller (Servlet)
接收用户的请求 :(req:请求参数、Session信息….)
交给业务层处理对应的代码
控制视图的跳转
登录逻辑示例:
登录—>接收用户的登录请求—>处理用户的请求(获取用户登录的参数,username,password)---->交给业务层处理登录业务(判断用户名密码是否正确:事务)—>Dao层查询用户名和密码是否正确–>数据库
8、Filter(过滤器)(重点)
Filter(过滤器):用于过滤网站的数据
作用:处理中文乱码、登录验证…
9、监听器
实现接口即可;有多种监听可以实现
用来观察用户的一举一动,并予以需要的反应
10、过滤器和监听器的常见应用
监听器:常用于GUI编程
过滤器:常用于登录拦截(登录后才能访问,未登录则不能访问)