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应答报文就是服务器向浏览器发送的数据信息
三,步骤
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!");
}
}
<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>
四,执行原理
五,servlet生命周期
<load-on-startup>-1</load-on-startup>:
正数和0则是启动就创建,负数表示第一次访问才创建。默认的是负数。
注意:init方法只执行一次也就是内存中只有一个servlet对象,多线程访问的时候容易存在安全问题,所以尽量不要定义成员变量,或者不要给成员变量赋值。
六,注解配置
我们发现配置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—抽象类
@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方法被执行了。
欢迎指正,共同进步!