• 09 Servlet中间服务 连接前段和后端


    import  导入    在当前类中使用外包中的类时使用

    cookies 缓存

    Alt + enter 提示快捷键

    Servlet 服务  (连接前段和后端)

    Servlet本质就是Java类

      Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和   HTTP 服务器上的数据库或应用程序之间的中间层。

      使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

       登录界面使用的是表单技术,现将其交互给后端

      在Java程序中,不是基本类型的剩下的都是引用类型的。 (String字符串也是(类 首字母大写))

     其中的格式:

      eg: import javax.servlet.Servlet;  //  import 包名 + 类名

     命名规范: 

       1.对于类名,变量名等标识符 组成部分: 数字 , 字母 , $ ,下划线(去看类名) 只有这四种其他都不行
                        在包命名时 , 可以用符号“.”这个点就相当于“/”是目录分割符
                    2.命名不能以数字开头
                    3.不能由关键字来命名 如:int 但是标识符可以包含关键字 如:int_a
                    4.对于类名来说首字母规范是大写的,其他一般小写
                    5.命名时,如果该标识符有多个单词组成,我们一般在后端服务程序中采用驼峰命名法。
                        后面的单词每个单词首字母大写。
                    6.见名知意 名字太长了,采用通用的缩写形式

    java后台基本格式注释

    HttpServletResponse response = (HttpServletResponse) servletResponse;
    
    强制转换  左边是小范围的数据类型  变量名 = (小范围的数据类型)变量值;
    
    对于引用类型来说,前提条件是等号两边前后的数据类型是有继承关系(父子关系)
    
    int a = (int) 646121651;//跟上边模式基本一样
    
    int int_a = 132;//再次强调int等关键词不能单独成为命名
    
     response . setCharacterEncoding("UTF-8");//设置编码字符集
    
     response.setContentType("text/html;charset=UTF-8");//防止中文乱码
    response 通过响应setContentType设置响应类型text/html设置相应类型为文本html
    
    response . getWriter() .write(  "Servlet 很厉害");// I0流  input  output  写出
    response . getWriter() //具备可以往程序外写内容的功能
    response 通过响应 getWriter 写出  write
    
    http://localhost:8080/day9/hello
                hello 请求后端服务器的资源路径
                @WebServlet("/hello")
                hello  url路径映射
                hello --> 映射到HelloServlet
                HelloServlet --> 加载service()功能(方法)
                service() ---> response.getWriter().writer("Servlet很厉害");
                @WebServlet("/请求资源路径")
                web.xml配置的请求资源路径二者选其一
                当两个都配置的时候,服务器是无法启动的。
                500就是指后端的服务器代码有异常或者是错误
                400/402  客户端问题 请求资源找不到

      网站名域名注释:

    http://localhost:8080/day9/hello
    组成部分:网络协议://域名(服务器名 》备案(ip + 域名)):端口号(8080)/部署在服务器上的虚拟目录/请求资源路径?name=张三&password=123456
    
    域名是自定义的   idea的默认端口号63342 , 每个软件都有自己的端口号  ?name=张三&password=123456 请求资源路径携带的请求参数
    
    ?是分割前面的请求资源路径和后面的参数
    
    如果请求参数有多个的话,用“&”连接
            部署在服务器上的虚拟目录hello
            如果没有端口号:说明他用的端口号是80   (80可以不写)
            在servlet-class标记中,里面需要填写类(全路径:包名+类名)全先定类名

    登录页面例题:

    前台显示:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <!--页面标题-->
        <title>登录页面</title>
    </head>
    <body>
            <!-- <form> 表单  录入数据,把数据传输给后端服务器
            action:执行url动作 请求的资源路径
            <input>标记是form表单标记中的一个高频使用的标记
            input 标记中type=submit 表达的是 想把from表单中的所有数据打包成from 形式提交给后端服务器
            如果type=button 那么该按钮就是一个简单的普通按钮,具备鼠标点击的功能
            -->
            <form action="login">
                <!--输入框     input 行标签 不能设置宽与高,不独占一行                                         为什么登录不用name
                   type 格式,(在这里是选择格式)  text 是文本类型   password 是密码,口令   submit 递交登陆  这三个都是固定格式
                     name赋名  value 赋名  placeholder  占位符(只显示,不占位置)
                 -->
                <input type="text" name="username" placeholder="用户名/邮箱/手机号"><br>
                <input type="password" name="password" placeholder><br>
                <input type="submit" value="登录" ><br>
                <!--超链接 <a>  制定跳转的资源路径href   -->
                <a href="zuoye.html">忘记密码</a>
    
    
            </form>
    </body>
    </html>

    后台编码:

    package com.zhiyou100;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    @WebServlet("/login")
    public class loginServlet implements Servlet {
    
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
    
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            //转换成可支持Http协议的类
            HttpServletRequest request = (HttpServletRequest) servletRequest;
            HttpServletResponse response = (HttpServletResponse) servletResponse;
            //设置可以接受带中文的文本信息 getParameter(“参数名称”)如果是表单参数  通过name属性值
            request.setCharacterEncoding("UTF-8");
            //设置可以相应给浏览器客户端支持的中文文本信息
            response.setContentType("text/html;charset=UTF-8");
            //凡是客户端提交的参数值,一般情况下
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            //假定  你的用户名是张三 密码123456
            if (username.equals( "张三") && password.equals("123456")){//==换成equals()
                //表明用户名和密码都正确
                //恭喜你登陆成功!
                response.getWriter().write("恭喜你登陆成功!");
    
    
    
            }else{
                //您的用户名不正确,请重新登陆
                response.getWriter().write("您的用户名不正确,请重新登陆");
            }
    
    
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
    
        }
    }

      

  • 相关阅读:
    torchvision 之 transforms 模块详解
    图像的形状相关参数顺序
    卷积神经网络(CNN)
    OpenCV 图片基本操作
    Dataset 和 DataLoader 详解
    ARM开发各种烧写文件格式说明(ELF、HEX、BIN)结合KEIL环境的使用
    14 局部段描述符的使用
    一文看懂Linux内核!Linux内核架构和工作原理详解
    13 从保护模式返回实模式
    基于win10家庭版的docker安装
  • 原文地址:https://www.cnblogs.com/rxqq/p/13849299.html
Copyright © 2020-2023  润新知