javaweb JSP SERVLET
servlet
servlet 是java实现动态web的一个接口,配合 jsp实现 B/S 架构,servlet的实现类有 genegatic servlet 和 httpservlet。 httpservlet 继承 genegatic servlet ,genegatic servlet 实现了servlet接口,两个都是抽象类,使用时我们自己定义一个类继承httpservlet即可。
JSP
jsp就是 HTML 代码里面包含了一些 java代码,本质上和 html 代码区别不大
tomcat
tomcat是javaweb服务器,我们将写好的网站发布在里面,配置好项目发布路径deployment。我们写的每一个servlet都要在 WEB-INF下面的 web.xml 中写好servlet 映射,如下
servletcontext servlet上下文
web容器在启动的时候会为每个web程序创建一个对应的servletcontext对象,他代表了当前的web应运。所有用户可共享,在jsp中相当于applicationContext
1.servletcontext可以共享数据
2.servletcontext可以在web.xml 中配置的初始化参数
3.servletcontext请求转发
转发的时候url路径不会发生变化,和重定向相反。
RequestDispatcher dispatcher=context.getRequestDispatchR;
3.servletcontext可以加载属性配置文件
InputStream is = context.getResourceAsStream();
4.cookie
cookie是小饼干,保存在客户端,第一次访问某个网址的时候没有cookie,该网站不认得这个用户,所以给客户端发送一个cookie,相当于通行证,下次来的时候就认识了,下次来的时候带上cookie.
购物车问题:当我登录时,客户端发送请求,服务器记录下客户端的信息(给用户发一个通行证:Cookie),然后向客户端响应response中带上这个Cookie,浏览器保存这个Cookie,当用户想要将物品加入购物车,客户端发送加入购物车请求,就仅需带上Cookie通行证,有了这张通行证,服务器就记得这是哪个用户,然后就能简单的处理请求
cookie就相当于一个键值对,只能保存一个信息,每次服务器给客户端更新的cookie,键一样的话便会刷新该键值对。
服务器可以设置发给浏览器的cookie的有效期,不设置的话关闭浏览器则浏览器中的cookie就失效删除,设置了有效期的话在有效期内cookie一直存在于浏览器缓存里。
5.Session
- 服务器会给每一个浏览器创建一个session对象。
- 一个session独占一个浏览器,只要浏览器没关闭这个session就存在,
- 用户登录过后,这个网站都可以访问。
Httpsession session=req.getSession();
session也是通过请求获得的,session是保存在服务器中的。
服务器在为浏览器创建session的时候,会把sessionID当做 cookie 发送给浏览器,这样浏览器中对于这个网站的cookies中有一个关于 sessionID的cookie。
可以通过session 保存一些信息 session.setAttribute(); session.getAttribute();只要是同一个浏览器req得到的session, 在服务器中都是同一个session。
session是一个网站对于一个浏览器来说的,我们可以通过session在多个servlet之间传递数据。
使用场景
1.保存用户的登录信息
2.购物车信息
3.整个网站经常要用到的信息 ,保存在session中。
6. JSP java服务器页面
写jsp就相当于写html,html只给用户提供静态数据,jsp可以嵌入java代码。为用户提供动态数据。jsp是一种开发动态web的技术.
浏览器想服务器发送请求,不管访问什么资源,其实都是在访问servlet。
jsp最终也会被转换成java类。jsp本质上就是一个servlet,其父类继承了httpservlet。 访问jsp页面不需要再web.xml中注册servlet,因为jsp本身就是servlet,直接访问 index.jsp就行啦。
jsp里面的 applicationContext 其实就是web项目的servletContext,jsp所生成的java类里面会把相应的html代码通过resp发送到浏览器。
jsp里面可以直接写java代码:
<%= %> 直接输出等号后面的java表达式,EL表达式更好 ${ }.
<% %> 执行尖括号里面的java表达式,当然了里面也可以用对象out向前端输出信息。
jsp 9大内置对象
pageContextt,request,session ,applicationContex这四个存信息的作用域大小
如 **pageContext.getAttribute(String name)**就会按照pageContextt,request,session ,applicationContex这个顺序一层层找对应的属性值。
并且 **pageContext.setAttribute(String name,String value,scope)**中的scope就可以设置将属性放入这四个级别中的哪一个。
JSTL标签库
jstl 标签库就是 jsp 标签库,是为了弥补html标签库的不足,自定义许多标签供我们使用,标签的功能和java代码一样。这样我们写java代码就不用麻烦的在<% %>里面进行,直接 jstl标签就行啦。
首先要在jsp页面里导入标签库