Dirección Código: https://github.com/iyuanyb/webserver
implementos
-
Estática, la adquisición dinámica de recursos;
-
Galleta, Sesión, conexión HTTP larga, y el momento y despejar el largo enlace de sesión HTTP;
-
Spring MVC anotación de programación similar, tal como
@RequestMapping
@RequestParam
similares, puede procesar los datos adquiridos desde el frente de acuerdo con el nombre del parámetro, el objeto se puede pasar, y también soporta atributos de conexión en cascada, tales como:// GET / página? PageSize = 10 & pagenum = 1 HTTP / 1.1 @RequestMapping ( "/ Página") página String (@RequestParam (valor = "pageSize", defaultValue = "10") Entero pageSize, Entero pagenum) {... } / ** * Post / inicio de sesión HTTP / 1.1 * ... * user.name = admin y user.passwd = admin y user.data.val = ok * ******* * usuario类: String nombre; Cadena contraseña; Datos Los datos; * Datos类: String val; * / @RequestMapping ( "/ login", method = HttpMethod.POST) Cadena de inicio de sesión (usuario del usuario) {...}
-
El método devuelve una cadena que representa la plantilla de ruta, se consigue la plantilla con un positivo, sólo desde
request
ysession
conseguir un campo de valor de la propiedad, tales como${request.user.id}
; -
Tala (construido usando registrador java.util.logging, formato de registro personalizado): relacionado con el servidor de registro de la operación (servidor-n.log), HTTP solicita el registro (acceso-n.log).
API Resumen:
@Controller @RequestMapping @RequestParam @RequestHeader @CookieValue HttpRequest HttpResponse HttpSession Cookies HTTPMethod
uso
paquete frasco de importación (véase el comunicado) relacionado con el uso de notas, también es necesario para crear un directorio webapp en la ruta de clase, que representa la ruta raíz de los recursos web estáticas. Luego, en la clase principal de main
las llamadas de método BootStrap.run()
, ya que el controlador de exploración se lleva a cabo por la que atraviesa el directorio, por lo que el proyecto no es compatible con el paquete, debe ser publicada en forma de archivos de clase. parámetros Server-config.properties necesitan para proporcionar un perfil de la ruta de clase, contiene los siguientes elementos de configuración:
# Puerto del servidor PORT = 80 Camino # almacén de archivos de registro LOG_FILE_STORAGE_PATH = E: \\ tiempo de expiración # conexión en milisegundos CONNECTION_EXPIRY_TIME = 30000 # periodo de limpieza expira milisegundos conectada CONNECTION_CLEANING_CYCLE = 30000 # el tiempo de expiración de la sesión en milisegundos SESSION_EXPIRY_TIME = 30000 # la limpieza expiró sesión del ciclo, en milisegundos SESSION_CLEANING_CYCLE = 30000 # escuchan para el cliente lee el caso de que el número de hilos POLLER_THREAD_COUNT = 2 # específica de procesamiento de solicitudes de rosca tamaño de la piscina REQUEST_PROCESSOR_THREAD_COUNT = 4
espectáculo
- estructura del proyecto
-
EchoController.java
Pena com.test paquete de; // paquete de guía omitido ... @Controller // Sólo marca @Controller será considerada responsable del tratamiento // soportes @RequestMapping anotación en la clase, clase pública EchoController { // flujos seguros privados final de la DateTimeFormatter formateador = DateTimeFormatter.ofPattern estática ( "el mM-dD-AAAA HH: mM: SS"); @RequestMapping ( "/ echo") // asignada a "/ echo" public String eco (el HttpRequest Request, @RequestParam (valor = "msg", defaultValue = "entrar en vacío") de cadena MSG) { el LocalDateTime LocalDateTime = LocalDateTime.ofEpochSecond (request.getSession () el getLastAccessedTime () / 1,000, 0, ZoneOffset.ofHours (. 8)) ;. request.setAttribute ( "lastAccessedTime", localDateTime.format (formateador) ); Solicitud.setAttribute ( "msg", msg); volver "test.html"; // para hacer la ruta de plantilla (CLASSPATH: la webapp / la test.html) } public static void main (String [] args) { BootStrap.run (); } }
-
test.html
<! DOCTYPE> <html lang = "es"> <head> <title> prueba </ title> </ head> <body> <p> Eco: $ {} request.msg </ p> <p> Último acceso Tiempo: $ {request.lastAccessedTime} </ p> <p> <img src = "img / girl.jpg" alt = "niña" width = "320" height = "480" /> </ p> </ body > </ html>
-
efecto
-
revista