HttpServlet类简单假登录

servlet 是一个接口,如果实现这个接口,那么就必须实现接口里面定义的所有方法
HttpServlet遵循HTTP协议,因此继承HttpServlet的类也就遵循HTTP协议 

  • Servlet(Server Applet):全称Java Servlet。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。
    • 狭义的Servlet是指 Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类。
  • HttpServlet: 指能够处理 HTTP 请求的 servlet,它在原有 Servlet 接口上添加了一些与 HTTP 协议处理方法,它比 Servlet 接口的功能更为强大。在编写Servlet时,通常应继承这个类,而避免直接去实现Servlet接口。
    • HttpServlet 在实现 Servlet 接口时,覆写了 service 方法,该方法体内的代码会自动判断用户的请求方式,如为 GET 请求,则调用 HttpServlet 的 doGet 方法,如为 Post 请求,则调用 doPost 方法。因此,在编写 Servlet 时,通常只需要覆写 doGet 或 doPost 方法,而不要去覆写 service 方法

 布局代码:

<body>
  <h2>首页</h2>
  <a href="denglu.jsp">去登录</a>
  <a href="zhuce.jsp">去注册</a>
  </body>
<h2>登录</h2>
        <form action="denglu" method="post">
            账号:<input type="text" name="user" value="">  <br>
            密码:<input type="password" name="pas" value=""> <br>
            <input type="submit" value="登录">
        </form>
<h2>注册</h2>
    <form action="zhuce" method="post">
        账号:<input type="text" name="user" value="">  <br>
        密码:<input type="password" name="pas" value=""> <br>
        <input type="submit" value="注册">
    </form>

配置servlet类传递数据:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0"> 
<!--    配置servlet类-->
    <servlet>
        <!--起名类-->
        <servlet-name>Login</servlet-name>
        <!--servlet类所在的位置:类的全类名就是  包名.类名-->
        <servlet-class>com.gao.servlet.Login</servlet-class>
    </servlet>
    <!--servlet类的映射:Servlet用来处理哪个请求-->
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/Login</url-pattern>
    </servlet-mapping>
    <!-- 组合起来: 当浏览器请求 denglu
   这个地址的时候,要执行Login这个Servlet  Login这个servlet就是com.gao.servlet包里面的Login这个类-->
<!--    hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh-->
    <servlet>
        <servlet-name>denglu</servlet-name>
        <servlet-class>com.gao.servlet.denglu</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>denglu</servlet-name>
        <url-pattern>/denglu</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>zhuce</servlet-name>
        <servlet-class>com.gao.servlet.zhuce</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>zhuce</servlet-name>
        <url-pattern>/zhuce</url-pattern>
    </servlet-mapping>
</web-app>

  

 登陆界面继承httpservlet类:

在项目的src下建一个包 创建登录和注册的java类(继承HttpServlet 并实现doGet和doPost方法)

注意:在书写java类之前确认jar包已经导入(一定要导入jar架包)

其中req参数是前端传输来到数据,这里写的全拼request

resp参数是响应的数据,这里写的全拼response

Requset和Response

从编写Servlet的过程中可以看出,doGet)或者doPost 方法中有两个参数,分别是HtpServletRequest和HttpServletResponse,当执行Servlet的时候会从HttpServletRequest读取请求信息,而将响应信息封装进HttpServletResponse对象中Servlet 处理 HTTP 请求

HttpServlet的一些方法

  • getParameter() 根据表单的ame属性获取用户输入的值
  • getRequestURI()获取项目名和资源路径
  • getContextPath()获取项目名称
  • getServletPath()请求的资源路径
package com.gao.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class denglu extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("denglu----doget");
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("denglu-----dopost");
        //前端请求(respuest/resp),后端处理后,最后给前端做出响应(response/resp)

        //这三个都是后去请求的地址相关

        String requestURI = req.getRequestURI();
        String contextPath = req.getContextPath();
        String servletPath = req.getServletPath();

        System.out.println(requestURI);//包含项目名和资源路径
        System.out.println(contextPath);//项目名称
        System.out.println(servletPath);//请求的资源路径


        System.out.println("---------------");
        //设置响应的编码格式
        req.setCharacterEncoding("utf-8");
        String user = req.getParameter("user");//根据表单的name属性获取用户输入的值
        String pas = req.getParameter("pas");

        System.out.println(user);
        System.out.println(pas);
        //1,从请求中获取用户提交的参数(数据)
        resp.setCharacterEncoding("utf-8");//设置响应的编码格式
        resp.setContentType("text/html;charset=utf-8");  //以什么样的格式(文本/网页)响应
        if (user.equals("张三") && pas.equals("666")){
            //登陆成功
            resp.getWriter().write("登陆成功"); //使用字符集合给前端做出响应
        }else {
            //登陆失败
            resp.getWriter().write("登陆失败!!");
        }
    }
}

zhuce(java类):

package com.gao.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class zhuce extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("zhuce----doget");
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("zhuce----dopost");
        //前端请求(respuest/resp),后端处理后,最后给前端做出响应(response/resp)

        //这三个都是后去请求的地址相关

        String requestURI = req.getRequestURI();
        String contextPath = req.getContextPath();
        String servletPath = req.getServletPath();

        System.out.println(requestURI);//包含项目名和资源路径
        System.out.println(contextPath);//项目名称
        System.out.println(servletPath);//请求的资源路径


        System.out.println("---------------");
        //设置响应的编码格式
        req.setCharacterEncoding("utf-8");
        String user = req.getParameter("user");//根据表单的name属性获取用户输入的值
        String pas = req.getParameter("pas");

        System.out.println(user);
        System.out.println(pas);
        //1,从请求中获取用户提交的参数(数据)
        resp.setCharacterEncoding("utf-8");//设置响应的编码格式
        resp.setContentType("text/html;charset=utf-8");  //以什么样的格式(文本/网页)响应
        if (user.equals("张三") && pas.equals("666")){
            //登陆成功
            resp.getWriter().write("登陆成功"); //使用字符集合给前端做出响应
        }else {
            //登陆失败
            resp.getWriter().write("登陆失败!!");
        }
    }
}

控制台接受用户创建的账号密码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值