Java第二阶段

83 阅读3分钟

HTML + CSS

软件开发的职责分工

image.png

JavaEE开发

image.png

网页

image.png

网页的显示过程

image.png

image.png

服务器

image.png

用浏览器显示一个网页时,是否只发了一个网络请求给服务器?

至少一个网络请求

所以,服务器可以理解是:为客户端提供各种数据服务的机器。

数据:网页、图片、音频、视频、文本等。

网页的组成

image.png


HTML

image.png

超文本标记语言

image.png

超文本标记语言 标签预览

image.png

标签的书写格式

image.png

标签的属性

image.png

image.png

标签的嵌套

image.png

image.png

标签嵌套的意义

image.png

HTML的注释

image.png

文档声明

image.png

html标签

image.png



02 Tomcat部署

项目实战前的假设

image.png

Login Servlet.java

```
package com.mj;

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

@WebServlet ("/login")
public class LoginServlet extends HttpServlet{
    /*
     当客户端发送的是GET请求,就会调用Servlet的doGet方法
     @param request 用来接收客户端发送的数据
     @param response 用来给客户端发送数据(响应)
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    /*
    当客户端发送的是post请求,就会调用Servlet的doPost方法
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置请求数据的编码
        request.setCharacterEncoding("UTF-8");

        //1.取出客户端发送的数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        response.setContentType("text/plain;charset=UTF-8");
        PrintWriter out = response.getWriter();

        //2.判断用户名、密码是否正确(假设用户名和密码都是123)
        if ("123".equals(username) & "123".equals(password)){
            //给客户端发送数据(响应)
            out.write("登陆成功!");
        }else {
            //给客户端发送数据(响应)
            out.write("登陆失败!");
        }
    }

    /*
    Http请求
    > GET请求
        请求参数拼接在请求路径后面
        请求头
    > POST请求
        请求参数放在请求体中
        请求头
     */
}
```

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>我的网页</title>
</head>
<body>
<form action="/hello/login" method="post">
    <div>用户名<input type="text" name="username"></div>
    <div>密码<input type="text" name="password"></div>
    <div><button type="submit">登录</button></div>
</form>
</body>
</html>

登陆页面

image.png


image.png

跳转页面

package com.mj;

import sun.java2d.pipe.SpanShapeRenderer;

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

@WebServlet ("/login")
public class LoginServlet extends HttpServlet{
    /*
     当客户端发送的是GET请求,就会调用Servlet的doGet方法
     @param request 用来接收客户端发送的数据
     @param response 用来给客户端发送数据(响应)
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }


    /*
    当客户端发送的是post请求,就会调用Servlet的doPost方法
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        outHTML(request, response);
    }

    public void outHTML(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        //1.设置请求数据的编码
        request.setCharacterEncoding("UTF-8");

        //2.获取请求参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //3.先设置响应的内容类型(MIMEType + 数据编码)
        response.setContentType("text/html;charset=UTF-8");

        //4.拿到输出流
        PrintWriter out = response.getWriter();

        //5.判断

        if ("123".equals(username) && "123".equals(password)){
            out.write("<h1 style="color : blue; border: 1px solid black;">登陆成功</h1>");
            out.write("<ul>");
            out.write("<li>个人信息</li>");
            out.write("<li>修改密码</li>");
            out.write("<li>退出登录</li>");
            out.write("</ul>");
        }else {
            out.write("<h1 style="color : red; border: 1px solid black;">登陆失败</h1>");
            out.write("<ul>");
            out.write("<li>重新登录</li>");
            out.write("</ul>");
        }
    }

    public void outPlain(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        //设置请求数据的编码
        request.setCharacterEncoding("UTF-8");

        //1.取出客户端发送的数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        response.setContentType("text/plain;charset=UTF-8");
        PrintWriter out = response.getWriter();

        //2.判断用户名、密码是否正确(假设用户名和密码都是123)
        if ("123".equals(username) & "123".equals(password)){
            //给客户端发送数据(响应)
            out.write("登陆成功!");
        }else {
            //给客户端发送数据(响应)
            out.write("登陆失败!");
        }
    }

    /*
    Http请求
    > GET请求
        请求参数拼接在请求路径后面
        请求头
    > POST请求
        请求参数放在请求体中
        请求头
     */
}

登陆失败页面

image.png

image.png

登录成功页面

image.png

image.png



Servlet_JSP

Servlet

image.png

service方法

image.png 接收到一个http请求首先调用service方法,如果调用了service方法就不会再去调用doGet和doPost方法了。 由service统一处理doGet和doPost方法。


乱码问题解决

image.png

细节

image.png

单例模式

package com.mj;

public class Person {
    private static Person instance = new Person();
    private Person(){

    }
    public static Person getInstance(){
        return instance;
    }

    public static void main(String[] args) {
        Person.getInstance();
        Person.getInstance();
    }
}

注意:service不是单例模式

Servlet处理请求的常见过程

image.png