servlet需要掌握的知识

servlet-快速入门

1. servlet 概念
2. servlet 作用
3. 使用步骤
4. 执行原理
5. 生命周期
6. servlet3.0注解配置
7. servlet 体系结构

一,servlet 概念
servlet:(server applet)指运行在服务器端的小程序。
本质:servlet就是一个接口,定义了java类被浏览器访问到tomcat识别的规则,定义一个类实现servlet接口,并重写其方法就可以了。

二,servlet 作用
servlet其实就是处理浏览器与服务器之间的数据的,因为web是基于http协议的,request就是浏览器向服务器进行发送数据形成的数据对象,response应答报文就是服务器向浏览器发送的数据信息

三,步骤

  • 1,定义一个类实现接口servlet
  • 2,重写servlet中的方法
package servletdemo;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class ServletDemo1 implements Servlet {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("你好servlet!");
	}

}

  • 3,配置servlet
    在web.xml文件中配置servlet
<servlet>
    <description></description>
    <display-name>ServletDemo1</display-name>
    <servlet-name>ServletDemo1</servlet-name>//类名
    <servlet-class>servletdemo.ServletDemo1</servlet-class>//全路径
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletDemo1</servlet-name>
    <url-pattern>/Servlet</url-pattern>//资源路径
  </servlet-mapping>

四,执行原理

  • 1,当服务器接收到客户端浏览器的请求后,会解析请求url路径,获取访问servlet的资源路径。
  • 2,查找web.xml文件,是否有对应的标签内容
  • 3,如果有则找全类名
  • 4,tomcat会将字节码文件加载进内存,并创建其对象
  • 5,调用其方法

五,servlet生命周期

  • 1,被创建:执行init方法,只执行一次
    配置文件中有一个
    <load-on-startup>-1</load-on-startup>:
正数和0则是启动就创建,负数表示第一次访问才创建。默认的是负数。
注意:init方法只执行一次也就是内存中只有一个servlet对象,多线程访问的时候容易存在安全问题,所以尽量不要定义成员变量,或者不要给成员变量赋值。
  • 2,提供服务:执行service方法,可以多次
  • 3,被销毁:执行destroy方法,只执行一次
    服务器正常关闭时才会指向destroy方法,一般用于释放资源。

六,注解配置

我们发现配置web.xml文件太麻烦了,所以在servlet3.0版本以后可以使用注解进行配置。

方式:在类的上面
@webservlet("资源路径就可以啦 "),是不是感觉特别的方便。
参数:urlpattern = 资源路径

@WebServlet("/demo2")

可以配置多个资源路径,(“/demo1”,“/demo2”,“demo3”)
/*输入任何都可以访问
所以访问时输其中任意一个路径就可以访问。

七,servlet体系结构

service方法判断请求方式
string method = res.getmethod();
if(’‘get’.equals(method))
{ }elseif(“post”.equals(method)){
}
servlet—接口
genericservlet–抽象类
httpservlet—抽象类

  • genericservlet :抽象类实现接口;并且将servlet中的其他方法进行了空实现,只将service方法作为抽象方法,所以当我们定义servlet时,可以进行继承genericservlet,实现一个sevice方法就可以啦
  • httpservlet:对http协议的一种封装,简化操作
    1,定义一个实现类进行继承httpservlet就可以。
    2,重写doget()和dopost()方法进行判断请求方式。
    例如:
@WebServlet("/demo2")
public class ServletDemo2 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("我是httpservlet doget。。。。。。");
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("我是httpservlet dopost。。。。。。");
	}

当我们访问这个servlet时,doget方法被调用
在这里插入图片描述
通过访问jsp文件,测试下post方法

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
    <form action="/servletdemo/demo2" method = "post">
     <input type=password>
     <input type = submit value= "提交">    
    </form>
  </body>
</html>

然后我们点击提交后

我是httpservlet dopost。。。。。。

说明post方法被执行了。

欢迎指正,共同进步!

你可能感兴趣的:(servlet需要掌握的知识)