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

网站建设实施计划包括广告公司简介免费

网站建设实施计划包括,广告公司简介免费,制作相片的免费软件,帝国做的网站文章目录 一、三个核心API1.1 HttpServlet【1】地位【2】方法 1.2 HttpServletRequest【1】地位【2】方法【3】关于构造请求 1.3 HttpServletResponse【1】地位【2】方法 四、涉及状态码的错误排查#xff08;404……#xff09;五、关于自定义数据 ---- body或query String … 文章目录 一、三个核心API1.1 HttpServlet【1】地位【2】方法 1.2 HttpServletRequest【1】地位【2】方法【3】关于构造请求 1.3 HttpServletResponse【1】地位【2】方法 四、涉及状态码的错误排查404……五、关于自定义数据 ---- body或query String 里面的内容5.1 地位5.2 给服务器传递自定义数据5.3 获取自定义数据 学习Servlet就是学习API以及如何进行web开发 一、三个核心API 1.1 HttpServlet 【1】地位 编写 Servlet 代码会用到的核心的类。我们通过继承这个类并重写其中的方法把代码交给TomcatTomcat负责在合适的时机去调用 【2】方法 init() 1使用时机原则上 init() 是在Tomcat启动加载webapp的时候就执行了但是Tomcat是可以配置webapp为“懒加载”状态的让webapp在首次且真正被访问到的情况下才加载 2作用进行一些初始化操作 destory() 1使用时机webapp 被销毁的时候执行 2作用进行一些收尾工作 3该方法不一定会被调用到因为destory()是webapp被销毁时被调用到而Tomcat有两种方式结束。实际开发中以第二种方式居多所以我们不能太依赖destory() 一种是通过 8005 端口给Tomcat发送特殊的请求告诉Tomcat要关闭了然后Tomcat调用destory()直接杀死Tomcat进程如任务管理器上直接结束进程此时Tomcat没有机会执行destory() service() 1使用时机每次收到请求都会处理service。实际开发中用得不多多用下面的do三部曲。 2作用处理每个请求 doGet() 1使用时机收到Get请求时 2作用处理Get请求的情景 doPost() 1使用时机收到 Post 请求时 2作用处理 Post 请求的情景 doPut/doDelete……使用时机同doGet、doPost遇到对应的请求会被调用 1.2 HttpServletRequest 【1】地位 Tomcat 收到HTTP请求后就会把请求解析成该对象 【2】方法 getProtocol()返回请求协议的名称和版本getMethod()回请求的 HTTP 方法的名称例如GET、POST 或 PUTgetRequestURI()返回该请求的 URL 什么是URIURL可以理解为是URI的一种实现方式但是两者经常混用 URI指的是唯一资源标识符可以区分不同的资源URL则是唯一资源定位符用来描述网络上一个资源又因为资源是唯一的所以可以定位资源 获取请求中参数的值 getParameterNames()拿到所有的keygetParameter(String name)根据key拿到valuegetParameterValues(String name)涉及到一个key对应到多个value值的情况并不经常使用 获取请求头中的内容获取到请求头的键值对。Tomcat 在收到请求之后会把请求头解析成Map。 getHeaderNames()getHeader(String name) 获取请求主体中的内容 getCharacterEncoding()获取到 contentText 里的字符集。字符集本质上是 contentType 的一部分但是由于关于字符集的操作使用很频繁所以被单独拉出来getContentType()获取到 body 里的类型getContentLength()获取到 body 的长度getInputStream()获取到能读取到body内容的流对象 【3】关于构造请求 服务器只能比较方便地构造出Get请求至于其他类型的请求我们需要使用ajax或者postman构造实际开发中常用的请求是 Get或Post 1.3 HttpServletResponse 【1】地位 与 HTTP响应数据匹配 【2】方法 给 header 赋值 setHeader(String name, String value)如果存在新覆盖旧addHeader(String name, String value)如果存在新旧并存 一般来说约定键值对的key是要唯一的但是实践中可能会出现一个key对应多个value的情况但这个是由浏览器/HTTP客户端来控制的Map无法允许key重复矛盾注意【Tomcat会将header解析成Map形式】只是一种粗略说法实际上Tomcat内部不一定是把header解析成Java标准库的Map。Java标准库的Map并不允许key重复但有第三方库是允许的 示例通过 refresh 属性设置浏览器自动刷新 resp.setHeader(“Refresh”, 2) 浏览器每隔2s自动刷新一次。 实际上并非是精确的2000ms一般会大一些。因为从 “浏览器发起请求” 到 “服务器响应”再到“页面被解析出来”都是需要消耗一定的时间的 设置状态码 setStatus(int sc)关于个性化错误页面Tomcat 是可以在返回状态码的时候给body写入数据的此时就可以得到一个“个性化的错误页面”。Tomcat有自己内置的错误页面比如【resp.sendError(404)】但由于太丑日常开发中我们往往还是会选择自定义 四、涉及状态码的错误排查404…… 404浏览器要访问的资源服务器上并不存在 检查请求路径和服务器配置是否一致确认webapp是否被正确加载我们的程序是通过 405方法不允许 请求发起的方法与对应的doXX方法不匹配。如在浏览器中输入一个url地址就是发起Get请求。没有删除父类的方法。如父类的doGet方法会先获取一个版本号根据版本号发送不同的错误并会指定一个错误页面 500服务器内部错误代码出现了异常空白页面服务器没有给浏览器返回任何的body数值无法访问此网站Tomcat 服务器未正确运行/IP/端口号编写不对 五、关于自定义数据 ---- body或query String 里面的内容 5.1 地位 实际开发中利用header的部分较少更多的时候我们是希望获取到 query string 或 body 的内容因为这些内容是自定义的可以供我们完成服务。 5.2 给服务器传递自定义数据 方式HttpServletResponse有获取参数的方法获取的参数就是我们传过去的这些数据。我们共有四种方式传递数据ax传递、Postman传递form表单、Postman传递JSON数据、ajax传递。ax传递 这个是把数据传到query string里query string本身是键值对结构的数据Tomcat 在收到这个请求后就会把这个query string解析成Map这样的键值对使用getparameter就可以根据key获取到value。 Postman传递form表单使用form表单的形式提交此时的body也是键值对格式 这个是把数据传到 body 里如果是通过post form表单的形式提交的请求body此时就也是和query string一样的键值对格式如何发送数据 Postman传递JSON数据 注意JSON格式下key一定是字符串格式原则上key是不需要加“”但是有些库/程序检查比较严格是需要给key加上“”的.Postman 构造的JSON数据需要给key加上“”Ajax 构造的则不需要加上“” 类里面的属性为什么不使用private本身Jackson 会通过反射的方式把User类里包含的public属性都获取到此时就可以根据反射这里得到的“属性名字”去JSON解析出来的键值对中进行匹配如果匹配到了就把value设置到刚才得到的属性中。而Jackson并不会直接针对private属性进行扫描所以如果要使用private需要提供getter和setter方法 class User{public String username;public String password; } WebServlet(/JSON) public class JSONServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ObjectMapper objectMapper new ObjectMapper();User user objectMapper.readValue(req.getInputStream(), User.class);resp.getWriter().write(user.username);resp.getWriter().write(br);resp.getWriter().write(user.password);} }ajax传递 既可以传到 query string也可以传递body中如果是传递到 query string 中依旧可以使用 getParameter 来获取如果是使用 ajax Post 提交【不是 from表单的格式】就需要使用 getInputStream 来获取 5.3 获取自定义数据 获取query string 里的值 约定数据约定前端传过来一个怎样的数据 形如 【password 】这样的请求只说明 key不说明 valuepassword的值将是“”即一个空字符串。如果不传password忽略keypassword的值是null 选择调用的方法调用getParameterNames()、getParameter(String name)、getParameterValues(String name)方法 获取body(只考虑form表单的格式) 约定数据Post方法下提交的数据才会在body里和query string一样使用 getParameter(String name)方法获取数据 获取body(考虑为JSON格式) 为什么要引入Jackson库 Servlet 自身不能对JSON的数据进行解析所以我们需要引入第三方库来解析body数据把这里面的键值对还原成如Map一样【key-value】的形式。而能够实现解析操作的库很多我们这里使用Jackson来解析。引入 Jackson 库通过Maven引入选择【Jackson Databind】。版本选哪个都行但最好不要选择新版本因为新版本往往没有经过时间充分的验证可能会有问题如何使用Jackson库一个类两个方法 ObjectMapper类对象映射可以实现JSON数据和对象间的转换JSON数据转类对象readValue(InputStream srcJavaType valueType)该方法会先把JSON字符串解析成键值对再放到Map中然后根据参数填入的类对象通过反射API知道这个类的属性名和类型一次把这里的每个属性都取出来后通过属性名字查询上述的Map最后把得到的值赋值给这个类的属性。类对象转JSON数据writeValueAsString(Object value) 关于类和JSON格式的转换问题因为是使用匹配来转换所以构建类要求属性名和键值对相同
http://www.pierceye.com/news/157319/

相关文章:

  • a站网址东莞市网络seo推广价格
  • 莱州市双语网站seo白帽优化
  • 不忘初心网站建设深圳公租房官网
  • 网站点击率原因深圳做自适应网站制作
  • 上海个人建站小程序注册完成后如何制作
  • 微网站开发平台 开源大庆做网站公司
  • 长沙市住房和城乡建设局网站wordpress付费可见插件
  • 建设个人网站的参考网站及文献辽宁建设工程造价管理网站
  • 如何做360网站的排名新品发布会策划方案ppt
  • 网站后台登陆破解哪里有网站模板下载
  • 网站制作器软件下载建站备案
  • 网页模板下载网站站长素材音效网
  • 青岛网站建设要多少钱关键词优化是怎样收费的
  • 网站国际联网备案WordPress文章分页伪静态
  • 电子商务网站开发的任务书东莞seo关键词搜索关键词
  • 宁乡网站建设在哪小天才电话手表网站
  • 中文响应式网站搜搜网站提交
  • 华为官方网站手机商城首页大淘客网站商品做淘口令
  • 建站公司网站的关键词怎么设置
  • 上海二手房网站制作游戏需要什么技术
  • 湖州市城市建设档案馆网站电子商务网站怎么建
  • 网站超级外链做企业网站大约多少钱
  • 中国网站建设市场分析桂林公司网站搭建
  • 阿里云 企业网站选哪种洞窝app是谁开发的
  • ppt模板做的好的网站有哪些wordpress 多站点设置
  • ui作品集 网站怎么做网站制作加我
  • 自助做网站wordpress更换本地主题
  • 凡科网多页网站怎样做一线城市做网站工资有多少
  • .asp网站怎么做需要一个网站
  • 免费网站代码大全网站开发费入什么费用