返回 HTML 响应给浏览器

本文介绍了如何在Servlet中处理登录请求,根据账号密码返回登录成功或失败的HTML响应。当账号为'admin'且密码也为'admin'时,返回'success',否则返回'fail'。为了避免空指针异常,常量字符串置于比较之前。若要输出中文,需注意设置响应编码。通过启动Tomcat并提交数据,可以验证登录逻辑。

返回 HTML 响应给浏览器

根据浏览器提交的账号密码返回登录成功或者失败。如果账号是 admin\,密码是 admin, 就返回登录成功,否则返回登录失败。

LoginServlet

判断账号密码是否正确,如果是就打印 “success” 否则就打印 “fail”,分别创建对应的 html 字符串,然后通过 response.getWriter().println() 发送给浏览器。

用户可能没有输入账号密码就提交,Servlet 会获取到 null。比较的时候把常量字符串 “admin” 放前面,这样就规避了空指针异常的问题。

这里输出的响应是 “success” 和 “fail”,不是中文。如果使用中文,浏览器有可能是乱码,需要设置为 UTF-8 编码。

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
  
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
  
        String html = null;
  
        if ("admin".equals(username) && "admin".equals(password)) {
            html = "<div style='color:green'>success</div>";
        } else {
            html = "<div style='color:red'>fail</div>";
        }
        PrintWriter pw = response.getWriter();
        pw.println(html);
    }
  
}

启动 Tomcat,提交数据

启动 Tomcat 服务器,访问页面 http://127.0.0.1/xxx/login.html

输入账号 “admin”,密码 “admin”,点击提交可以看到页面显示为 “success”。

在 C 语言中,你可以通过创建一个简单的 HTTP 服务器,将 HTML 文件返回浏览器。这个服务器会监听某个端口,接收浏览器的请求,并返回一个 HTML 文件内容作为 HTTP 响应。 下面是一个使用 `socket` 编程的 C 语言示例,展示如何读取一个 HTML 文件并将其发送给浏览器。 --- ### ✅ 示例:用 C 语言返回 HTML浏览器 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #define PORT 8080 #define BUFFER_SIZE 1024 #define HTML_FILE "index.html" // 发送 HTTP 响应头和 HTML 内容 void send_html(int client_socket) { FILE *fp = fopen(HTML_FILE, "r"); if (!fp) { char *not_found = "HTTP/1.1 404 Not Found\r\nContent-Type: text/plain\r\n\r\n404 Not Found"; write(client_socket, not_found, strlen(not_found)); return; } // 发送 HTTP 响应头 char header[BUFFER_SIZE] = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"; write(client_socket, header, strlen(header)); // 逐行发送 HTML 文件内容 char buffer[BUFFER_SIZE]; while (fgets(buffer, BUFFER_SIZE, fp)) { write(client_socket, buffer, strlen(buffer)); } fclose(fp); } int main() { int server_fd, new_socket; struct sockaddr_in address; int addrlen = sizeof(address); // 创建 socket server_fd = socket(AF_INET, SOCK_STREAM, 0); if (server_fd == -1) { perror("Socket creation failed"); exit(EXIT_FAILURE); } // 设置地址和端口 address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(PORT); // 绑定 socket if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("Bind failed"); close(server_fd); exit(EXIT_FAILURE); } // 开始监听 if (listen(server_fd, 3) < 0) { perror("Listen failed"); close(server_fd); exit(EXIT_FAILURE); } printf("Server is listening on port %d...\n", PORT); // 接受连接 while (1) { new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen); if (new_socket < 0) { perror("Accept failed"); continue; } printf("Client connected\n"); // 处理请求并发送 HTML send_html(new_socket); // 关闭连接 close(new_socket); } close(server_fd); return 0; } ``` --- ### 📁 配套文件说明 你需要准备一个 `index.html` 文件,放在与 C 程序相同的目录下,例如: ```html <!-- index.html --> <!DOCTYPE html> <html> <head> <title>Hello from C</title> </head> <body> <h1>Hello, Browser! This page is served by a C program.</h1> </body> </html> ``` --- ### 🔧 编译和运行 在 Linux 或 macOS 上: ```bash gcc server.c -o server ./server ``` 然后在浏览器中访问: ``` http://localhost:8080 ``` --- ### ✅ 总结 这个程序通过 socket 创建了一个简单的 HTTP 服务器,接收浏览器请求,并将本地 HTML 文件的内容作为响应返回浏览器。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值