认识Serverlet

认识和熟悉Servlet

Servlet= Server+let 服务器小程序

一个Servlet就是一个服务器端的java小程序,用于处理请求,生成动态响应。

一个Servlet用于处理某种请求,如登录请求、注册请求

创建Servlet就是创建Servlet类

每个web应用程序都有一个而且只有一个全局的配置文件,叫做web.xml,用于配置程序的所有信息,如配置servlet

每个Servlet相当于一个web资源。我们通过url-pattern给它分配一个访问路径。

创建Servlet的步骤:

1) 实现Servlet接口,创建一个Servlet类
2) 实现继承的所有方法,将生成的throw new UnsupportedOperationException(“Not supported yet.”)语句全部删除.
3) 在service()方法中编写代码,处理请求
4) 在web-inf目录下创建web.xml文件,然后添加Servlet的配置,其中url-pattern是用于设置访问servlet的路径。路径以/开头,后面自己定义路径名称即可。
5) 设置表单的action属性为要访问的servlet的路径,在设置表单的action属性的时候,不需要添加/,直接写servlet的路径即可。

下面以cet查询成绩网页为例:(IDE:NetBeans)

html页面:

<!DOCTYPE html>
<html>
    <head>
        <title>用户登录</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!--link元素用于引用外部样式表
            rel:relation关系,该属性说明引用的文件和当前页面的关系,stylesheet说明引用的文件是当前页面的样式表
            href: 指定引用的文件的路径,可以使用相对路径或绝对路径
            Ctrl+\ 智能提示
        -->
        <link rel="stylesheet" href="css/style.css">
    </head>
    <body>
        <div>
            <!--Ctrl+/ 注释/取消注释-->
            <!--h1+hr+br->tab-->
            <h1>用户登录</h1>
            <hr>
            <br>
            
            <!--如果需要将数据提交给服务器,则必须将表单元素包含在一个表单内-->
            <!--form: 表单,是一个用于放置表单元素的区域-->
            <!--点击查询就是发送一个请求给服务器,发送了两个数据,叫做两个请求参数-->
            <!--id属性主要是前端使用,操作css和js的使用-->
            <!--需要指定元素的name属性区分参数,服务器获取参数时候根据参数名获取参数值
                区分大小写
            -->
            <!--form元素的action属性指定该表单的数据,也就是发送的请求提交给服务器的哪个组件处理-->
            
            <form action="cs">
                账号:<input type="text" name="Id">
                <br><br>
                密码:<input type="text" name="KeyWord">
                <br><br>
                <!--input元素的type设置为submit则显示一个提交按钮-->
                <!--如果需要提交表单中的数据,必须要用提交按钮,除非你使用ajax技术发送请求-->
                <!--value属性指定按钮的显示文字-->
                <input type="submit" value="登录">
            </form>
            
        </div>
    </body>
</html>

Servelet类:

package com.qdu.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/**
 * 创建一个Servlet类,用于处理查询四级的请求
 * <br>实现Servlet接口,创建一个Servlet类,实现相当于继承
 * @author NIIT
 */
//Ctrl+Shift+I 修复导入/导包 import
public class Cet4Servlet implements Servlet{
    
   

    @Override
    public void init(ServletConfig config) throws ServletException {
        //Ctrl+E 删除当前行或选中的多行
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    //service()方法中编写处理请求的代码
    @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        //该方法接受两个参数
        //第1个参数是一个请求对象,包含请求的所有信息,如请求参数
        //第2个参数是一个响应对象,包含给到客户端的响应的信息,如响应内容
        //这两个参数是自动传入的,service()由服务器帮你调用,我们只需要操作这两个对象即可
        //request请求
        //response响应
        String rId = "Bert";
        String rKeyWord = "666";
        //1.获取请求参数 request parameter
        //该方法根据请求参数名获取参数值
        //这里获取了参数名为studentId的参数的值,存储到id变量中
        String id=req.getParameter("Id");  //Ctrl+Shift+上/下 向上/向下复制
        String key=req.getParameter("KeyWord");  //Ctrl+Shift+上/下
        
        //2.执行业务逻辑,处理请求
        //Random类公开了一些方法,用于生成随机数
        //Random类的方法基本都是非静态的,所以需要创建对象访问
        //Random rand=new Random(); //Ctrl+Shift+I
        //int score=rand.nextInt(711); //nextInt(int x)用于生成0到指定值(不包含)之间的随机整数
        
        //3.生成响应
        //调用响应对象的getWriter()方法可获取一个输出响应内容到客户端的打印器
        //返回一个PrintWriter对象,用于输出内容到客户端
        
        //调用响应对象的setContentType()设置响应内容的内容类型和字符集编码
        res.setContentType("text/html;charset=utf-8"); //中间是分号
        PrintWriter out=res.getWriter(); 
        
        if(id.equals(rId)&&key.equals(rKeyWord)){
            //println()方法用于输出响应内容到客户端,可以直接输出html内容
            out.println("<h1>用户登录成功</h1>"); 
            out.println("<hr>");
            out.println("<br>欢迎登录,"+id+"。");
        }
        else{
           out.print("<h1>用户登录失败,账号或密码错误,请重新登录。</h1>");
        }
    }

    @Override
    public String getServletInfo() {
        //如果引用类型的返回值不知道返回什么,可以先返回null
        return null;
    }

    @Override
    public void destroy() {
        
    }
}

总之,用表单提交的数据,可以在servelet里用 req.getParameter()获取,在用res中的方法生成响应。

当面试中涉及到Servlet的问题时,以下是一些常见的问题和示例答案供参考: 1. 什么是Servlet? Servlet是Java编写的服务器端程序,用于处理HTTP请求和生成HTTP响应。它运行在Web容器中,如Tomcat或Jetty。 2. Servlet的生命周期是什么? Servlet的生命周期包括以下三个阶段: - 初始化阶段:通过调用init()方法进行初始化,可以在此阶段执行任何必要的配置。 - 服务阶段:每次接收到HTTP请求时,都会调用service()方法来处理请求,并生成相应的HTTP响应。 - 销毁阶段:通过调用destroy()方法来终止Servlet的运行,并释放相关资源。 3. Servlet和JSP之间有什么区别? Servlet和JSP都是用于构建动态Web应用程序的技术,但它们有以下区别: - Servlet是Java类,完全由Java代码编写,而JSP是基于HTML的,其中嵌入了Java代码。 - Servlet在Java代码中处理请求和生成响应,而JSP使用标签和表达式在HTML中嵌入Java代码。 - Servlet更适合处理业务逻辑和数据访问,而JSP更适合用于呈现动态内容。 4. 如何在Servlet中处理GET和POST请求? 在Servlet中,可以通过重写doGet()和doPost()方法来处理GET和POST请求。例如: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理GET请求的代码 } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 处理POST请求的代码 } ``` 5. Servlet中如何获取请求参数? 可以使用HttpServletRequest对象的getParameter()方法来获取请求参数。例如: ```java String username = request.getParameter("username"); String password = request.getParameter("password"); ``` 这些问题只是Servlet面试中的一部分,根据面试的深度和要求,可能会涉及更多的问题。希望这些示例能对你有所帮助!如果你有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值