Servlet教程第一课 Servlet = Server + Applet 即服务器加应用程序 是使用java语言编写的运行在服务器端上的小程序
Servlet的功能 1.使用Servlet收集来自网页表单的用户输入; 2.呈现来自数据库或者其他源的记录; 3.可以动态创建网页
Servlet 任务 1.读取客户端(浏览器)发送到显式的数据。包括网页上的html表单,或者是来自applet、自定义的HTTP客户端程序的表单。 2.读取客户端发送的隐式的HTTP请求数据,包括cookies、媒体类型和浏览器能够理解的压缩格式等。 3.处理数据并生成结果。可能需要访问数据库,执行RMI或CORBA调用,调用Web服务,或者直接计算出对应的响应。 4.发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。 5.发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。
Servlet规范 Servlet规范包含3大技术:Servlet本身技术、Filter(过滤器)技术、Listener(监听器)技术 规范可以理解为接口,接口大多数需要实现。
作业 要求: 1.准备注册页面 2.后端的Servlet类 3.从前端客户端获取数据后,把数据再通过后端服务器传输到前端页面上。 一: 这是你需要在浏览器生成的画面 这是你需要在代码页写的代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <!--页面标题--> <title>登录页面</title> </head> <body> <form action="login"> <input type = "text" name = "username" placeholder = "手机/用户名/邮箱"> <br> <input type = "password" name = "password" placeholder = "密码"> <br> <input type = "submit" value = "登录"> <br> </form> </body> </html>表单:录入数据,把数据传输给后端服务器。 action:执行url动作,请求的资源路径。 input标记是form表单标记中一个高频使用标记,type=submit表达的是想把form表单中所有的数据打包成form形式提交给后端服务器。 如果type=butto那么该按钮仅表示一个简单的按钮,只具备鼠标点击的动作。 二 第一种:使用注解“@”的方式
package com.zhiyou100; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.ResponseCache; @WebServlet("/login") public class LoginServlet implements Servlet { // 提供服务的 @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { // 转换成可支持http协议的类 HttpServletRequest request=(HttpServletRequest) servletRequest; HttpServletResponse response=(HttpServletResponse) servletResponse; request.setCharacterEncoding("UTF-8"); // 设置可以响应给浏览器客户端支持的中文文本信息 response.setContentType("text/html;charset=UTF-8"); // 设置可以接收带中文的文本信息 getParameter("参数名称") 如果是表单参数,填写name属性值 // 凡是客户端提交的参数值,一般情况下该参数值的数据类型都是String String username = request.getParameter("username"); String password = request.getParameter("password"); //假定用户名是张三,密码是123456 && 短路与 if(username.equals("张三")&& password.equals("123456")){ // 就表明信息正确 // 恭喜你登录成功! response.getWriter().write("恭喜你登录成功"); }else{ // 不正确 请重新输入 response.getWriter().write("不正确 请重新输入"); } } @Override public String getServletInfo() { return null; } @Override public void destroy() { } @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } }第二种 在web.xml中编辑代码,不使用注解方式
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>login</servlet-name> <servlet-class>com.zhiyou100.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> </web-app> 配置url映射信息 在url-pattern标记里填写的就是浏览器客户端请求的资源路径 http://localhost:8080/day09/hello 组成部分:网络协议://域名:(服务器名-》》备案(绑定ip+域名)): 端口号(唯一)/部署在服务器上的虚拟目录/请求资源路径?name=张三&password=123456 hello是请求的资源路径 如果没有端口号,说明他用的端口号是80端口,80可以省略不写 ?name=张三&password=123456 请求资源路径携带的请求参数,?是分割作用 如果请求参数有多个的话,用“&”连接 在servlet-class标记中,里面需要填写类(全路径:包名+类名)全限定类名 注册三 运行之后页面 这是默认页面 需要在day09之后添加自己写的部署在服务器上的虚拟目录 比如这一篇作业"login.html" 之后添加内容