当前位置: 首页 > news >正文

JavaWeb笔记

1.可以通过创建一个类实现Servlet并重写所有方法

2.也可以通过继承HttpServlet重写init、service、destroy方法

配置web.xml映射文件和类文件路径一致

浏览器访问:localhost:8080/项目名/文件名(如果是访问类直接是xml中配置的路径) 如果是表单跳转: 表单中<form>属性action指定xml中的映射路径一致 name属性是提交跳转的名称,服务器通过name的值接收

一、Servlet工作原理

  1. 客户端请求

    用户通过浏览器发送请求至服务器。

  2. 匹配Servlet

    服务器依据URL模式(web.xml或注解配置)定位对应的Servlet处理请求。

  3. 创建请求与响应对象

    服务器为每个请求创建HttpServletRequestHttpServletResponse对象,分别用于封装请求信息和准备响应内容。

  4. 调用Servlet方法

    首次请求时调用init()进行初始化。

    service()方法检查请求类型并调用doGet(),doPost()等相应方法处理请求。

  5. 处理与响应

    在处理方法中,Servlet完成业务逻辑(如数据库交互),并通过HttpServletResponse返回结果给客户端。

  6. 销毁Servlet

    在应用卸载或服务器关闭时,调用destroy()方法清理资源。

二、请求和响应

Servlet中基本配置

1.request和response的字符编码

request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");

2.获取表单提交的信息

假设两个name分别为username和password String username=request.getParameter("username"); String password=request.getParameter("password"); //设置响应类型,避免乱码,告诉浏览器是html内容 response.setContentType("text/html;charset=UTF-8"); 这里可以直接输出,但是是在控制台显示

PrintWriter类可以用于在客户端打印提示信息 PrintWriter out=response.getWriter();

//对接收的信息做一个异常判断,也可以通过一个工具类编写一个方法进行判断 System.out.println("this is doGet method"); if(username==null){ out.write("输入账号不合法"); } if(password==null){ //设置响应类型 out.write("输入密码不合法"); } out.flush(); out.close(); }

三、转发和重定向

转发:地址栏显示原地址不改变url,服务器内部行为,只能访问当前工程地址 request.setAttribute("message", "Hello, World!");前是转发字段,后是内容 携带数据进行转发,可以是基本数据类型和引用数据类型

接收:String name=request.getAttribute("message"); 后期需要转型可以进行强转 // 转发到另一个Servlet RequestDispatcher dispatcher = request.getRequestDispatcher("/anotherServlet"); dispatcher.forward(request, response); // 转发到一个JSP页面 RequestDispatcher dispatcher = request.getRequestDispatcher("/result.jsp"); dispatcher.forward(request, response); 重定向:地址栏为新地址,改变url,可以访问任何地址 // 重定向到另一个Servlet request.getContextPath()获取当前请求路径 response.sendRedirect(request.getContextPath() + "/anotherServlet"); // 重定向到一个JSP页面 response.sendRedirect(request.getContextPath() + "/result.jsp");

如何选择:两个请求间需要共享数据就转发,不需要则重定向 !!注:转发前不能有提交响应

四、Servlet的生命周期

当客户端首次发送第一次请求后,由容器(web服务器(tomcat)去解析请求,根据请求找到对应的servlet,判断该类的对象是否存在,不存在则创建servlet实例,调取init0)方法 进行初始化操作,初始化完成后调取service()方法,由service()判断客户端的请求方式,如果是get,则执行doGet(),如果是post则执行doPost().处理方法完成后,作出相应结果给客户端.单次请求处理完毕。 当用户发送第二次以后的请求时,会判断对象是否存在,但是不再执行init0),而直接执行service方法,调取doGet()/doPost()方法。 当服务器关闭时调取destroy()方法进行销毁。 四个过程:

(1)实例化 --先创建servlet实例

当Servlet容器启动或第一次收到对该Servlet的请求时,容器会加载Servlet类并创建其实例。这是Servlet生命周期的起点。

(2)初始化--init()

一旦Servlet实例被创建,容器就会调用init()方法一次。此方法接收一个ServletConfig对象作为参数,允许Servlet读取配置信息如初始化参数等

(3)处理请求 ---service()

初始化完成后,Servlet就准备好处理客户端请求了。每当有请求到达时,容器都会调用Servlet的service()方法,并传递HttpServletRequestHttpServletResponse两个对象。service()方法根据HTTP请求类型(GET, POST等)来决定调用相应的doGet(), doPost()`等方法进行具体的请求处理。

(4)服务终止 --destory()

在Servlet容器准备关闭或者Servlet不再需要时,容器会调用Servlet的destroy()方法。这标志着Servlet生命周期的结束。==>销毁Servlet对象(实例)

五、HTTP的GET和POST区别

特性GETPOST
用途用于请求数据(从服务器获取信息)用于提交数据到服务器(如提交表单、上传文件)
应用场景查询操作、缓存利用、书签功能表单提交、文件上传、非幂等操作
安全性较低,参数直接附加在URL中,敏感信息易暴露相对较高,数据通过请求体发送
数据传输量受限,通常不超过2048字符(因浏览器和服务器而异)理论上无限制,取决于服务器配置
缓存与书签可被缓存,可收藏为书签不会被缓存,不能收藏为书签
幂等性幂等,多次相同请求产生同样的效果和结果非幂等,重复请求可能导致不同结果

相关文章:

  • MySQL查询语句
  • pikachu靶场通关笔记17 CSRF关卡03-CSRF(Token)
  • [蓝桥杯]矩阵翻硬币
  • maven微服务${revision}依赖打包无法识别
  • 王自如走上了罗永浩的老路
  • 使用VTK还是OpenGL集成到qt程序里哪个好?
  • 马氏链(Markov Chain Model)模型知识详解(1)
  • 使用 espeak-ng 实现文本转语音
  • 基于 Vue 和 Spring Boot 实现滑块验证码的机器验证
  • Qwen2.5-VL - FFN(前馈神经网络)Feedforward Neural Network
  • Java持久层技术对比:Hibernate、MyBatis与JPA的选择与应用
  • npm error Cannot read properties of null (reading ‘matches‘)
  • mamba架构和transformer区别
  • 使用Python和TensorFlow实现图像分类
  • Qemu arm操作系统开发环境
  • PDF文件如何转换格式?简单教程来了
  • 【知识扫盲】如何由inq,ouq和totaltime计算tokens/s
  • Java项目中常用的中间件及其高频问题避坑
  • Day14
  • 【WebSocket】SpringBoot项目中使用WebSocket
  • 网站建设价格a去找真甲先生/百度首页纯净版怎么设置
  • 织梦cms如何做网站/什么叫优化关键词
  • 罗湖网站建设报价/免费好用的网站
  • 成都品牌网站建设电话/房地产新闻最新消息
  • 关键词优化seo/seo网站推广案例
  • 天元建设集团有限公司第八建筑工程公司/5g网络优化