Servlet(一)Servlet基础

JSP JavaBean Servlet实现用户登录和注册. JSP JavaBean Servlet实现用户登录和注册 立即下载

Servlet基础

目录

Servlet基础

-Servlet概述

-Tomcat容器等级

-HelloServlet手工编写第一个Servlet

-HelloServlet使用eclipse编写第一个Servlet

-Servlet执行流程

-Tomacat装载Servlet的三种情况

-JSP与SerVlet对象的对应关系

-通过Servlet获取表单数据

-Servlet的路径跳转

应用:用Server实现用户登录


-Servlet概述

jsp的前身就是Servlet

什么是Servlet:Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的Servlet程序

-Tomcat容器等级

Tomcat容器分为四个等级,

1. Container 容器,集装箱

2.Engine 引擎容器

3.Host 主机()

4.Servlet容器(tomcat最低级别的容器)里面包含了一个或多个Context

—— Context (上下文,背景,环境) 一个context对应一个web项目

—— Wrapper 容器里的封装部分。

-HelloServlet手工编写第一个Servlet

1.      继承HttpServlet

Servlet层级关系:

Servlet(接口)-->GenericServlet(抽象类,与协议无关的Servlet)-->HttpServlet(抽象类,实现了Http协议的Servlet)-->Custom Servlet(自定义的Servlet)。

如何创建和使用Servlet?

2.      重写doGet()和doPost方法

3.      注册Servlet

a)      在web.xml中进行如下配置:

    <servlet>

        <!--类名-->

        <servlet-name>HelloServlet</servlet-name>

        <!--所在的包-->

        <servlet-class>servlet.HelloServlet</servlet-class>

    </servlet>

 

    <servlet-mapping>

        <servlet-name>HelloServlet</servlet-name>

        <!--访问的地址-->

        <url-pattern>/servlet/HelloServlet</url-pattern>

    </servlet-mapping>

b)Servlet3.0之后可以使用注解来表示所有xml中的配置:

@WebServlet(name="HelloServlet",value={"/servlet/HelloServlet"})

测试:

在Eclipse中新建DynamicWebProject的时候不要直接点"完成",在下一步有个勾选项(Generate web.xml deployment descriptor),选上就会默认生成web.xml

选择Superclass,输入HttpServlet -选择第一项- OK

选择source-Override/Implement methods

勾选doGet和doPost

Index.jsp

<%@ page language="java" import="java.util.*"

    contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

    <h1>第一个Servlet小例子</h1>

    <hr>

    <a href="servlet/HelloServlet">Get方式请求HelloServlet</a><br>

    <form action="servlet/HelloServlet" method="post">

    <input type="submit" value="Post方式请求HelloServlet">

    </form>



</body>

</html>



HelloServlet.java

package servlet;



import java.io.IOException;

import java.io.PrintWriter;



import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

//继承于HttpServlet

public class HelloServlet extends HttpServlet {



    @Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // TODO Auto-generated method stub

        System.out.println("处理Get请求。。。");

        PrintWriter out=response.getWriter();

        out.println("<strong>Hello Servlet!</strong><br>");

    }



    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // TODO Auto-generated method stub

        System.out.println("处理Post请求。。。");

        PrintWriter out=response.getWriter();

        out.println("<strong>Hello Servlet!</strong><br>");

    }

   



}

Web.xml

  <servlet>

  <servlet-name>HelloServlet</servlet-name>

  <servlet-class>servlet.HelloServlet</servlet-class>

  </servlet>

  <servlet-mapping>

  <servlet-name>HelloServlet</servlet-name>

  <url-pattern>/servlet/HelloServlet</url-pattern>

  </servlet-mapping>

运行:

-HelloServlet使用eclipse编写第一个Servlet

Servlet不能自动配置web.xml的原因

建dynamic web project 时,dynamic web module version选择2.5就ok了。

新建servlet

已经自动配置了web.xml文件,选择Next

默认勾选了get和post等,finish。

测试:

 

HelloServlet.java

添加需要输出的脚本,留意其中注释掉的部分

package servlet;



import java.io.IOException;

import java.io.PrintWriter;



import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;



/**

 * Servlet implementation class HelloServlet

 */

public class HelloServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

      

    /**

     * @see HttpServlet#HttpServlet()

     */

    public HelloServlet() {

        super();

        // TODO Auto-generated constructor stub

    }



    /**

     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doGet(
uniapp:K线图,支持H5,APP K线,1分钟搞定。备注详细,无需理解,直接复制即可。 阅读详情

相关推荐

Abaqus 导出单元刚度矩阵和全局刚度矩阵

Abaqus 导出单元刚度矩阵和全局刚度矩阵

科技芯风 1万+

Kubernetes多网卡环境下Calico网络配置避坑指南:如何精准指定业务网卡

本文针对Kubernetes多网卡环境下Calico网络配置的常见痛点,提供了精准指定业务网卡的实战指南。通过深入分析Calico的IP自动检测机制,详细解读并对比了五种IP_AUTODETECTION_METHOD配置方法(如interface、cidr、can-reach等),帮助运维人员从根源上解决网络分区和Pod通信失败问题,确保生产集群网络的稳定与可靠。

weixin_28835551的博客 730

STM32开发者必看:如何在正点原子探索者开发板上快速移植CANopenNode协议栈

本文为STM32开发者提供了在正点原子探索者开发板上快速移植CANopenNode协议栈的实战指南。文章详细介绍了从环境准备、硬件抽象层适配到协议栈初始化与测试的全过程,并分享了PDO配置与性能优化等关键技巧,帮助开发者高效实现CANopen标准化通信。

weixin_29173777的博客 462

如何给K8S配置一个具有永久有效的kubeconfig

在 Amazon EKS 环境中,Kubernetes 的认证机制与 AWS IAM 深度集成,通过aws-iam-authenticator动态生成临时凭证。这种设计虽然增强了安全性,但给需要持久化凭证的工具链(如 CI/CD 系统中的 KubeVela)带来了挑战。具体表现为:临时凭证失效​​:默认 Token 有效期为 15 分钟至 1 小时;​​IAM 角色限制​​:直接使用aws eks get-token生成的凭证无法持久化

小杨同学的博客 660

九天揽月带你玩转Ardupilot 的EKF2纸老虎(1)

目录 目录 摘要 1.kalman基础知识储备 摘要 本文主要记录自己学习ardupilot的ekf2代码的过程,相信很多人想移植或者学习ekf2,看到眼花缭乱的代码无从下手。九天揽月将带你玩转Ardupilot 的EKF2纸老虎 1.kalman基础知识储备 (1)先来看下最基础也是最重要的线性kalman 总结:不要害怕kalman,只要你可以懂得线性kal...

陌城烟雨 1万+

STM32CubeMX之emWin移植

“前面两章介绍了SDRAM和LTDC的使用,本篇文章将介绍emWin移植到STM32。”硬件环境:STM32F429IGT6软件环境:STM32CubeMX v5.5.0...

zhang062061的专栏 2826

阅文集团大数据面试题及参考答案

在 Flink 中,watermark 是一种用于处理乱序事件时间的机制。实现接口:通常需要实现 AssignerWithPeriodicWatermarks 或 AssignerWithPunctuatedWatermarks 接口。前者会周期性地生成 watermark,后者则是基于某些特定事件来生成 watermark ,比如接收到某个特定值的消息时。定义位置:可以在数据源处或者在流处理的中间操作中定义 watermark。在数据源定义时,能更精准地根据数据的产生特性设置 watermark;

大模型大数据攻城狮的专栏 1088

论文阅读:2024 ACM CCS “Do Anything Now”: Characterizing and Evaluating In-The-Wild Jailbreak Prompts on

大语言模型(LLMs)的滥用问题引起了公众和大语言模型供应商的高度关注。有一种特殊的对抗性提示,叫做越狱提示,它已成为绕过防护措施、让大语言模型生成有害内容的主要攻击手段。在这篇论文中,作者使用新框架JailbreakHub,对2022年12月至2023年12月期间的1405个越狱提示进行了全面分析。作者识别出131个越狱提示社区,发现了越狱提示的独特特征以及主要攻击策略,比如提示注入和权限提升。

CSPhD-winston的博客 1411

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: 数据结构(十五)堆排序的过程和程序 、归并排序和希尔排序的过程 、非递归的归并程序
下一篇: Servlet(二)应用MVC架构实现项目
二爷的大头妹妹
博客等级 码龄9年 83粉丝 58原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值