servlet中的一些注意事项

1 什么是servlet?

1)Servlet是Sun公司制定的一套技术标准,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案。而具体的Servlet容器负责提供标准的实现。

2)Servlet作为服务器端的一个组件,它的本意是“服务器端的小程序”。Servlet的实例对象由Servlet容器负责创建;Servlet的方法由容器在特定情况下调用;Servlet容器会在Web应用卸载时销毁Servlet对象的实例。

3)简单可以理解为 Servlet就是用来处理客户端的请求的.

2、Servlet开发规则

在实际开发中,通过继承HttpServlet来完成Servlet的开发

public class ServletDemo extends HttpServlet{

}

3、Servlet类的相关方法:

1、doGet : Servlet中用于处理get请求的方法

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}

2、doPost : Servlet中用于处理post请求的方法

doPost方法中默认调用的是doGet的方法

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

3、service

在Servlet的顶层实现中,在service方法中调用的具体的doGet或者是doPost。在实际开发Servlet的过程中,可以选择重写doGet以及doPost 或者 直接重写service方法来处理请求。

 public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException { HttpServletRequest request;
HttpServletResponse response; try {
request = (HttpServletRequest) req;
response = (HttpServletResponse) res;
} catch (ClassCastException e) {
throw new ServletException("non-HTTP request or response");
}
service(request, response);
}

4、关于request和response

(1)request

request的作用有3个:

1、获取浏览器的请求参数,如:

String username = request.getParameter("username");
String password = request.getParameter("password");

2、获取项目的虚拟路径,如:

String contextPath = request.getContextPath();

3、转发

//获取转发器
RequestDispatcher requestDispatcher = request.getRequestDispatcher("WEB-INF/beautiful.html");
//进行请求的转发
requestDispatcher.forward(request, response);

(2)response

response的作用有2个:

1.给浏览器响应一个字符串或一个页面

//响应中文乱码的解决方案:在获取流之前设置响应的内容的类型及字符集

		response.setContentType("text/html;charset=UTF-8");
PrintWriter writer = response.getWriter();
writer.write("响应成功!");

2.重定向

response.sendRedirect("WEB-INF/beautiful.html");

5、转发和重定向的区别

1.转发发送一次请求;重定向发送两次请求

2.转发浏览器地址栏地址无变化;重定向浏览器地址栏地址有变化

3.转发可以访问WEB-INF目录下的资源;重定向不可以访问WEB-INF目录下的资源

4.转发可以共享request域中的数据;重定向不可以共享request域中的数据

使用转发和重定向的场景

一般情况下,登录成功重定向,登录失败使用转发。

6、关于路径的解析问题

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<!-- 可以通过base标签的href属性将当前页面中所有的相对路径变为绝对路径 -->
<base href="http://localhost:8080/Web_Ex/">
</head>
<body>
<a href="pages/login.html">我要登录</a><br>
<br>
<a href="">我要注册</a>
</body>
</html>

什么是绝对路径?

以 / 开头的路径即为绝对路径

/ 代表的意义:

如果路径由浏览器解析,那么 / 代表http://localhost:8080/

以下路径由浏览器解析:

1)HTML标签中的路径:如a标签中href属性中的路径、form标签中action属性中的路径等

2)重定向中的路径

如果路径由服务器解析,那么 / 代表http://localhost:8080/Web_project/

以下路径由服务器解析:

1)web.xml配置文件中url-pattern标签中的路径

2)转发中的路径

Servlet中的一些注意事项的更多相关文章

  1. servlet中urlpatterns注意事项

    在servlet中, @WebServlet(urlPatterns="/newsAdd")接收 resp.sendRedirect("/wedding/houtai/N ...

  2. 如何运用spring将dao注入到servlet中?

    1.servlet的init方法 public void init(ServletConfig config) throws ServletException { super.init(config) ...

  3. Servlet规范简介——web框架是如何注入到Servlet中的

    Servlet规范简介--web框架是如何注入到Servlet中的 引言 Web框架一般是通过一个Servlet提供统一的请求入口,将指定的资源映射到这个servlet,在这个servlet中进行框架 ...

  4. web.xml中在Servlet中获取context-param和init-param内的参数

    引自:http://blog.csdn.net/yakson/article/details/9203231 web.xml里面可以定义两种参数:1.application范围内的参数,存放在serv ...

  5. 关于spring中无法将service注入到servlet中的问题

    首先,servlet是动态网页项目区别于普通的java项目的,是动态网页项目中web.xml主要配置文件管理的,而spring只能管理普通的pojo,而没办法直接注入,尽管你的注入方式和配置方式都没有 ...

  6. JSP+Servlet中使用jspsmartupload.jar进行图片上传下载

    JSP+Servlet中使用cos.jar进行图片上传 upload.jsp <form action="FileServlet" method="post&quo ...

  7. Servlet中转发和重定向的区别

    Servlet中页面的跳转有两种方式:转发和重定向. 1.转发和重定向的区别 ①转发是服务器行为,重定向是客户端行为. ②转发是浏览器发生了一次请求,重定向至少是两次请求. ③转发地址栏中的url不会 ...

  8. [转]servlet中的service, doGet, doPost方法的区别和联系

    原文地址:http://m.blog.csdn.net/blog/ghyg525/22928567 大家都知道在javax.servlet.Servlet接口中只有init, service, des ...

  9. servlet中请求转发(forword)与重定向(sendredirect)的区别

    摘自:http://www.cnblogs.com/CodeGuy/archive/2012/02/13/2349970.html 通俗易懂 servlet请求转发与重定向的区别: request.s ...

随机推荐

  1. 不同程序语言处理加密算法的性能对比(PHP/Golang/NodeJS)

    首先上我最常用且最易用的PHP来做下测试 <?php function test_encrypt($fun, $max) { $begin = microtime(TRUE); $pwdpre ...

  2. Autofac的基本使用---1、前言

    Autofac的基本使用---目录 代码地址 https://github.com/catbiscuit/AutofacStudy 参考网上的大神,原博文地址 https://www.cnblogs. ...

  3. IQueryable的简单封装

    IQueryable的简单封装 前言 前两天在园子上看到一个问题 半年前我也考虑过这些问题,但由于这样那样的问题,没有尝试去解决. 后来公司用上了 abp vnext ,然后有一部分代码可以这样写 p ...

  4. CentOS7 实战源码部署apache网站服务器

    简介:实战演练apache网站服务器的搭建 Apache简介: Apache软件基金会的一个开源免费的网页服务器,也是目前世界上使用最广泛的一种web server , apache最出名的是它跨平台 ...

  5. 微信小程序--页面与组件之间如何进行信息传递和函数调用

    微信小程序--页面与组件之间如何进行信息传递和函数调用 ​ 这篇文章我会以我自己开发经验从如下几个角度来讲解相关的内容 页面如何向组件传数据 组件如何向页面传数据 页面如何调用组件内的函数 组件如何调 ...

  6. 浅谈IAT加密原理及过程

    上一次做完代码段加密后,又接触到了新的加密方式:IAT加密 IAT加密是通过隐藏程序的导入表信息,以达到增加分析程序的难度.因为没有导入表,就无法单纯的从静态状态下分析调用了什么函数,动态调试时,也无 ...

  7. [leetcode]BestTimetoBuyandSellStock买卖股票系列问题

    问题1: If you were only permitted to complete at most one transaction (ie, buy one and sell one share ...

  8. esp-01与esp-01s的区别 ESP8288-01S与ESP8288-01的区别

    ESP8266系列Wi-Fi模块一共有01-14十多款模块, ESP8266-01简称ESP-01, ESP8266-01S简称ESP-01S 至于他们的区别请看下图:左边的是ESP8266-01S, ...

  9. maven打包,跳过生成javadoc

    有时候由于代码中注释错误(比如方法参数)或者maven javadoc插件版本有问题,导致打包报错,而我们着急打包验证问题,没有时间一一修改错误,这时候可以先跳过生成javadoc,继续下一步工作. ...

  10. 容器编排系统K8s之访问控制--RBAC授权

    前文我们了解了k8s上的访问控制机制,主要对访问控制中的第一关用户认证做了相关说明以及常规用户的配置文件的制作,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/ ...