程序在CPU中执行,CPU中有程序计数器,寄存器,控制器等
代码都在磁盘上,读取时被拿到内存中(转化成机器指令),并被程序计数器来技术和标记
无并发时:CPU中执行,需要排队,一行一行执行
有并发时:利用进程,来回切换--(将部分进程拿出)-->线程(只管理小块资源)(做CPU切换)->时间片
一个·CPU同一时刻只能做一件事
哎呀哈!跑题了,不好意思a~/~
步入正题:
JavaWeb
URL格式:(协议)://(主机名):(端口号)/(文件路径)/(文件名)
通过web.xml查看URL的方法:项目名+<url-pattern></url-pattern>
HTML与Servlet的异同:
相同,都用HTTP
区别,前者WEB服务器直接返回HTML,后者WEB服务器调用SERVELT的方法由Servlet动态生成HTML页面
区别,后者需在WEB.XML中配置URL路径
Get:参数放在HTTP报头
POST:参数放在HTTP正文
在代码中设置请求参数乱码,只适用于post,不适用于get
在server.xml中更改才能适用与get
HttpServletRequest请求参数处理:
getParameter() 指定请求参数名称来取得对应的值
getParameterValue()获取请求中所有的请求参数列表
getParameterName() 获取请求中所有的请求参数的名字列表
getparameterMap()获取请求中的所有请求key-value对
servlet生命周期:
init是在一个servlet类的对象在被tomcat创建的时候调用的,在一个servlet对象的声明周期内只会执行一次,在对象被创建的时候调用一次
service方法是浏览器每次请求servlet对象时都会执行的方法
destory方法是在servlet生命周期结束的时候会调用的方法。
Web-INF文件夹对客户端是透明的,客户端是看不到这个路径的,只能通过请求转发来访问
注意:并不是任何的内部跳转都能访问WEB-INF;原因是 跳转有2种方式:请求转发、重定向
配置tomcat运行环境
Jsp<->Servlet
- 将tomcat/lib中的servlet-api.jar加入项目的构建路径
- 右键项目->Build Path->Add library->Server Runtime (更好些)
部署tomcat
在servers面板 新建一个tomcat实例 ,再在该实例中部署项目(右键-add)之后运行
注意:一般建议 将eclipse中的tomcat与本地的配置信息保持一致:将eclipse中的tomcat设置为托管模式:【第一次】创建tomcat实例后,双击该实例,选择Server Location的第二项
4、统一字符集编码
a.编码分类:
设置jsp文件的编码(jsp文件中的pageEncoding属性): jsp->java
设置浏览器读取jsp文件的编码(jsp文件中的content属性)
一般将上述设置成 一致的编码 ,推荐使用UTF-8
文本编码:
- 将整个eclipse中的文件 统一设置(推荐使用)
- 设置 某一个项目
- 设置单独文件
6.
JSP的页面元素
- 脚本Scriptlet
Response:响应对象
提供方法:
Void addCookie:服务端向客户端增加cookie对象
Void sendRedirect:页面跳转的一种方法(重定向)
Void setContetType:设置服务端响应的编码
请求转发和重定向的区别:
请求转发 重定向
地址栏是否改变 不变 改变
是否保留第一次 保留 不保留 --四种范象
请求的次数 一次 两次
跳转发生的位置 客户端 服务端发出得第二次跳转
转发、重定向:
转发:
张三(客户端)->[服务窗口A(服务端)]->服务窗口B
重定向:
张三(客户端)->服务窗口A(服务端)->去找B
张三(客户端)->服务窗口B(服务端)->结束
2 session(服务端)
Cookie(客户端,不是内置对象):Cookie是由 服务端生成的,再转发给客户端保存。相当于本地缓存得作用:客户端->服务端
作用:提高访问服务端得效率,但是安全性较差
Cookie:key=value
Javax.servlet.http.Cookie
Public cookie(String name,String value)
String getName:
String getValue:
Void setMaxAge:最大有效期(秒)
服务端发送给客户端:
Response.addCookie(Cookie cookie)
页面跳转(转发、重定向)
客户端获取cookie:request.getCookie()
- 服务端增加cookie:response对象:客户端获取对象:request对象
- 不能直接获取某一个单独对象,只能一次性将全部cookies拿到
通过F12可以发现,除了自己设置的Cookie对象外,还有一个name为JSESSIONIE的Cookie
建议cookie只保存 英文和数字,否则需要进行编码、解码。
4.session:会话
a.浏览网站:开始-关闭
b.购物:浏览、付款、退出
c.电子邮件:浏览、写邮件、退出
开始-退出
Session机制:
客户端第一次请求服务端时,服务端会产生一个session对象(用于保存该客户的信息)
并且每个session对象 都会有一个唯一的sessionID(用于区分其他session)
服务端会产生一个cookie,并且该cookie的name=JSESSIONID,value=服务端sessionID的值;
然后 服务端会在响应客户端的同时,将该cookie发送给客户端,至此 客户端就有了一个cookie(JSESSIONID);
因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID-sessionID)
客户端第2/n次请求服务端时:服务端会先用客户端cookie中的JSESSIONID 去服务端的session中匹配sessionid,如果匹配成功(cookie,jsessionid和session sessionid)
Session:
- session存储在服务端
- session是在同一个用户(客户)请求时共享
- session实现机制:第一次客户请求时,产生sessionid并复制给cookie的jsessionid然后发给客户端。最后通过session的sessionid-cookie的jsession实现一一对应
session方法:
String getId():获取sessionID
Boolead isNew():判断是否是新用户(第一次访问)
Void invalidate():是session失效(退出登录、注销)
setAttribute():
getAttribute():
void setMaxInactiveInterval(秒):设置最大有效 非活动时间
int getMaxInactiveInterval():获取最大有效 非活动时间
eclipse配置tomcat
下载tomcat9->eclipse->window->preproies->server->running Environment->add->tomcat9->jdk(先安装)
Eclipse创建项目->new->web->
Eclipse下面对话框->servlet->add
New->servlet->
注:每次运行只需保存,然后在默认浏览器输入网址就可以了,不必重启tomcat,或者直接run,根据提示也可以。
若添加servlet工程时出错:
或者重新配置 tomcat
MVC设计模式:
M:Model 模型:一个功能
V:view 视图 :用于展示、以及与用户交互。使用html js css jquery等前端技术
C:Controller 控制器:接受请求,将请求跳转到模型进行处理;模型处理完毕后,再将处理的结果返回给请求处。可以用jsp实现,但是一般建议使用Servlet实现控制器。
Jsp->Java(Servlet)->JSP
Servlet:
Java类必须符合一定的规范:
- 必须继承 javax.servlet.http.HttpServlet
- 必须重写其中的doGet()或doPost()方法
doGet():接受并处理所有get提交方式的请求
doPost():接受并处 所有post提交方式的请求
JSP:动态网页
静态、动态:
- 不用和是否有“动感”混为一谈
- 是否 随着时间、地点、用户操作的改变而改变
动态网页 需要使用到 服务端脚本语言(JSP)
- 架构
CS:Client Server
CS不足:
- 如果软件升级,那么全部软件都需要全部升级
- 维护麻烦,需要维护每一台客户端软件
- 每一个客户端,都需要安装客户端软件
BS:Broswer Server
客户端可以通过浏览器直接访问服务端
注意:bs和cs各有优势
- tomcat解压后目录:
bin:可执行文件(startupo.bat shutdown.bat)
conf:配置文件(server.xml)
lib:tomcat依赖的jar文件
log:日志文件(记录出错等信息)
temp:临时文件
webapps:可执行的项目(将为我们开发的项目 放入该目录)
work:存放由jsp翻译成的java,以及编辑成的class文件(JSP->java->class)
- 配置tomcat
- 配置jdk(必须配置JAVA_HOME)
Java_home classPath path
- 配置catalina_home
双击bin/startup.bat启动tomcat
常见错误:可能与其他服务的端口号冲突
Tomcat端口号默认8080 (此端口号较为常见,容易),建议修改次端口(8888)
修改端口号:
访问tomcat:
http://localhost:8888/
jsp:在html中嵌套java代码
在项目/WEB-INF/web.xml中
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
虚拟路径:
将web项目配置到webapps以外的目录
docBase:实际路径
path:虚拟路径 (绝对路径、相对路径【相当于webapps】)
重启
- 方式二
D: omcatapache-tomcat-9.0.27confCatalinalocalhost
中新建 “项目名.xml”中新增一行
<Context docBase=” D: omcatJs0-----------” />
JSP执行流程
Jsp-java(Servlet文件)-class
Jsp和Servlet可以互相转换
因为第一次请求服务端 会有翻译和编译的过程,因此比较慢;后续访问 可以直接访问class,因此速度比较快。但是,如果服务端修改了代码,则再次访问时,会重新的翻译,编译。
JSP 四大范围对象
Page:当前页面有效(页面跳转后无效)
Request:同一次请求有效,其他请求无效(请求转发后有效,重定向后无效)
Session:同一次会话有效(无论怎么跳转,都有效,关闭或切换浏览器后无效;从登录到退出都有效)
Application:全局变量;整个项目运行期间 都有效(切换浏览器 仍然有效);关闭服务或其他项目 无效
以上对象共有的方法:
Object getAttribute(String name):根据属性名,或者属性值
Void setAttribute(String name,object obj):设置属性值(新增,修改)
Void removeAttribute(String name) :根据属性名,删除对象
1.以上范围对象,通过setAttribute()复制,通过getAttribute()取值
2.以上范围对象,尽量使用最小的范围,因为对象的范围越大,造成的想能损耗越大。
Servlet接口
Httpservletrequest
<Load-on-srartup>1 一启动,就加载对象
从tomcat启动,无main,且tomcat位置不固定
每一块程序都有一个独立内存空间
Jsp注释是只给jsp源码看的注释,而html注释会被带到网页上
重点:pagecontext 四个作用域
setAttribute 传在配置作用域
getAttribute
先找page -request -session -qpplication
标签就是java代码一种简化写法