【Java 实习】Day 03-2

1 部署 Tomcat

1.1 Tomcat文件夹介绍

Tomcat文件夹介绍

1.2 添加Tomcat

1
2
3
补充1
4
补充2

5
补充3

6
7
补充4

8
9
10
说明:根据工程路径访问资源,因此只留 / 是为了更方便访问
11
12

13
14

1.3 测试Tomcat

15
16

2 实例——简单的用户登录框

实例说明:实现一个简单的用户登录框

2.1 封装用户类

package pers.syx.beans;

public class User {
    private String username;    //用户名
    private String password;    //密码

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }
}

2.2 添加jar包

1
2
将下面这个文件复制粘贴到建立的lib目录下
3
4
5
6

2.3 写servlet

1

package pers.syx.servlet;

import pers.syx.beans.User;

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

public class LoginSevlet extends HttpServlet {

    /**
     *
     * @param req       请求对象
     * @param resp      响应对象
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //处理中文乱码
        req.setCharacterEncoding("utf-8");

        //根据标识确定要调用哪个方法
        //前端传递过来的标识
        String method = req.getParameter("method");

        if(method.equals("login")){
            toLogin(req,resp);//要将两个对象传递过去
        }
    }

    /**
     * 用户登录功能
     */
    public void toLogin(HttpServletRequest req, HttpServletResponse resp) {
        //记得修改访问权限标识符 private -> public

        //接收前端传的用户名的值
        String username = req.getParameter("username");
        //接收前端传的密码的值
        String password = req.getParameter("password");

        System.out.println("用户名的值为:"+username+";密码的值为:"+password);

        //1 获取容器对象
        ArrayList<User> users = getUsers();

        //定义一个标识,判断输入的用户名和密码是否合法
        boolean flag = false;

        //遍历集合对象
        for(User user:users){
            if(user.getUsername().equals(username) && user.getPassword().equals(password)){
                //用户名和密码必须都相等才可以登录成功
                flag=true;
                break;
            }
        }
        if(flag==true){
//            //可以登录成功,响应前端,用到resp给前端响应标识
//            resp.getWriter().print("true");//resp.getWriter自动获取流对象,给前端响应回去

            //上面那个语句先不用,先直接跳转到别的界面进行测试,用到sendRedirect重定向
            try {
                resp.sendRedirect("http://localhost:8080/jsp/list.jsp");
            } catch (Exception e) {//需要捕获异常,鼠标放在sendRedirect上点alt+enter,然后点第二个,给一个最大的父类异常Exception去接收异常
                e.printStackTrace();
            }
        }
        else{
            System.out.println("用户名和密码不匹配!!!");
        }
    }
    
    /**
     * 用集合模拟一个容器
     */
    public ArrayList<User> getUsers(){//写ArrayList<User>不用强转,写List需要
        /*这样写不太规范,因为功能很多,都写在一个方法里不规范。
         * 不要把所有功能写在一个方法里
         */
        //创建一个集合对象
        ArrayList<User> users = new ArrayList<>();

        //创建用户对象
        User user1 = new User();
        user1.setUsername("张三");
        user1.setPassword("123456");

        User user2 = new User("韩信","qwe123");
        User user3 = new User("百里守约","qwe123");
        User user4 = new User("百里玄策","434544");
        User user5 = new User("李白","ssddd");
        User user6 = new User("貂蝉","www111");
        User user7 = new User("吕布","30222");

        //把用户对象装进容器
        users.add(user1);
        users.add(user2);
        users.add(user3);
        users.add(user4);
        users.add(user5);
        users.add(user6);
        users.add(user7);

        return users;//测试用
    }
}

2.4 写登录界面

web目录下新建目录jsp
1
2

<%--
  Created by IntelliJ IDEA.
  User: nosteglic
  Date: 2021/1/2
  Time: 20:43
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- 编码和语言 -->
<html>
<head>
    <title>登录界面</title>

    <!-- 设置样式 css语法 元素选择器-->
    <style>
        body{
            background-color: aliceblue;
        }
    </style>

</head>
<body>
    <h1 align="center">用户登录界面</h1>

    <!-- form表单 -->
    <form action="http://localhost:8080/login?method=login" method="post">
        <!-- 通过问号?拼接一个method属性 见LoginServlet-->
        <!-- 表格标签 -->
        <table border="1px" bgcolor="pink" align="center">
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="username"></td>
            </tr>

            <tr>
                <td>密码:</td>
                <td><input type="password" name="password"></td>
            </tr>

            <tr>
                <td colspan="5" align="center">
                    <!-- 注意:type为submit,进行表单提交 -->
                    <input type="submit" value="登录">
                </td>
            </tr>
        </table>
    </form>

</body>

</html>

1
2

<%--
  Created by IntelliJ IDEA.
  User: nosteglic
  Date: 2021/1/2
  Time: 21:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>列表界面</title>
</head>
<body>
    恭喜你,登录成功!
</body>
</html>

2.5 配置资源路径

1

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">

    <!-- 必须写在web-app里面 -->
    <servlet>
        <!-- 别名 -->
        <servlet-name>login</servlet-name>
        <!-- 后端资源路径的权限定位名 -->
        <!-- 配置资源-->
        <servlet-class>pers.syx.servlet.LoginSevlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>login</servlet-name>
        <!-- 配置资源路径的地址 -->
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
</web-app>

2.6 测试

1
2
3
4
5

3 目录结构

目录结构


补充说明

1 login.jsp

介绍

  • 访问当前工程时默认访问web文件夹下的资源,之前设置的工程路径【/】
  • 若想访问jsp文件夹下的资源:
localhost:8080/jsp/login.jsp
  • 所有网页由标签形成

<html>标签声明
<head>头部
<body>身体
<inout type="不同的框">

<input type="text">用户名框
<input type="password">密码框
<input type="button"value="登录">登录按钮

<br>换行

head

body

<h1></h1>最大标题
表格

2 访问资源

  • 现在浏览器访问的是前端静态资源,那如何访问后端资源呢?浏览器要访问到Servlet类 在web.iml中配置
    访问资源

3 form表单

form表单
根据action属性可以访问相应界面

现在浏览器访问的是前端静态资源,那如何访问后端资源呢?浏览器要访问到Servlet类 在web.iml中配置

submit

4 前后端交互

前后端交互
\login为后端资源路径

5 处理中文乱码

处理中文乱码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

社恐患者

赚钱不易呜呜呜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值