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

快速建站哪里好网站建设方案 评价

快速建站哪里好,网站建设方案 评价,怎么做门户网站设计,最新新闻热点Tomcat Servlet 一、What is “Tomcat”?二、 What is “Servlet”?1、HttpServlet2、HttpServletRequest3、HttpServletResponse 一、What is “Tomcat”? Tomcat 本质上是一个基于 TCP 协议的 HTTP 服务器。我们知道HTTP是一种应用层协议#xff0c;是 HTTP 客户端… Tomcat Servlet 一、What is “Tomcat”?二、 What is “Servlet”?1、HttpServlet2、HttpServletRequest3、HttpServletResponse 一、What is “Tomcat”? Tomcat 本质上是一个基于 TCP 协议的 HTTP 服务器。我们知道HTTP是一种应用层协议是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式。Tomcat 就是基于 Java 实现的一个开源免费也是被广泛使用的 HTTP 服务器。 以下是 Tomcat 安装完成后的文件目录 运行Tomcat我们可以使用cmd命令查看Tomcat的端口号的进程ID 二、 What is “Servlet”? 对于网站的后端开发我们总是围绕着 HTTP 服务器展开相关工作当然我们也可以重 0 开始写一个服务器一步步的实现服务器的功能包括根据 HTTP 协议解析请求报文、根据HTTP构造响应报文等等……对于服务器来说很多功能都是千篇一律的如果我们把中心放到整个服务器的开发上这对于业务逻辑的开发来说显然是非常不友好的。因此我们可以借助现成的 HTTP 服务器进行开发例如 Tomcat 就为我们省去了这些不必要的环节为我们提供了一些列的 API 让我们能够更专注于业务逻辑。 Servlet 就是一组 Tomcat 提供的 API让程序猿自己写的代码能很好的和 Tomcat 配合起来从而更简单的实现一个 webapp而不必关注 Socket、HTTP协议格式、多线程并发等技术细节降低了 webapp 的开发门槛提高了开发效率。 Servlet 中提供的 API 有很多这里我们重点掌握 3 个类HttpServlet、HttpServletRequest、HttpServletResponse下面我们逐一介绍 1、HttpServlet 我们写 Servlet 代码的时候首先第一步就是先创建类继承自 HttpServlet并重写其中的某些方法。 HttpServlet 核心方法展示 方法名称调用时机init在 HttpServlet 实例化之后被调用一次destroy在 HttpServlet 实例不再使用的时候调用一次service收到 HTTP 请求的时候调用doGet收到 GET 请求的时候调用 (由 service 方法调用)doPost收到 POST 请求的时候调用 (由 service 方法调用)doPut/doDelete/doOptions/…收到其他请求的时候调用(由 service 方法调用) 其中 init、destroy、service 这 3 个方法的调用时机就称为 “Servlet 生命周期” init方法只会在初始情况下调用1次也就是HttpServlet实例化时调用一般使用这个方法做一些初始化的相关工作。(HttpServlet 的实例只是在程序启动时创建一次而不是每次收到 HTTP 请求都重新创建实例。)destroy方法用于该webapp被销毁之前执行1次用来做一些首尾工作。但是并不建议使用这个方法因为通常采用直接杀死进程的方式停止服务器此时destroy执行不了。service方法每次收到路径匹配的请求都会执行例如上述doGet、doPost方法其实都是在service方法中被调用一般不会重写service方法。 在实际开发中我们往往重写 doXXX 方法很少会重写 init / destory / service WebServlet(/hello) public class HelloServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.getWriter().write(hello world);} }代码说明 在这个类上方加上 WebServlet(/hello) 注解, 表示 Tomcat 收到的请求中, 路径为 /hello的请求才会调用HelloServlet 这个类的代码 HttpServletRequest 表示 HTTP 请求。Tomcat 按照 HTTP 请求的格式把 字符串 格式的请求转成了一个 HttpServletRequest 对象。后续想获取请求中的信息(方法、url、 header、body 等) 都是通过这个对象来获取。 HttpServletResponse 表示 HTTP 响应。我们可以根据resp响应对象提供的方法构造响应的状态码, header, body 等。Tomcat 会把整个响应转成字符串通过 socket 写回给浏览器。 2、HttpServletRequest 当 Tomcat 通过 Socket API 读取到 HTTP 请求字符串后就会按照 HTTP 协议的格式把字符串解析成 HttpServletRequest 对象。 HttpServletRequest 提供了一些方法可以获取到一个请求中的各个方面的信息 HttpServletRequest 提供的方法都只是“读”方法而不是“写”方法。其实这也很容易理解请求对象是服务器收到的内容不应该被修改。 方法描述String getProtocol()返回请求协议的名称和版本。String getMethod()返回请求的 HTTP 方法的名称例如GET、POST 或 PUT。StringBuffer getRequestURL()它用于获取请求的URL不包含 query stringString getRequestURI()它用于获取请求的统一资源标识符URI的部分即资源路径。String getContextPath()获取请求的ContextPathContextPath标识一个webapp即webapp的目录名String getServlettPath()获取请求的ServletPathServletPath标识一个类String getQueryString()返回包含在路径后的请求 URL 中的查询字符串。Enumeration getHeaderNames()返回一个枚举包含该请求中包含的所有请求头名。String getHeader(String name)以字符串形式返回指定请求头的值。String getCharacterEncoding()返回请求主体中使用的字符编码的名称。String getContentType()返回请求主体的类型如果不知道类型则返回 null。int getContentLength()以字节为单位返回请求主体的长度如果长度未知则返回 -1。InputStream getInputStream()返回一个 InputStream 对象用于读取请求的 body 内容。 上面这些方法只要对HTTP协议足够了解简单看一下就能够使用。这里主要介绍有关getParameter相关的方法 方法描述Enumeration getParameterNames()返回一个枚举表示在该请求中包含的参数的名称。String getParameter(String name)返回请求参数的值以字符串形式返回如果参数不存在则返回 null。String[] getParameterValues(String name)返回一个字符串数组表示给定请求参数的所有值如果参数不存在则返回 null。 这些方法主要是获取请求中的请求信息的下面以getParameter()为例 1. 获取GET请求中的参数值 WebServlet(/getParameter) public class Test extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 前端通过 url 的 query string 传递 username 和 password 两个属性.String userName req.getParameter(username);String passWord req.getParameter(password);resp.setContentType(text/html; charsetutf-8);resp.getWriter().write(usernameuserNamebr/passwordpassWord);} }2. 获取POST请求中的参数值 1请求参数通过body传递采用 form 表单格式提交即 Content-Type 是 application/x-www-form-urlencoded 此时同样可以使用getParameter直接获取参数值 注意需要显示地告诉后端请求的编码方式防止解析请求时出现中文乱码情况。 WebServlet(/postParameter) public class Test extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 显示地告诉后端请求的编码方式防止中文乱码req.setCharacterEncoding(utf8);// 前端通过 url 的 query string 传递 username 和 password 两个属性.String userName req.getParameter(username);String passWord req.getParameter(password);resp.setContentType(text/html; charsetutf-8);resp.getWriter().write(usernameuserNamebr/passwordpassWord);} }2请求参数通过body传递Content-Type 是 application/json 对于Servlet其没有内置 json 的解析功能此时想要获取这种格式的参数就需要借助第三方库 jackson首先我们在中央仓库找到 jackson 依赖引入到 pom.xml 中然后就可以编写解析 json 格式请求参数的代码了。 使用 jackson最核心的对象就是 ObjectMapper通过这个对象里面的两个方法就可以把 json 字符串解析成 java 对象也可以把一个 java 对象转成一个 json 格式字符串具体如下 writeValueAsString 方法把一个 Java 对象转成 JSON 格式字符串。readValue方法 第一个参数为输入流对象或Json字符串的第二个参数为 JsonData 的 类对象通过这个类对象在 readValue 的内部就可以借助反射机制来构造出 Java 对象。 class User {public String username;public String password;Overridepublic String toString() {return User{ username username \ , password password \ };} }WebServlet(/jsonParameter) public class Test extends HttpServlet {private ObjectMapper objectMapper new ObjectMapper();Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 设置响应格式resp.setContentType(text/html;charsetutf-8);// 通过 post 请求的 body 传递过来一个 json 格式的字符串.// 1.使用objectMapper将json字符串解析成java对象User user objectMapper.readValue(req.getInputStream(), User.class);resp.getWriter().write(1.使用objectMapper将json字符串解析成java对象:br/user.toString()br/);// 2.使用objectMapper将java对象解析成json字符串String jsonString objectMapper.writeValueAsString(user);resp.getWriter().write(2.使用objectMapper将java对象解析成json字符串:br/jsonString);} }3、HttpServletResponse Servlet 中的 doXXX 方法的目的就是根据请求计算得到响应然后把响应的数据设置到 HttpServletResponse 对象中Tomcat 内壁就会把这个 HttpServletResponse 对象按照 HTTP 协议的格式转成一个字符串并通过 Socket 写回给浏览器。 响应对象是服务器要返回给浏览器的内容这里的重要信息都是程序员根据请求设置到响应中的因此下面的方法都是 “写” 方法。 下面是在设置响应时常用到的方法 方法描述void setStatus(int sc)为该响应设置状态码。void setHeader(String name, String value设置一个带有给定的名称和值的 header。如果 name 已经存在则覆盖旧的值。void addHeader(String name, String value)添加一个带有给定的名称和值的 header。如果 name 已经存在不覆盖旧的值并列添加新的键值对。void setContentType(String type)设置被发送到客户端的响应的内容类型。void setCharacterEncoding(String charset)设置被发送到客户端的响应的字符编码MIME 字符集例如 UTF-8。void sendRedirect(String location)使用指定的重定向位置 URL 发送临时重定向响应到客户端。PrintWriter getWriter()用于往 body 中写入文本格式数据。OutputStream getOutputStream()用于往 body 中写入二进制格式数据。 其实上面这些方法和同样只要对HTTP协议足够了解简单看一下就能够使用下面就简单演示几个方法体会一下设置响应的过程 1设置自动刷新 WebServlet(/Refresh) public class Refresh extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 设置自动刷新刷新频率每隔1秒自动刷新一次resp.setHeader(Refresh,1);resp.getWriter().write(time System.currentTimeMillis());} }2设置重定向 方式1使用 sendRedirect 方法 WebServlet(/Redirect) public class Redirect extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 设置重定向resp.sendRedirect(https://www.baidu.com);} }方式1使用 setStatus setHeader方法 WebServlet(/Redirect) public class Redirect extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {// 设置重定向resp.setStatus(302);resp.setHeader(Location,https://www.baidu.com);} }
http://www.sczhlp.com/news/200611/

相关文章:

  • 泗阳做网站公司电子商务网站开发与设计项目管理
  • 网站建设需要几十万浏览器搜索引擎大全
  • 建设网站的多少钱南京做网站外包
  • 电商网站对比表格企业为什么要建立战略联盟
  • 对手网站分析淘宝店有给网站做优化am
  • 学网站建设好吗女性开源网站
  • 织梦律师网站模版seo排名赚app官网
  • 10月16日
  • 进口高温高压粘度计优质供应商,粘度计代理商推荐
  • Apache Doris 内部数据裁剪与过滤机制的完成原理
  • wordpress调用 别的网站wordpress widget
  • 网站开发用什么程序好网站打不开
  • 平台建网站推广软件是什么意思
  • 最简单的网站代码免费网站部署
  • 垂直网站建设规模学网站设计
  • 江苏建设行政主管部门网站百度网盘下载
  • 手机制作网站的软件有哪些东西泉州百度seo
  • 上海高端模板建站海南省住房公积金管理局网上办事大厅
  • 长沙岳麓区网站开发网站建设技术托管
  • 深圳南山企业网站建设报价合肥效果图制作公司
  • 网站建设登录企业网站设计与规划论文
  • 工程项目网站免费建站的手机app
  • 农业网站 源码个人网站设计图
  • 免费生成图片的网站电子商务网站建设首页流程
  • 韩国企业网站设计山西大型网络营销设计
  • 做网站的公司多吗黄骅港属于哪个省哪个市
  • 同一备案号 多个网站天津网站建设推广服务
  • 手机商场网站制作wordpress获取所有标签页
  • 坊网站建设怎么实现网站建设报价方案
  • 盐城做企业网站公司千库网免费素材图库