欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

JavaWeb(part1)--servlet

发布时间:2023/12/19 java 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 JavaWeb(part1)--servlet 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

学习笔记,仅供参考,有错必究


文章目录

    • JavaWeb
      • 什么是Servlet
      • 举个例子
      • Servlet执行原理
      • Servlet注解
      • Servlet的体系结构
      • Servlet访问路径的配置
      • 注意事项


JavaWeb


什么是Servlet


Servlet就是运行在服务器端的小程序,本质上servlet就是一个实现了servlet接口的类,servlet接口定义了Java类被tomcat识别的规则。


举个例子


首先,我们创建一个JAVAEE项目项目ServletDemo,并在src文件夹下创建com.servlet.demo包,并在其中创建Demo1.html, 定义类实现Servlet接口,并实现接口中的service方法:

package com.servlet.demo;import java.io.IOException;import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebServlet;public class Demo1 implements Servlet {@Overridepublic void destroy() {// TODO Auto-generated method stubSystem.out.println("destroy");}@Overridepublic ServletConfig getServletConfig() {// TODO Auto-generated method stubreturn null;}@Overridepublic String getServletInfo() {// TODO Auto-generated method stubreturn null;}@Overridepublic void init(ServletConfig arg0) throws ServletException {// TODO Auto-generated method stub}@Overridepublic void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {// TODO Auto-generated method stubSystem.out.println("Hello Gui");}}

在WebContent的WEB-INF文件夹下的web.xml里配置Servlet:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>ServletDemo</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><!--增加的代码,start--><servlet><servlet-name>demo-01</servlet-name><servlet-class>com.servlet.demo.Demo1</servlet-class></servlet><servlet-mapping><servlet-name>demo-01</servlet-name><url-pattern>/my_demo</url-pattern></servlet-mapping><!--增加的代码,end--></web-app>

运行项目,向http://localhost:8080/ServletDemo/my_demo发起请求,控制台得到如下输出:

Hello Gui

Servlet执行原理


Servlet注解

定义类实现Servlet接口,实现接口中的方法,并在类上使用@WebServlet注解配置。


Servlet的体系结构

  • Servlet接口

  • GenericServlet抽象类

  • 将Servlet的其它方法做了默认的空实现,只将Service方法做了抽象,继承该抽象类只需要实现Service方法即可

  • HttpServlet抽象类

  • 对Http协议的封装简化操作,判断请求方式进行对应处理

  • 继承该抽象类需要实现doGet和doPost方法


Servlet访问路径的配置


一个Servlet可以定义多个访问路径

@WebSevlet({“/s1”,”/s2”,”/s3”})

路径定义规则:

/xxx /xxx/xxx /xxx/* *.do

例如:

package com.servlet.demo;import java.io.IOException;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;@WebServlet({"/d03/*", "/dd003/*"}) public class Demo03 extends HttpServlet{@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stub // super.doPost(req, resp);System.out.println("我是demo03的post");}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// TODO Auto-generated method stub // super.doGet(req, resp);System.out.println("我是demo03的get");} }

注意事项


  • Servlet是单例的

  • 多个用户同时访问可能存在线程安全问题

  • 尽量不要在Servlet中定义成员变量,如果定义了,不要在方法中修改

  • 服务器被关闭时Servlet被销毁

  • 先执行Destroy然后Servlet才被销毁


总结

以上是生活随笔为你收集整理的JavaWeb(part1)--servlet的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。