赞
踩
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
-
- public class UDPServer {
- public static void main(String[] args) throws IOException {
- System.out.println("UdpServer启动");
- // 创建upd套接字
- DatagramSocket socket = new DatagramSocket(8080);
- // 获取客户端连接
- byte[] buffer = new byte[1024];
- while (true) {
- // 获取客户端请求
- DatagramPacket client = new DatagramPacket(buffer, buffer.length);
- socket.receive(client);
- String request = new String(client.getData(), 0, client.getLength());
- // 回显客户端
- String response = request;
- socket.send(new DatagramPacket(response.getBytes(), response.getBytes().length,
- client.getAddress(), client.getPort()));
- // 打印交互日志
- System.out.printf("客户端[%s:%d] receive-> %s send-> %s\n", client.getAddress().toString(),
- client.getPort(), request, response);
- }
- }
- }
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.util.Scanner;
-
- public class UDPClient {
- public static void main(String[] args) throws IOException {
- System.out.println("UdpClient启动");
- // 创建客户端套接字
- DatagramSocket socket = new DatagramSocket();
- // 创建数据报
- byte[] buffer = new byte[1024];
- DatagramPacket client = new DatagramPacket(buffer, buffer.length,
- InetAddress.getByName("127.0.0.1"), 8080);
- while (true) {
- // 获取发送数据
- System.out.print("send -> ");
- Scanner scanner = new Scanner(System.in);
- String request = scanner.next();
- client.setData(request.getBytes());
- // 发送数据
- socket.send(client);
- // 获取服务器回显数据
- DatagramPacket server = new DatagramPacket(buffer, buffer.length);
- socket.receive(server);
- // 打印交互日志
- System.out.printf("receive ->[%s:%d] %s\n", server.getAddress().toString(), server.getPort(),
- new String(server.getData(), 0, server.getLength()));
- }
- }
- }
- import java.io.IOException;
- import java.io.PrintStream;
- import java.net.InetAddress;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.Scanner;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
-
- public class TCPServer {
- public static void main(String[] args) throws IOException {
- System.out.println("TCPServer启动");
- // 创建监听套接字
- ServerSocket listenSocket = new ServerSocket(8080, 20, InetAddress.getByName("127.0.0.1"));
- // 创建线程池处理客户端数据
- ExecutorService clientPool = Executors.newCachedThreadPool();
- while (true) {
- // 获取客户端连接
- Socket client = listenSocket.accept();
- // 客户端处理
- clientPool.submit(() -> {
- try {
- clientProcess(client);
- } catch (IOException e) {
- e.printStackTrace();
- }
- });
- }
- }
-
- public static void clientProcess(Socket client) throws IOException {
- System.out.printf("client[%s:%d] connect success\n",
- client.getInetAddress().toString(), client.getPort());
- // 处理客户端数据
- try (Scanner input = new Scanner(client.getInputStream());
- PrintStream output = new PrintStream(client.getOutputStream())) {
- while (true) {
- if (!input.hasNext()) {
- System.out.printf("client[%s:%d] disconnect\n",
- client.getInetAddress().toString(), client.getPort());
- } else {
- // 约定以\n为一个完整报文
- String request = input.nextLine();
- // 回显客户端
- String response = request;
- output.println(response);
- output.flush();
- // 打印交互日志
- System.out.printf("client[%s:%d] receive -> %s send -> %s\n",
- client.getInetAddress().toString(), client.getPort(), request, response);
- }
- }
- }
- }
- }
- import java.io.IOException;
- import java.io.PrintStream;
- import java.net.Socket;
- import java.util.Scanner;
-
- public class TCPClient {
- public static void main(String[] args) throws IOException {
- System.out.println("TCPClient启动");
- // 创建客户端连接
- Socket socket = new Socket("127.0.0.1", 8080);
- Scanner scanner = new Scanner(System.in);
- try (Scanner input = new Scanner(socket.getInputStream());
- PrintStream output = new PrintStream(socket.getOutputStream())) {
- while (true) {
- System.out.print("send -> ");
- String request = scanner.nextLine();
- // 发送请求数据
- output.println(request);
- // 获取服务器回显数据
- String response = input.nextLine();
- // 打印交互日志
- System.out.printf("receive -> server[%s:%d] %s\n",
- socket.getInetAddress().toString(), socket.getPort(), response);
- }
-
- }
- }
- }
- <dependencies>
- <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- <version>2.16.2</version>
- </dependency>
-
- </dependencies>
-
- <packaging>war</packaging>
- <build>
- <finalName>hello</finalName>
- </build>
- <!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
- <web-app></web-app>
- import com.fasterxml.jackson.databind.json.JsonMapper;
-
- 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;
-
- @WebServlet("/test")
- public class HelloServlet extends HttpServlet {
- long count = 0;
-
- @Override
- public void init() throws ServletException {
- new Thread(() -> {
- while (true) {
- count++;
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }).start();
- }
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- String username = req.getParameter("username");
- String password = req.getParameter("password");
- System.out.println("username = " + username + ", password = " + password);
- resp.setContentType("text/html; charset=utf8");
- resp.setStatus(200);
- resp.setHeader("refresh", "1");
- resp.getWriter().write("success " + count);
- }
-
- static class Customer {
- public String username;
- public String password;
- }
-
- static class ResponseMessage {
- public Integer status;
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- JsonMapper jsonMapper = new JsonMapper();
- // 入参映射转换
- // Customer customer = jsonMapper.readValue(req.getInputStream(), Customer.class);
- // 读取入参报文
- StringBuilder request = new StringBuilder();
- // 读取方式一
- // String line;
- // while ((line = req.getReader().readLine()) != null) {
- // request.append(line);
- // }
- // 读取方式二
- byte[] requestBuffer = new byte[1024];
- int length;
- while ((length = req.getInputStream().read(requestBuffer, 0, requestBuffer.length)) > 0) {
- request.append(new String(requestBuffer, 0, length));
- }
- // 组织出参报文,需要注意body的write一定要放在最后一行,否则resp上面设置的会失效(Servlet bug)
- resp.setContentType("application/json; charset=utf8");
- resp.setStatus(200);
- ResponseMessage responseMessage = new ResponseMessage();
- responseMessage.status = 200;
- String response = jsonMapper.writeValueAsString(responseMessage);
- resp.getWriter().write(response);
- System.out.println("request: " + request + "\n" + "response: " + response);
- }
- }
- <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.49</version>
- </dependency>
- import com.fasterxml.jackson.databind.json.JsonMapper;
- import com.mysql.jdbc.StringUtils;
- import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
-
- 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 javax.sql.DataSource;
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
-
- @WebServlet("/jdbc")
- public class JDBCServlet extends HttpServlet {
- DataSource dataSource;
-
- @Override
- public void init() throws ServletException {
- dataSource = new MysqlDataSource();
- ((MysqlDataSource) dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false");
- ((MysqlDataSource) dataSource).setUser("root");
- ((MysqlDataSource) dataSource).setPassword("root");
- }
-
- static class User {
- public String username;
- public String password;
- }
-
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- List<User> userList = new ArrayList<>();
- try (Connection connection = dataSource.getConnection();
- PreparedStatement statement = connection.prepareStatement("select * from user");
- ResultSet resultSet = statement.executeQuery()) {
- while (resultSet.next()) {
- User user = new User();
- user.username = resultSet.getString("username");
- user.password = resultSet.getString("password");
- userList.add(user);
- }
- } catch (SQLException | NullPointerException e) {
- e.printStackTrace();
- }
- JsonMapper jsonMapper = new JsonMapper();
- String response = jsonMapper.writeValueAsString(userList);
- resp.getWriter().write(response);
- }
-
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- JsonMapper jsonMapper = new JsonMapper();
- User user = jsonMapper.readValue(req.getInputStream(), User.class);
- if (StringUtils.isEmptyOrWhitespaceOnly(user.username) || StringUtils.isEmptyOrWhitespaceOnly(user.password)) {
- resp.getWriter().write("body invalid");
- return;
- }
- String message = "fail";
- try (Connection connection = dataSource.getConnection();
- PreparedStatement statement = connection.prepareStatement("insert into user values(null,?,?)")) {
- statement.setString(1, user.username);
- statement.setString(2, user.password);
- int resultCount = statement.executeUpdate();
- if (resultCount > 0) {
- message = "success";
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- resp.getWriter().write(message);
- }
- }
Servlet已默认实现及提供了相关接口,直接使用即可。
- import com.mysql.jdbc.StringUtils;
-
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.io.IOException;
-
-
- @WebServlet("/session")
- public class SessionServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- String username = req.getParameter("username");
- String password = req.getParameter("password");
- resp.setContentType("text/html; charset=utf8");
- if (StringUtils.isEmptyOrWhitespaceOnly(username) || StringUtils.isEmptyOrWhitespaceOnly(password)) {
- resp.getWriter().write("parameter invalid");
- return;
- }
- // 创建Session,这个方法会无论session是否存在都会自动创建session对象,并且会把sessionId设置到响应头中
- HttpSession session = req.getSession(true);
- session.setAttribute("username", username);
- session.setAttribute("password", password);
- // 添加一个cookie
- resp.addCookie(new Cookie("test", "111"));
- resp.sendRedirect("login");
- }
- }
响应返回头中设置了两个Cookie。
重定向的请求头中多了Cookie的两个参数。
- import javax.servlet.ServletException;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.io.IOException;
-
- @WebServlet("/login")
- public class LoginServlet extends HttpServlet {
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
- HttpSession session = req.getSession(false);
- resp.setContentType("text/html; charset=utf8");
- if (session == null) {
- resp.getWriter().write("access invalid");
- return;
- }
- String username = (String) session.getAttribute("username");
- String password = (String) session.getAttribute("password");
- for (Cookie cookie : req.getCookies()) {
- System.out.println(cookie.getName() + ":" + cookie.getValue());
- }
- resp.getWriter().write(username + "&" + password + " login success");
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。