• JavaWeb-----实现第一个Servlet程序


       1.Servlet简介

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

    存里的servlet程序。主要用来处理客户端请求、响应给浏览器的动态资源

       2.Servlet原理

         Web服务器在与客户端交互时.Servlet的工作原理是:

    • 在客户端对web服务器发出请求
    • web服务器接收到请求后将其发送给Servlet
    • Servlet容器为此产生一个实例对象并调用ServletAPI中相应的方法来对客户端HTTP请求进行处理,然后将处理的响应结果返回给WEB服务器
    • web服务器将从Servlet实例对象中收到的响应结构发送回客户端

       3.Servlet生命周期

    • 装载Servlet
    • Server创建一个Servlet实例
    • Server调用Servlet的init方法,只初始化一次
    • 一个客户端请求到达Server
    • Server创建一个请求对象
    • Server创建一个响应对象
    • Server激活Servlet的service方法,传递请求和响应对象作为参数
    • service方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
    • service方法使用响应对象的方法。将响应传回Server,最终到达客户端
    • 对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此servlet的service方法,将这两个对象作为参数传递给它
    • 当Server不再需要Servlet时,比如当Server要关闭时,Server调用Servlet的destroy

       4.第一个Servlet实例

         配置Web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        id="WebApp_ID" version="3.1">
        <display-name>Servlet_HelloWorld</display-name>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
        <servlet>
            <servlet-name>HelloWorldServlet</servlet-name>
            <servlet-class>com.servlets.HelloWorldServlet</servlet-class>
            <!-- 当值为0或者大于0时,表示容器在启动时就加载并初始化这个servlet -->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>HelloWorldServlet</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
    </web-app>

         Servlet处理类

    package com.servlets;
    
    import java.io.IOException;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    
    //@WebServlet("/helloworldservlet") 可以在Web.xml中配置servlet代替
    public class HelloWorldServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        public HelloWorldServlet() {
            super();
            System.out.println("创建Servlet实例");
        }
    
        public void init(ServletConfig config) throws ServletException {
            System.out.println("初始化");
        }
    
        public void destroy() {
            System.out.println("销毁");
        }
    
        protected void service(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            System.out.println("调用service()方法");
            response.setCharacterEncoding("UTF-8");
            //获得参数
            String userName = request.getParameter("userName");
            String userPwd = request.getParameter("userPwd");
            //将数据存入Session
            HttpSession session = request.getSession();
            session.setAttribute("userName", userName);
            session.setAttribute("userPwd", userPwd);
            //转发
            request.getRequestDispatcher("/success.jsp").forward(request, response);
        }
    }

         JSP页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>First Servlet</title>
    </head>
    <body>
        <a
            href="${pageContext.request.contextPath}/helloworldservlet.do?userName=张三&userPwd=123456">HelloWorld!</a>
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <h1>${userName}</h1>
        <h1>${userPwd}</h1>
    </body>
    </html>

       注意:若是service()、doPost()和doGet()这三个方法都在存在的情况下,java只会执行service()方法,而其他的两种方法不会被执行。若是没有service() 方法,则是根据jsp传入方式选择对应的方法

  • 相关阅读:
    js 时间戳格式化
    有关Safari 浏览器的文章
    前端图片旋转动画
    vue中textarea标签自适应高度
    pip 报错 Fatal error in launcher: Unable to create process using
    HTML列表多点击事件
    js获取浏览器版本信息
    SVG圆形进度条
    基于蚂蚁金服"AntDesignVue-Menu导航菜单"实现根据初始路由自动选中对应菜单解决刷新后菜单选择状态丢失问题(支持根路径菜单)
    java根据权重进行排序
  • 原文地址:https://www.cnblogs.com/fengfuwanliu/p/10512689.html
Copyright © 2020-2023  润新知