1web基础.md
文章目录
第一章-Web基础部分
1tomcat服务器
1.1 是什么
免费的开放源代码的Web 应用服务器
1.2下载以及安装、使用
修改端口号:conf–>servlet.xml–>第70行<Connector port="8088"修改端口号
放置项目:webapps下放置写好的项目
1.3 Http请求/响应
是什么:http(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。
-
文本:HTML,字符串
-
超文本:图片、音乐、视频等。
-
端口号:80
Https:安全的超文本传输协议。端口号443
1 Http请求
客户端–发请求–服务器
|
|
2 Http响应
服务器–响应–客户端
|
|
2 请求行
请求方式:Get,Post,Head,Delete,Put,Tract
- Get:请求能携带参数少,大小限制1024KB,在浏览器的URL显示数据,不安全,但是高效。
- Post:请求能携带参数无限制,大小无限制,不会在URL显示数据内容,安全,速度相对GET低。
1.4 初始web.xml
根据不同tomcat配置信息不同:在webapp–>ROOT–>WEB-INF->web.xml可以配置初始的信息
1.5 Servlet
servlet介绍:
-
Servlet就是sun公司开发动态web的一门技术
-
Sun在这些API中提供-一个接口叫做: Servlet
使用servlet步骤:1实现servlet的类。2把类部署到web服务器(web.xml中部署)
servlet运行原理:
-
**创建过程:**先写一个servlet的类,就是实现了servlet接口的类,一般直接继承HttpServle。然后把它放置在web容器中,就是在web.xml写mapping,我们可以用
标签控制servle的创建时机,是Tomcat启动时创建还是,客户端请求servlet时才创建。 -
**生命周期:**当客户端请求Servlet时,web容器就会去寻找对应的Servlet,创建一个对象,执行init方法初始化,然后再执行service方法,根据对应的请求方式执行doxxx方法,当再此请求这个servlet时候,就去直接执行service方法了,当web容器关闭前,会执行destroy方法进行销毁。
转发/跳转 response.sendRedirect(“网址”) 重定向告诉它待会要跳转到该页面 req.getRequestDispatcher(“网址”).forword(req,resp) 在servlet中将当前req,resp转发到网址
1.6Servlet和Filter区别
1.共同点 ●都有三个常用方法:初始化,销毁,核心方法( service,doFilter )。 ●它们在核心方法都有request,response. ●它们都是单例的,一个应用只有一一个对象。 2.区别点 ■创建时间 Servlet请求第一次到达时创建 (默认) Filter项目启动时创建 是否资源 Servet是一一个资源 ,可以通过路径访问 Filter不是一个资源 ,不可以通过路径访问 ●用范围 1Servlet能做的, Filter都能做到,但是反过来这不然。
2内置对象
Cookie
我们在实际使用Cookie过程中要注意一些问题:
1. Cookie的兼容性问题
Cookie的格式有2个不同的版本,第一个版本,我们称为Cookie Version 0,是最初由Netscape公司制定的,也被几乎所有的浏览器支持。而较新的版本,Cookie Version 1,则是根据RFC 2109文档制定的。为了确保兼容性,JAVA规定,前面所提到的涉及Cookie的操作都是针对旧版本的Cookie进行的。而新版本的Cookie目前还不被Javax.servlet.http.Cookie包所支持。
2. Cookie的内容
同样的Cookie的内容的字符限制针对不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格,方括号,圆括号,等于号(=),逗号,双引号,斜杠,问号,@符号,冒号,分号都不能作为Cookie的内容。这也就是为什么我们在例子中设定Cookie的内容为“Test_Content”的原因。
虽然在Cookie Version 1规定中放宽了限制,可以使用这些字符,但是考虑到新版本的Cookie规范目前仍然没有为所有的浏览器所支持,因而为保险起见,我们应该在Cookie的内容中尽量避免使用这些字符。
El和JSTL
1EL表达式
作用:获取作用域对象的数据 仅仅获取pageContext、request、session、application四个对象中的数据 找到了获取,找不到什么都不做,也不报错
request对象存储了请求数据–> ${param.键名} paramvalues.键名 返回的是数组
通过setAttribute方法存储到作用域对象中的数据 ${键名}返回键名对应的值 若是String返回String
若是对象返回对象 ${键名.属性.属性}
若是List集合对象 ${键名[下标]}
若是map集合 ${集合名.map集合存储的键名}
默认:若是相同键则从pageContext开始找,一直往作用域大的找 ${pageScope.键} ${requestScope.键} ${sessionScope.键} ${applicationScope.键}
EL逻辑运算: ${1+3}–>4 ${a+b}会报错 这里的+-*/是运算 +不是字符连接 ${requestScope.con.name eq “张三”} ${receiveInfo.isread == ‘是’.charAt(0)} 字符串和字符进行比较
EL空值判断 ${empty 键名} 会返回true 和false
${cardtype.oid==typeid?‘selected’:''}可以直接放在select中的option,不需要再加””
Cookie数据 ${cookie}返回存储了索引cookie对象的map集合 ${cookie.键}取出对应键的cookie对象 不常用 ${cookie.键.value}取出cookie对象的值 ${cookie.键.name}取出cookie对象的名字
2JSTL表达式
1使用前加入依赖 2jsp声明Jstl标签库引入(核心标签库)
<%@ taglib prefix="c” uri="http://java.sun.com/jsp/jstl/core”%>
注意:JSTL依赖EL,EL只能四个作用域中的变量,所以使用前要先存入作用域中 。
JSTL–声明变量
|
|
JSTL–if判断
|
|
JSTL–choose选择判断
|
|
JSTL–forEach循环
|
|
format格式化标签 需要引入<%@ taglib prefix="fmt” uri="http://java.sun.com/jsp/jstl/fmt” %>命名空间
|
|
web项目需要的jiar
|
|
第二章-
1验证码
1加入jir包 verifycode.jar
2jsp页面中
|
|
3servlet/action/controller
|
|
2记住密码
1servlet/action/controller
|
|
2jsp中
|
|
3获得上次地址
getRequest().getHeader(“Referer”);
4Filter过滤器
1java类实现Filter接口
-
init()方法服务器启动就执行,资源初始化 arg0.getInitParameter(“encod”);获得初始化时值
-
doFilter()方法
1 2 3 4 5 6 7 8 9 10 11 12 13
//拦截请求方法,在此方法中可以对资源实现管理 //注意要手动放行, chain.doFilter(arg0, arg1); //在doFilter()后是对响应进行处理 HttpServletRequest hs=(HttpServletRequest)arg0; String ServlertPath2=hs.getServletPath(); // 获得 /login.jsp //获取Httpservlet对象 HttpServletRequest hRequert= (HttpServletRequest) request; HttpServletResponse hResponse=(HttpServletResponse)response; //常用方法 hRequert.getRequestDispatcher().forward("xxx");//转发 hResponse.sendRedirect("book!findAllBook");//重定向 重定向还是会继续执行代码
-
destroy()方法 服务器关闭的时候执行
2web.xml配置过滤器
|
|
统一编码格式设置,session管理,权限管理 资源管理(统一水印)
文章作者 卢森林
上次更新 2020-05-30