Bootstrap

前端servlet,Ajax,JavaScript等知识点汇总

servlet:

1.三种servlet的实现方法:

可以接收的协议有:GET,POST,HEAD,OPTIONS,PUT,DELETE,TRACE。

(1)实现Servlet接口:

实现接口就要实现它的所有方法

public class FirstServlet implements Servlet{
@Override
public void destroy() {
/*当容器检测到一个Servlet对象应该从服务器中被移除的时候,容器会调用该对象的destroy方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久化存储设备中,例如:将内存中的数据保存到数据库中,关闭数据库的连接。
*/
}
@Override
public ServletConfig getServletConfig() {
	return null;
}
@Override
public String getServletInfo() {
	return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
	/*在Servlet实例化之后,Servlet容器会调用init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求之前可以完成一些初始化工作,比如:建立数据库的连接,获取配置信息。*/
}

@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
/*容器调用service()方法来处理客户端的请求。*/
}
(2)继承GenericServlet类

重写抽象GenericServlet类中的service方法即可,在它自己的方法体内简单实现了其他四种方法,即GenericServlet类定义了一个通用的,不依赖具体协议的Servlet

public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		res.setContentType("application/xml;charset=UTF-8");
		PrintWriter pw=res.getWriter();
			//写需要在浏览器上输出的内容
	}
(3)继承HttpServlet类

重写抽象的HttpServlet类中的doGet或者doPost方法即可。

HttpServlet继承自GenericServlet类,用于创建适合Web站点的HTTP Servlet,方便快速开发应用于Http协议的Servlet。

public class ThreeServlet extends HttpServlet{
    private static final long serialVersionUID = 1L;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    /*自己编写的在浏览器上显示一个图片
        resp.setContentType("image/jpeg");
        try (BufferedInputStream bis=new BufferedInputStream(new FileInputStream("C:\\Users\\asus\\Desktop\\1.png"));
            OutputStream ous=resp.getOutputStream();){
            int date=-1;
            while((date=bis.read())!=-1) {
                ous.write(date);
            }
            ous.flush();

        } catch (Exception e) {
            e.printStackTrace();
        }
        */
}	}

注意:doPost和doGet方法,从request解析请求信息开始,根据http协议的格式进行解析,分发到不同的请求处理方法中,但是这两个方法都是被Service方法调用的。

1.doGet方法和doPost方法的区别(get:从指定的资源请求数据;post:提交要被处理的数据)

​ (1)form运行方式:

	当form框里面的method为get时,执行doGet方法,表单的数据集的值必须是ASCII字符
	当form框里面的method为post时,执行doPost方法,Post支持整个ISO10646字符集

​ (2)生成方式:

​ get方式:

1,直接在URL地址栏中输入URL。
2,网页中的超链接。
3,form中mothod为get
4.form中method为空时,默认是get提交
5.<image src=" ">访问图片
6.外部js,css文件的引入
7.在Javascript代码中访问资源
8.Ajax中设置请求为get方式
9.使用jsp相关标签访问资源

post方式:

form中method属性为post
Ajax中设置请求为post方式

(3)数据传送方式

get方法:

1.表单数据存放在URL地址后面,以key=value方式缀在url后面。所有get方式提交时HTTP中没有消息体
2.把参数数据队列加到提交表单的Action属性所指的URL中,值和表单内的各个字段一一对应,在URL中可以看到
3.请求可被缓存。
4.请求保留在浏览器历时记录中
5.请求可被收藏为书签

post方法:

1.表单数据存放在HTTP协议的消息体中以实体的方式传送到服务器。
2.通过post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。参数放在请求体部,用户看不到这个过程。
3.请求不可被缓存。
4.请求不保留在浏览器历时记录中
5.请求不可被收藏为书签

例:如果第三种实现servlet中的方法的方法用doPost方法,在浏览器中就不会显示出图片

(4)服务器获取数据的方式

Get方法:服务器采用request.QueryString来获取变量的值
	根据url后面的?进行截取,获取到表单参数的值
Post方法:服务器采用request.Form来获取数据

(5)传送的数据量:

Get方法:数据量长度有限制,一般不超过2kb。因为是参数传递,且在地址栏中,故数据量有限制。

Post方法:适合大规模的数据传送。因为是以实体的方式传送的。

(6)安全性

Get方法:安全性差。因为是直接将数据显示在地址栏中,浏览器有缓冲,可记录用户信息。所以安全性低。

Post方法:安全性高。因为post方式提交数据时是采用的HTTP post机制,是将表单中的字段与值放置在HTTP HEADER内一起传送到ACTION所指的URL中,用户是看不见的。

(7)在用户刷新时

Get方式:不会有任何提示

Post方式:会弹出提示框,问用户是否重新提交。

(8)编码类型

get:application/x-www-form-urlencoded
post:application/x-www-form-urlencoded or multipart/form-data。为二进制数据使用多重编码。

注意:

  • 使用Get方法的场景:做数据查询/自己测试代码查看是否获得数据。
  • 使用Post方法的场景:在做数据添加,修改或删除时,为了数据的保密性,使用Post方法

2.两种资源定位方式:

1.tomcat3.0之前必须使用配置文件web.xml
<servlet>
	<servlet-name>servlet名称</servlet-name> 		
	<servlet-class>全类名</servlet-class>  
	 <load-on-startup>5</load-on-startup>       
	 /*,可以不进行配置,这里是设置这个servlet中的Init()的执行时间,正数(0-10)init()方法会随着服务器的启动而执行,如果设置一个负数,Init()方法会随着访问servlet而执行,默认是负数,随着访问servlet而执行init();*/
    </servlet>
  <servlet-mapping>
  		<servlet-name>servlet名称</servlet-name>
  		<url-pattern>servlet资源路径</url-pattern>   
  		/* 如果为非通配路径,必须以/开始,/*/
  </servlet-mapping>
2.使用注解的方式

servlet3.0以上版本可以使用注解的方式来配置servlet的资源路径

在类上面使用 @WebServlet(name=“three”,url-pattern={"/three.do"})字符数组,可以写多个

或者 简写为@WebServlet("/资源路径")

注意:

一个Servlet可以定义多个访问路径 : @WebServlet({"/xxx","/xxxx","/xxxxx"})
      路径定义规则:
       1. /xxx:路径匹配
  @WebServlet({"/test","/test2","/test3"}) //多个访问路径
       2. /xxx/xxx:多层路径,目录结构
   WebServlet("/user/delete")  //多层路径
       3. *.do:扩展名匹配
    @WebServlet("*.ation") //扩展名匹配,此种方式是在struts1、struts2里面使用的

3.Servlet生命周期:

1.创建

4.servlet在运行期间是单例模式

web容器中单例模式:servlet对象在第一次创建之后就维护这个对象,再次调用service方法时,从容器中找出这个对象用来调用方法。

1.饿汉式单例模式

定义:一个类有且仅有一个实例,并且自行实例化向整个系统提供

5.接收参数

(1).接收单一的参数值,即一个key=value,使用getParameter方法

例:

<
;