JavaWEB
Servlet
ServeltContext
web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前web应用;
- 共享数据
- 在这个servlet中保存的数据,可以在另外一个servlet中拿到
- 获取初始化参数
- 一边设置getServeltContext另一边设置setServeltContext
请求转发
getRequestDispatcher("地址")请求转发
`requestDispatcher.forword(上面写的) //调用forward请求转发
HttpServletResponse
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse;
- 如果要获取客户端请求过来的参数:找HttpServletRequest
- 如果要给客户端响应一些信息:找HttpServletResponse
1,简单分类
负责向浏览器发送数据的方法
1. `getWriter()`写中文流用这个
2. `getOutputStream()`平常流用它
负责向浏览器发送响应头的方法
2,实现重定向
B一个web资源收到客户端A请求后,B他会通知A客户端去访问另外一个web资源C,这个过程叫重定向
sendRedirect()//重定向
HttpServletRequest
HttpServletRequest代表客户端的请求,用户通过http协议访问服务器,http请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息
-
获取前端传递的参数
getParamter() -
请求转发
Cookie,Session
会话
会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话
有状态会话:你来过网站下次登陆我们会知道你曾经来过,称之为有状态会话
客户端 服务端
- 服务端给客户端一个信件,客户端下次访问服务端带上信件就可以了;cookie
- 服务端登记你来过了,下次你来的时候我来匹配你;seesion
保存会话的两种技术
cookie
- 客户端技术(响应,请求)
session
- 服务器技术,利用这个技术,可以保存用户的会话信息,我们可以信息或者数据放在Session中!
常见场景:网站登录之后,你下次不用再登录,第二次访问直接就上去了
cookie
import com.sun.net.httpserver.HttpsServer;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
public class CookieDem01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost()
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
//Cookie,服务端从客户端获取
Cookie[] cookies = req.getCookies();//这里返回数组,说明Cookie可能存在多个
//判读cookie是否存在
if(cookies!=null){
out.write("你上一次访问的时间是");
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
//获取cookie的名字
if (cookie.getName().equals("name")){
//获取cookie中的值
long l = Long.parseLong(cookie.getValue());
Date date = new Date(l);
out.write(date.toLocaleString());
}
}
}else {
out.write("这是你第一次访问");
}
//服务器给客户端响应一个cookie
Cookie cookie = new Cookie("name", "xiaoming");
cookie.setMaxAge(60*60*24*1000);//设置时间保存时间
resp.addCookie(cookie);
}
}
Session
什么是session:
- 服务器会给每一个用户(浏览器)创建一个session对象
- 一个session独占一个浏览器,只要浏览器没有关闭,这个session就存在
- 用户登录之后,整个网站它都可以访问-->保存用户信息,保存购物车信息
session和cookie区别
- cookie是把用户的数据写给用户的浏览器,浏览器保存(可以存多个)
- session把用户数据写到用户独占session中,服务器端保存(保存重要信息,减少服务器资源的浪费)
- session对象由服务器创建;
使用场景:
-
保存一个登陆用户的信息;
-
购物车信息;
-
整个网站中经常会使用的数据,我们将他保存在session中
-
import com.sun.net.httpserver.HttpsServer; import javax.servlet.ServletException; import javax.servlet.http.*; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; public class CookieDem01 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); //得到session HttpSession session = req.getSession(); //给session中存东西 session.setAttribute("name",new Person("xiaom",1)); //获取session的ID String id = session.getId(); //判断session是不是新创建的 if(session.isNew()){ resp.getWriter().write("创建成功"+id); }else { resp.getWriter().write("已存在"+id); } } } //得到session HttpSession session = req.getSession(); Preson person=(Preson) session.getAttribute("name"); System.out.println(person.toString()); HttpSession session=req.getSession(); session.removeAttribute("name"); //手动注销session session.invalidate();
会话自动过期:web.xml配置
//设置session默认的失效时间
<session-config>
//15分钟自动失效
<session-timeout>15</session-timeout>
</session-config>
JSP
jsp:java服务器端页面,也和Servlet一样,用于动态web技术!
最大特点:
- 写JSP就像写HTML
- 区别
- HTML只给用户提供静态的数据
- JSP页面中可以嵌入java代码,为用户提供动态数据
jsp指令
<%@include file=""%>
这个会将两个页面合二为一
<jsp:include />
这个是拼接页面
九大内置对象
- pageContext
- Request
- Respone
- Session
- Application(SerlvetContext) 存东西
- config (SerlvetConfig)
- out
- page
- exception
pageContext:保存的数据只在一个页面中有效
request://保存的数据只在一次请求中有效,请求转发会携带这个数据
session://保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application://保存的数据只在服务器中有效,从打开服务器到关闭服务器
JSP标签,JSTF标签,EL表达式
EL表达式:${}
- 获取数据
- 执行运算
- 获取web开发的常用对象
JSTL表达式
JSTL标签库的使用就是为了弥补HTML标签的不足,它自定义许多标签,可以供我们使用,标签的功能和java代码一样!
javaBean
实体类
javaBean有特定的写法:
- 必须要有一个无参构造
- 属性必须私有化
- 必须有对应的get/set方法;
一般用来和数据库的字段做映射ORM;
过滤器
Filter:过滤器,用来过滤网站的数据
监听器
实现一个监听器的接口;(有N种)

浙公网安备 33010602011771号