什么是Servlet:
就是一个运行在WEB服务器上的小的java程序,用来接收和响应从客户端发送过来的请求,通常使用HTTP协议。
Servlet 就是Sun公司提供的一个动态网页开发技术。
Servlet的作用:
用来处理从客户端游览器发送的请求,并且可以对请求作出响应
Servlet生命周期
Servlet生命周期的四个阶段的执行时机
阶段一:实例化 调用Servlet的构造器创建一个具体的Servlet对象的过程
阶段二:初始化 在初始化阶段,Init()方法会被调用
阶段三:就绪,Servlet被初始化后就处于能够响应请求的就绪状态,service(req,res)
阶段四:销毁Servlet容器停止或者重新启动都会引起销毁Servlet对象的动作,destroy();
Servelt配置
设置Servlet在服务器启动的时候被创建好
1 =0,表示容器启动时就会被创建,
<0,或未设置,代表servlet被请求时被执行
>0.值越小,启动的时机就越早
<load-on-startup> </load-on-startup>
Url-patten配置
共有三种:
完全路径匹配
目录匹配/通配符匹配:以/开始需要以 *元素
例如:/*. /aaa/*. /aaa/bbb/*
后缀匹配:不能以/开始。可以以*开始的,目录匹配后后缀匹配不能混合使用
例如*.do *.action
错误的写法 : /*.do
依次是 完全目录> 目录匹配 > 后缀匹配
ServletConfig对象
作用:获得servlet配置信息
ServletConfig cfg = getServletConfig();
获取init-param参数值
String getServletName(); —获得Servlet在web.xml中配置的name的值
String getInitParameter(String Name); —获得Servlet的初始化参数的
Enumeration getInitParameterNames(); —获得所有Servlet的初始化参数的名称
String getServltContext(); —获得servletContext对象
请求方式
get请求
- 在地址看输入一个地址
- 点击页面中的链接
- 表单的默认提交方式
Post请求:
将表单的Method属性设置为POST时,游览器会发送POST请求
get和post的区别:
Get的提交的参数会显示到地址栏上,而Post不显示
Get往往是有大小限制的,而Post没有大小的限制。
Get没有请求体,而Post有请求
ServletRequest接收参数
HttpServletRequest对象,游览器发来请求,提交数据到服务器端
String); 用于接收一个名称对应一个值的数据。
String[ ] getgetParameter(String name ParameterValues(String name); ) — 用于接收一个名称对应的多个值的数据
Map getparameterMap(); —用于接收表单中的所有数据,Map的key是表单提交的参数的名称,map的
value是提交参数的值
Enumeration getParameterNames() — 用于获取表单中提交的所有参数的名称
接收中文乱码
乱码的产生:客户端编码与服务器解码不一致
解决Get请求时的乱码问题
服务器端:
String username= request.getparameter(“username”);
Username= new String (username.getBytes(iso-8859″),”utf-8″);
注意:tomcat8以后,get默认编码为utf-8,不需要进行重新编码,只需要setcahracterXXX
客户端:
<meta http-equiv=”content-type” content=”text/html;charset=utf-8″>
解决post请求时的乱码问题
服务器端
Request.setCharacterEncoding(“utf-8”);
Response.setContentType(“text/html;character=utf-8″);
ServletRequest对象
请求方式:
Get 请求:
在地址栏中输入一个地址
点击页面中的链接
表单的默认提交方式
Post 请求:
将表单的Method属性设置为Post时,游览器会发送Post请求
Get 与 Post的区别:
Get的提交参数会显示到地址栏上,而Post不显示
Get 往往有大小限制,而Post没有大小写的限制
get没有请求体,而Post有请求
服务器做出响应
HttpServletResponse对象,服务器端,接受完请求,返回数据给客户端
解决向页面输出中文乱码:
Response.setContentType(“text/html; charset = utf-8”);
setContentType()有两个作用 :
通知容器,在调用out.println方法输出时,使用指定的字符集
生成一个消息头(content-type), 通知游览器,服务器返回的数据类型和字符集
获得输出流
PrintWriter out = response.getWriter();
发送数据
Out.println(“html代码”);
// 使用httpServletResponse 对象 响应数据到客户端
// 解决输出中文乱码
//response.setContentType(“text/html;character = utf-8 “);
response.setContentType(“text/html;charset = utf-8 “);
PrintWriter out = response.getWriter();
out.println(“<h1>” + “hello:” + username + “</h1>”);
ServletResponse对象
重定向
什么是重定向?
服务器向游览器一个302状态码及一个location消息头(该消息头的值是一个地址,称之为重定向地址),游览器收到后会立即向重定向地址发出请求。
如何重定向?
Response.sendRedirect(String url)
重定向特点:
- 重定向地址可以是任意的地址
- 重定向之后,游览器地址的地址栏会发生改变
- 重定向过程中涉及到web组件并不会共享同一个request和response对象
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/114760.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...