JavaWeb
ArrayList和treeset
封装
Servlet
Servlet 是什么?
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Servlet 有以下几点优势:
- 性能明显更好。
- Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
- Servlet 是独立于平台的,因为它们是用 Java 编写的。
- 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
- Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。
servlet是用java语言编写的服务器端小程序
-
继承HttpServlet
-
覆盖重写doGet和doPost
Servlet 生命周期
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
- Servlet 初始化后调用 init () 方法。
- Servlet 调用 service() 方法来处理客户端的请求。
- Servlet 销毁前调用 destroy() 方法。
- 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
init 方法的定义如下:
public void init() throws ServletException {
// 初始化代码...
}
service() 方法
public void service(ServletRequest request,
ServletResponse response)
throws ServletException, IOException{
}
doGet() 方法
GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理。
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
doPost() 方法
POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
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>myServlet</servlet-name>
<servlet-class>com.chen.servlet.Demo</servlet-class>
<init-param>
<param-name>user></param-name>
<param-value>chen</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/my</url-pattern>
</servlet-mapping>
</web-app>
单例模式,线程不安全
JSP
四大作用域(一个容器)
- page页面
- request一次请求
- session会话
- application 服务器作用域
九大类型对象
- page 当前页面
- pageContext- - - ->page(相当于一个范围)
- request 请求
- session 会话
- application 服务器
- response 响应
- out 输出
- exception 异常
- config 配置
jsp三大元素
- 指令
- 脚本
- 动作
静态包含:各自编译
动态编译:先拼合,再编译
include:包含
forward:转发
plugin:插件
userBean:应用组件
setProperty:设置属性
getProperty:获取属性
jsp动作区分大小写
动作转发
include:原页面
forward:新页面
地址栏不变
主导权不一样
boolean 8
char 16
int 32
float 32
jsp:userBean
jsp表达式
EL表达式适用于一下情形
- 静态文本
- 标准标签和自定义标签
- EL不能在脚本元素中使用
注:不能用于HTML页面中
EL表达式
pageScope
userBean具备的条件
- 不能放在默认包下
- 是一个公开的类
- 含有无参的构造方法
- 属性进行封装
静态包含:各自把各自的东西运行好,在结合起来
动态包含:先拼和,再编译
jsp页面的动作:转发,包含,跳转页面
转发和重定向的区别
相同点:都能进行跳转
不同点:
转发地址栏不变,重定向地址栏变化
转发速度快,重定向速度慢
转发是一次请求,重定向是二次请求
包含和转发的区别
相同:地址栏不变
不同点:
包含在原页面,转发页面不同
主导权不同
xml:可扩展标记语言,传输和存储数据
JSTL
去脚本化
- 通用标签: c:out c:set c:remove c:catch
- 条件标签: c:if c:choose c:when c:otherwise
- 循环标签: c:forTokens c:foreach
- url标签: c:import c:url c:redirect c:param
Filter
检测用户是否登录
设置缓存
处理中文问题
Listener
监听对象自身的创建和销毁
监控不同的对象实现什么样的接口
与Filter相似
被动调用
JSON
是一种数据交换格式
string,字符串,number,boolean,数组,对象
JSONArray.toJSON()
JSONArray.parse()
JQuery
servlet,filter
生命周期一样 (服务,过滤)
区别:servlet继承类,filter实现接口
- init中servlet servlrtConfig FilterConfig
- 方法:servlet调用service方法 filter中间服务dofilter
- 方法参数不一样 filterchain
- web.xml不一样
jscript函数库
- 轻松获取页面
- 轻松修改页面内容和展示样式
- AJAX变得容易
- 动画效果
- 页面的处理事件更轻松
引入本地文件
cdn引入
基本选择器
- id选择器
- 类选择器
- 标签选择器
层次选择器
- 祖先后代选择器
- 父子选择器
- 隔壁选择器
- 邻居选择器
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script type="text/javascript" src="js/jquery-3.5.1.js"></script>
<script type="text/javascript" src="js/jquery-3.5.1.min.js"></script>
<html>
<head>
<title>Title</title>
</head>
<body>
<ol>
<li>A</li>
<li id="b">B</li>
<li>C</li>
</ol>
<ul>
<li>a</li>
<li>bc</li>
<li>abc</li>
<li>d</li>
</ul>
</body>
<script type="text/javascript">
$(function () {
console.log($('*'))
$('ol li').css("color",'red') //祖先
$('ol>li').css("color",'red')//父子
$('b +li' ).css("color","red") //隔壁选择器
$('li:eq(3)').css("color","green")
$('li:first').css("color","blue")//过滤选择器
$('li:contains(bc)').css("color",'red')//按照文字过滤
})
</script>
</html>
$(“tr:even”):选取偶数位置的 元素
$(“tr:odd”):选取奇数位置的 元素
样式(css),属性(attr),事件(bind),动画
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="js/jquery-3.5.1.js"></script>
<script type="text/javascript" src="js/jquery-3.5.1.min.js"></script>
</head>
<body>
<p id="p1">这是一个段落</p>
<h1>这是一个标题</h1>
<!--<button>点击</button>-->
<ol>
<li id="a">a</li>
<li id="b"><input id="test" value="chen"/></li>
<br/>
<li><input type="button" id="btn" value="点击"></li>
<li>d</li>
</ol>
<ul>
<li>A</li>
<li>B</li>
<li>C</li>
</ul>
<div>
</div>
</body>
<script type="text/javascript">
//选择器
/*$(function () {
console.log($('*'))
$('button').click(function () {
$('#p1').hide()
})
})*/
//隐藏
/*$(function () {
$('button').click(function () {
$(this).hide()
})
})*/
//触碰消失
/*$(function () {
$('button').mouseenter(function () {
$(this).hide()
})
})*/
//获取值,赋值
/*$(function () {
var demo= $('#test').val()
console.log(demo)
})*/
//修改文本
/* $(function () {
var demo=$('#a').text('s')
console.log(demo)
})*/
//样式
/* $(function () {
var color= $('#a').css('font-family','华文彩云');
console.log(color)
})*/
//赋值
/* $(function () {
var demo = $('#test').attr("hidden", 'hidden');
console.log(demo)
})*/
//绑定
/* $(function () {
$('#btn').bind("click", function () {
alert('chen')
})
})*/
//追加
/* $(function () {
$('#a').append('<li>m</li>')
$('#a').prepend('<li>m</li>')
})*/
//克隆
/*$(function () {
var demo=$('ol').clone()
$('div').append(demo)
})*/
//包裹
/* $(function () {
$('ol').wrap('<div></div>')
})*/
//清空
/* $(function () {
$('ul').remove()
$('ul').empty()
})*/
//动画
/*$(function () {
$('#btn').bind('click',function () {
$('ul').slideToggle()
})
})*/
</script>
Ajax
异步刷新
同步异步
async:false:关闭异步
eval(“(“+res+“)”):变为对象
on () {
var demo=$(‘ol’).clone()
$(‘div’).append(demo)
})*/
//包裹
/* $(function () {
$('ol').wrap('<div></div>')
})*/
//清空
/* $(function () {
$('ul').remove()
$('ul').empty()
})*/
//动画
/*$(function () {
$('#btn').bind('click',function () {
$('ul').slideToggle()
})
})*/
```
Ajax
异步刷新
同步异步
async:false:关闭异步
eval(“(“+res+“)”):变为对象