Java-Servlet
概念
运行在服务器上的小程序
- Servelt就是一个接口,定义了java类被浏览器访问到(tomcat识别)的规则
- 需要自定义一个类,实现接口复写方法
快速入门
- 创建JavaEE项目
- 定义一个类,实现servelt接口
- 实现接口的抽象方法
- 配置servelt
简单例子
类实现servelt接口
这里只改写了service方法
package servelt;
import javax.servlet.*;
import java.io.IOException;
public class ServeltDemo1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
//提供服务的方法
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("tql");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
web.xml添加内容 配置servelt
在web.xml文件下的
<!-- 配置servlet-->
<!-- 给类取一个名字-->
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>servelt.ServeltDemo1</servlet-class>
</servlet>
<!--进行映射-->
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
</web-app>
运行程序:
每次加载这个页面以后 idea输出框都会输出一次tql


工作原理

Servlet的5个方法
package servelt;
import javax.servlet.*;
import java.io.IOException;
public class ServeltDemo2 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
/*初始化方法
* 在Servlet被创建时执行,只会执行一次*/
System.out.println("init------");
}
@Override
public ServletConfig getServletConfig() {
//获取ServletConfig对象
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//提供服务方法 每次Servlet被访问时执行,可以执行多次
System.out.println("service------");
}
@Override
public String getServletInfo() {
//获取Servlet的一些信息,版本作者等
return null;
}
@Override
public void destroy() {
//销毁方法
//在Servlet被销毁时执行,只执行一次
//在Servlet销毁之前执行,一般用于释放资源
System.out.println("destoey----");
}
}
设置Servlet什么时候创建
在web.xml文件下修改
<!-- 给类取一个名字-->
<servlet>
<servlet-name>demo2</servlet-name>
<servlet-class>servelt.ServeltDemo2</servlet-class>
<!--指定Servlet的创建时机-->
<!--1 第一次被访问时创建 为负数
2 在服务器启动时被创建 为0或正数-->
<load-on-startup>-1</load-on-startup>
</servlet>
用servlet3进行配置
package servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
//进行配置路径
@WebServlet("/demo")
public class ServletDemo1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("servlet3.0---");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}


Servlet的线程安全问题
由于init方法只执行一次,说明在内存中只存在一个对象,是单例的
多个用户同时访问时,可能存在线程安全问题
因此需要我们尽可能的不在Servlet中定义成员变量,即使定义了也不要去修改这个值
urlpartten配置相关
配置多个虚拟路径
用一个数组包起来
如:
@WebServlet({"/d4","/demo4","/dd4"})
路径定义规则
1./xxx
2./xxx/xxx 多层路径
3.*.xx 没有/

浙公网安备 33010602011771号