HTML + CSS
软件开发的职责分工
JavaEE开发
网页
网页的显示过程
服务器
用浏览器显示一个网页时,是否只发了一个网络请求给服务器?
至少一个网络请求
所以,服务器可以理解是:为客户端提供各种数据服务的机器。
数据:网页、图片、音频、视频、文本等。
网页的组成
HTML
超文本标记语言
超文本标记语言 标签预览
标签的书写格式
标签的属性
标签的嵌套
标签嵌套的意义
HTML的注释
文档声明
html标签
02 Tomcat部署
项目实战前的假设
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>
登陆页面
跳转页面
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请求
请求参数放在请求体中
请求头
*/
}
登陆失败页面
登录成功页面
Servlet_JSP
Servlet
service方法
接收到一个http请求首先调用service方法,如果调用了service方法就不会再去调用doGet和doPost方法了。
由service统一处理doGet和doPost方法。
乱码问题解决
细节
单例模式
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不是单例模式