【JavaWeb】Servlet

简介: 【JavaWeb】Servlet

Servlet简介

  • Servlet是sun公司开发动态web的一门技术
  • Sun在这些API中提供一个接口叫做:Servlet,如果想开发一个Servlet程序,需要
  • 编写一个类,实现Servlet接口
  • 把开发好的Java类部署到web服务器中
  • 把实现了Servlet接口的Java程序叫做:Servlet

HelloServlet

Servlet接口Sun公司有两个默认的实现类:HttpServlet、GenericServlet

1、 关于Maven父子工程的理解

父项目中会有

1.  <modules>
2. <module>servlet-01</module>
3. </modules>

子项目中会有

1. <parent>
2. <artifactId>javaweb-02-servlet</artifactId>
3.   groupId>com.wangsiqi</groupId>
4. <version>1.0-SNAPSHOT</version>
5. </parent>

父项目中的jar子项目可以直接使用

son extends father

2、Maven环境优化

  1. 修改web.xml为最新的
  2. 讲Maven的结构搭建完整

3、编写一个Servlet程序

  1. 编写一个普通类
  2. 实现Servlet接口,这里默认继承HttpServlet
1. package com.wangsiqi.servlet;
2. 
3. import javax.annotation.Generated;
4. import javax.servlet.ServletException;
5. import javax.servlet.http.HttpServlet;
6. import javax.servlet.http.HttpServletRequest;
7. import javax.servlet.http.HttpServletResponse;
8. import java.io.IOException;
9. import java.io.PrintWriter;
10. 
11. public class HelloServlet extends HttpServlet {
12.   //    由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样
13.   @Override
14.   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
15.     //        super.doGet(req,resp);
16.     PrintWriter writer = resp.getWriter();//响应流
17.     writer.println("Hello,Servlet");
18.   }
19. 
20.   @Override
21.   protected void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
22.     super.doPost(req,resp);
23.   }
24. }

4、编写Servlet的映射

为什么需要映射?

我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中,注册我们写的Servlet,还需一个浏览器能够访问

1. <!--注册Servlet-->
2. <servlet>
3. <servlet-name>hello</servlet-name>
4. <servlet-class>com.wangsiqi.servlet.HelloServlet</servlet-class>
5. </servlet>
6. <!--Servlet的请求路径-->
7. <servlet-mapping>
8. <servlet-name>hello</servlet-name>
9. <url-pattern>/hello</url-pattern>
10. </servlet-mapping>

5、配置Tomcat

注意:项目启动的路径

Servlet原理

Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会:

Mapping问题

可以自定义后缀实现请求映射

PS:*前面不能加项目映射的路径

1、一个Servlet可以指定一个映射路径

1. <servlet-mapping>
2.  <servlet-name>hello</servlet-name>
3.  <url-pattern>/hello</url-pattern>
4. </servlet-mapping>

2、一个Servlet可以指定多个映射路径

1. <servlet-mapping>
2. <servlet-name>hello</servlet-name>
3. <url-pattern>/hello</url-pattern>
4. </servlet-mapping>
5. <servlet-mapping>
6. <servlet-name>hello</servlet-name>
7. <url-pattern>/hello2</url-pattern>
8. </servlet-mapping>
9. <servlet-mapping>
10. <servlet-name>hello</servlet-name>
11. <url-pattern>/hello3</url-pattern>
12. </servlet-mapping>
13. <servlet-mapping>
14. <servlet-name>hello</servlet-name>
15. <url-pattern>/hello4</url-pattern>
16. </servlet-mapping>

3、一个Servlet可以指定通用映射路径

1. <servlet-mapping>
2. <servlet-name>hello</servlet-name>
3. <url-pattern>/hello/*</url-pattern>
4. </servlet-mapping>

4、默认请求路径

1. <servlet-mapping>
2. <servlet-name>hello</servlet-name>
3. <url-pattern>/*</url-pattern>
4. </servlet-mapping>

5、指定一些后缀或者前缀等等......

1. <servlet-mapping>
2. <servlet-name>hello</servlet-name>
3. <url-pattern>*.com</url-pattern>
4. </servlet-mapping>

6、优先级 问题

指定了固有的映射路径优先级最高,如果找不到就会走默认的处理请求:

1. <!--404-->
2. <!--注册Servlet-->
3. <servlet>
4. <servlet-name>error</servlet-name>
5. <servlet-class>com.wangsiqi.servlet.HelloServlet</servlet-class>
6. </servlet>
7. <!--Servlet的请求路径-->
8. <servlet-mapping>
9. <servlet-name>error</servlet-name>
10. <url-pattern>/*</url-pattern>
11. </servlet-mapping>

ServlertContext

web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用。


相关文章
|
3月前
|
缓存 Java 应用服务中间件
javaweb实训第三天上午——Servlet(1)
Servlet基础 课程介绍 Servlet基础; (掌握) 基本结构 生命周期 执行流程 接收参数 响应数据
68 0
|
8月前
|
小程序 Java 应用服务中间件
【JavaWeb学习】—Servlet(十三)
【JavaWeb学习】—Servlet(十三)
|
2月前
|
SQL druid Java
javaweb案例实训之基于jsp和servlet的用户管理开发[增删改查及登录注销]
javaweb案例实训之基于jsp和servlet的用户管理开发[增删改查及登录注销]
23 0
|
2月前
|
SQL 数据可视化 数据库
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
基于jsp+servlet的javaweb实现最基本的用户注册登陆注销功能
17 0
|
3月前
|
存储 安全 JavaScript
JavaWeb之Servlet(下)
本文主要介绍了JavaWeb开发中关于请求、响应、会话和Servlet3.0注解的相关知识。首先讲解了请求(Request)的常用方法,以及处理请求乱码问题的几种方式。接着讨论了响应(Response)的方法,,以及设置全局初始化参数。然后介绍了会话(Session)的概念,包括其生命周期、如何设置和获取初始化参数,并对比了全局初始化参数和Servlet3.0的`@WebServlet`注解。文中给出了具体的代码示例和测试结果,帮助读者更好地理解和掌握这些概念。
|
3月前
|
Java 应用服务中间件 程序员
JavaWeb之Servlet(上)
本篇博文介绍了JavaWeb中Servlet的基本概念和应用。Servlet是用于交互式浏览和修改数据、生成动态Web内容的Java程序,通常运行在支持Java的应用服务器上。文章讲解了Servlet的工作模式,包括客户端请求、服务器调用Servlet以及响应返回客户端的过程。此外,还提到了Servlet API,特别是doGet和doPost方法用于处理请求和响应。作者通过创建第一个Servlet的步骤,展示了如何实现Servlet接口并配置web.xml文件。最后,文章简述了Servlet的工作原理和生命周期,强调了Servlet的单例特性以及初始化、服务和销毁的过程。
|
3月前
|
存储 前端开发 Java
JavaWeb:servlet+jsp+mybatis商品管理增删改查
商品管理通常包括增加(添加)、删除、修改和查询商品信息
134 1
JavaWeb:servlet+jsp+mybatis商品管理增删改查
|
3月前
|
安全 Java
javaweb实训第四天下午——员工管理系统-JSP&Servlet&JDBC综合练习-CRUD
1.课程介绍 Servlet细节; (掌握) 员工信息相关的CRUD; (掌握) 部门信息相关的CRUD; (掌握) 2.Servlet细节 2.1.多种匹配方式
72 0
|
3月前
|
编解码 应用服务中间件 数据库
|
3月前
|
小程序 应用服务中间件 数据库连接