servlet、jsp、请求转发、重定向的一些个人理解

1.servlet:servlet是基于java实现的web组件,实现了servletAPI的使用规范的java应用程序就是Servlet,是和平台无关的组件,接收web浏览器的请求,服务器处理请求后再返回web浏览器的一个过程;

2.servlet的框架:

其中的Servlet接口是包含了一些与生命周期有关的基本的方法,比如说init、service、destory,其中init只能有一次,service能有多次,destory是被gc清理时使用的也只能使用一次,ServletConfig是相关的配置属性,而这个GenericServlet则是Servlet和ServletConfig的基本实现类,HttpServlet继承了GenericServlet类,而这个MyServlet则是我们自己定义的类;

3.Servlet自定义子类的使用:

java 复制代码
@WebServlet(name="MessageBoardServlet",value="/x")
public class 自定义的类 extends HttpServlet{
@Override
protected void doGet(HttpServletRequestrequest,HttpServletResponse response){
}
@Override
protected void doPost(HttpServletRequestrequest,HttpServletResponse response){
}
}

如果说想直接通过url地址访问Servlet,调用doGet,如果是通过超链接,访问的Servlet路径,调用doPost;

在doGet和doPost中一定要对编码的类型以及类型进行设置

javascript 复制代码
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html");

4.Servlet的基本运作步骤

5.Http协议:基于TCP/IP之上的应用层协议

使用请求-响应模式:请求从客户端发出,服务端对请求进行响应,并返回给浏览器端;

无状态:自身不对请求和响应之间的通信状态进行保存;

无连接:限制每次只处理一个请求。服务器处理完浏览器的请求,并收到浏览器的应答后,就断开连接;

6.HttpServletRequest使用的方法:

request.setCharacterEncoding(编码格式)

request.gerParameter("前端控件的name")获取请求的参数值;

request.getRemoteAddr():获取远程地址;
request.getParameterMap() :将前端提交的数据,以名值对方式,存储在map中;
request.getParameterValues("前端控件名"): 返回结果是一个字符串数组,用于一个名字的控件,返回多个值(复选框、可多选的下拉列表);
7.使用Commen_Beanutils工具,实现对网页中的数据封装到java实体类对象中的方法;
8.jsp:是运行在服务器端的界面,简单的来说就是java+HTML代码,使用时要注意java的代码要放在<%%>中,如:

html 复制代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<link rel="stylesheet" href="assets/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<table class="table table-striped table-bordered table-hover">
<%
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
%>
<tr>
<td>BB</td>
</tr>
<%} else {%>
<tr>
<td>AA</td>
</tr>
<% }
}%>
</table>
</div>
</body>
</html>

9.请求转发的工作原理:

从本质上来看,请求转发就是一个web资源收到客户端浏览器请求后,通知服务器调用另一个web资源来处理,是服务端行为;

通过调用RequestDispatcher接口来实现:

HttpServletRequest调用用getRequestDispatcher(String path):可以是绝对路径,也可以是相对路径;
ServletContext调用getRequestDispatcher(String):是绝对路径
forward(req,resp):将请求转发给另一个web资源
include(req,resp):将其他web资源作为响应内容包含进来
特性:
不支持跨域转发,只能跳转到当前应用的资源;
浏览器上的URL地址不改变,浏览器不知道服务器内部进行了请求转发,也不知道转发了多少次;
参数与请求转发的web之间,共享一个request和response对象
可以在请求范围内使用setAttribute(名,值),getAttribute(名)来实现资源的传递;
10.重定向:当前浏览器向服务端发送请求时,通知浏览器重新定向到另一个web资源,客户端行
为。
响应码:200表示成功,302表示重定向,404表示资源不可访问,500表示服务器内部错误(程序错误)

特点:
url地址会发生变化,变为第二次请求的地址;
一共有两次请求,对应两次request和response;
可以跨域,可以重定向任何网址;
11.重定向和请求转发的区别:
(1)请求转发是一次要求,重定向是两次要求;
(2)请求转发不支持跨域转发,只能在应用的资源中进行转发,而重定向可以定向到外域资源;
(3)请求转发是一次请求,效率更高;
(4)请求转发的url地址不变,因为对应了一次的request和response;
(5)请求转发是服务器行为,重定向是客户端行为;
12.jsp表达式:
<%=值%>注意不能使用;

相关推荐
葡萄成熟时 !5 小时前
JAVA 常用API学习笔记
java·笔记·学习
剩下了什么6 小时前
float32 与 float64 精度陷阱:如何在 Go 中避免错误使用
开发语言·后端·golang
Rain的Java大神之路6 小时前
介绍一下分布式事务
java·分布式·后端·spring·spring cloud·架构·springcloud
指尖时光.6 小时前
Three.js 超全入门综合案例
开发语言·javascript·ecmascript
暴力求解6 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip
吴声子夜歌7 小时前
Java面试题——基础(一)
java·开发语言
小庞在加油7 小时前
WinDbg实战:QT/跨平台项目死锁与无响应问题排查指南
开发语言·qt·windbg·工具
南城以南溫暖如初1477 小时前
外卖CPS实战指南:从技术选型到运营落地全流程解析
java·spring boot·mysql·架构·vue
Vae_Mars8 小时前
C#中的delegate委托
开发语言·c#
傻啦嘿哟8 小时前
英雄联盟皮肤爬虫:爬取全皮肤价格与特效,做比价工具
java·c++·爬虫