Java:Javaweb基础知识

1、Servlet

Servlet是JavaWeb最为核心的内容,它是Java提供的一门==动态==web资源开发技术。

使用Servlet就可以实现,根据不同的登录用户在页面上动态显示不同内容。

Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口,并由web服务器运行Servlet。

生命周期:对象的生命周期指一个对象从被创建到被销毁的整个过程。

其生命周期由容器来管理,分为4个阶段:

①加载和实例化:当Servlet第一次被访问时,由容器创建Servlet对象

②初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次!!!

③请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。每访问1次就调用1次!!!

④服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。只执行1次!!!

2、Request和Response

Request是请求对象:请求行、请求头、请求体三部分组成

Response是响应对象:由响应行、响应头、响应体三部分组成

request对象是用来封装请求数据的对象              response对象是用来封装响应数据的对象

POST中文乱码

 //设置字符输入流的编码,设置的字符集要和页面保持一致
        request.setCharacterEncoding("UTF-8");

3、Filter

过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

拦截路径配置:

        拦截具体的资源:/index.jsp:只有访问index.jsp时才会被拦截

        目录拦截:/user/*:访问/user下的所有资源,都会被拦截

        后缀名拦截:*.jsp:访问后缀名为jsp的资源,都会被拦截

        拦截所有:/*:访问所有资源,都会被拦截

使用Filter解决中文乱码:


public class EncodingFilter implements Filter {
	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// 处理请求乱码
		HttpServletRequest httpServletRequest = (HttpServletRequest) request;
		HttpServletResponse httpServletResponse = (HttpServletResponse) response;
		HttpServletRequest myRequest = new MyRequest(httpServletRequest);
 
		// 处理响应乱码
		System.out.println("过滤器拦截");
		response.setContentType("text/html;charset=utf-8");
 
		chain.doFilter(myRequest, httpServletResponse);
        //放行
		System.out.println("过滤器放行");
	}
 
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
	}
	@Override
	public void destroy() {
	}
 

 4、监听器

Listener 表示监听器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。

监听器可以监听就是在 applicationsessionrequest 三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。

Java:Javaweb基础知识_第1张图片

5、会话 

(1)客户端会话跟踪技术:Cookie

(2)服务端会话跟踪技术:Session

Cookie:

  • 发送Cookie:

    • 创建Cookie对象,并设置值:Cookie cookie = new Cookie("key","value");

    • 发送Cookie到客户端使用的是Reponse对象:response.addCookie(cookie);

  • 获取Cookie:

    • 使用Request对象获取Cookie数组:Cookie[] cookies = request.getCookies();

    • 遍历数组

    • 获取数组中每个Cookie对象的值:cookie.getName()和cookie.getValue()

 Cookie存活时间:setMaxAge(int seconds(毫秒))

public class AServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //发送Cookie
        //1. 创建Cookie对象
        Cookie cookie = new Cookie("username","zs");
        //设置存活时间   ,1周 7天
        cookie.setMaxAge(60*60*24*7); //易阅读,需程序计算
		//cookie.setMaxAge(604800); //不易阅读(可以使用注解弥补),程序少进行一次计算
        //2. 发送Cookie,response
        response.addCookie(cookie);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

Session:基于Cookie来实现的

  • session数据存储在服务端,服务器重启后,session数据会被保存

  • 浏览器被关闭启动后,重新建立的连接就已经是一个全新的会话,获取的session数据也是一个新的对象

  • session的数据要想共享,浏览器不能关闭,所以session数据不能长期保存数据

  • cookie是存储在客户端,是可以长期保存

Cookie和Session区别: 

  • 存储位置:Cookie 是将数据存储在客户端,Session 将数据存储在服务端

  • 安全性:Cookie不安全,Session安全

  • 数据大小:Cookie最大3KB,Session无大小限制

  • 存储时间:Cookie可以通过setMaxAge()长期存储,Session默认30分钟

  • 服务器性能:Cookie不占服务器资源,Session占用服务器资源

6、EL表达式

EL 表达式的主要作用是 ——>获取数据  表示:${key对应的数据}

域对象:

page:当前页面有效                                     request:当前请求有效

session:当前会话有效                                 application:当前应用有效

Java:Javaweb基础知识_第2张图片

7、jstl 

:相当于 if 判断

//test定义条件表达式

 :相当于 for 循环

8、MVC三层架构

数据访问层,持久层(dao   mapper):对数据库的CRUD基本操作

表现层(controller    servlet):接收请求,封装数据,调用业务逻辑层,响应数据

业务逻辑层(service):对业务逻辑进行封装,组合数据访问层层中基本功能,形成复杂的业务逻辑功能。

表现层调业务层,业务层调持久层,层层接口连接

Java:Javaweb基础知识_第3张图片

你可能感兴趣的:(Javaweb,java,servlet,前端)