此文章承接上篇文章XML(从是什么到怎么用),篇幅较长,可以收藏慢慢学习
优质文章导读: XML入门(零基础教程) 一文了解Java反射
通过本文,可以了解到:
了解Browser-Server (B/S) 模式掌握Servlet开发技巧掌握Servlet执行原理Browser-Server(B/S)模式即浏览器和服务器架构模式 优点: 开发简单,无需安装客户端,数据易于共享 缺点: 相较于C/S模式,执行速度与用户体验相对较弱
B/S模式执行流程 举个例子,一个用户 打开了浏览器, 然后输出了www.baidu.com ,然后浏览器会根据这个网址去查询这个网址所对应的IP地址是什么,这个转换过程是由DNS 来完成的,然后查询到IP地址之后,浏览器就会将刚刚我们输出的网址或者一些附加的信息通过http协议发送给远程的服务器主机,然后服务器主机根据刚刚发送过来的数据包利用里面编写好的程序动态的去生成了HTML,然后服务器程序会将这份HTML返回给浏览器,然后浏览器将对HTML进行解释,展示给用户 请求与响应
从浏览器发出送给服务器的数据包称为"请求(Request)"从浏览器返回给浏览器的结果称为"响应(Response)"J2EE 在Java中如何开发BS应用程序呢,这就需要J2EE了
J2EE (Java 2 Platform Enterprise Edition) 是指"Java 2企业版"
开发BS(Web)应用程序就是J2EE最核心的功能
J2EE由13个功能模块组成 Apache Tomcat 如果想要我们的web应用程序能够动态的生成网页的话,就需要有一台web服务器,简略介绍一下在Java领域大名鼎鼎的一款web服务器程序
Tomcat是Apache软件基金会旗下一款免费的开放源代码的Web应用服务器程序
J2EE与Tomcat的关系
J2EE是一-组技术规范与指南,具体实现由软件厂商决定Tomcat是J2EE Web (Servlet与JSP) 标准的实现者J2SE是J2EE运行的基石,运行Tomcat离不开J2SEServlet 而有了Tomcat还不够,Tomcat装上了以后可以让我们的电脑变成一台服务器,而在服务器内部,程序是如何处理的,就要用到J2EE的核心组件Servlet来进行编码 Tomcat与Servlet的关系
这里只是先学习Servlet,可以先在windows下进行安装 参考: win10下Tomcat的安装与运行
建议参考这篇博文 使用IDEA配置Tomcat
在配置好Tomcat的前提下,我们来创建一个FirstServelet类,实现最基本的操作
import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; //HttpServlet是所有我们自己写的Servlet服务器小程序的父类,必须进行继承才可以开发我们自己的程序 public class FirstServlet extends HttpServlet { @Override //重写service函数,req 代表的是request(请求) 包含浏览器向服务器发送的请求的数据 // resp 代表的是response(响应) 包含从服务器生成,要发送回浏览器的信息 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //接收请求发来的参数 String name = req.getParameter("name"); String html = "<h1 style='color:red'>Hi," + name +"! </h1><hr/>"; //这相当于从服务器向浏览器返回的输出流 PrintWriter out = resp.getWriter(); //将html返回给浏览器 out.println(html); } }我们写好这个之后,还需要在web.xml中进行配置 打开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> <!-- servlet的别名 --> <servlet-name>first</servlet-name> <!-- 类的完整路径 --> <servlet-class>FirstServlet</servlet-class> </servlet> <!-- 将Servlet与URL绑定 --> <servlet-mapping> <!-- 此处的<servlet-name>与上方的声明必须保持一致 --> <servlet-name>first</servlet-name> <url-pattern>/hi</url-pattern> </servlet-mapping> </web-app>J2EE设置这个别名,有两个好处
使用别名,比较简洁,让配置看起来比较舒服而我们的类的完整路径,在系统中是敏感信息,不应该轻易的暴露,这样使用别名来绑定URL,这样可以提高程序的安全性在我们上述过程中,浏览器和Tomcat之间是如何互动的呢,我做一个解释: 首先,对于浏览器来说,我们在地址栏里面输入了 localhost:8080/FirstServe_war_exploded/hi?name=yumao 以后,这个信息会通过请求发送给Tomcat,当Tomcat收到了这个信息以后,会从web.xml文件中去查找有没有与之匹配的servlet-name(我们设置的映射为hi,它的servlet-name是first),接着去查找对应的类,然后会创建一个和寻找到的类相同名的对象并且执行其中的service()方法(这就是之前为什么要重写service()方法的原因 ,service()方法用意就是为了为servlet提供响应和支持),之后Tomcat会将输出的字符串(也就是html代码)通过response响应原封不同的发送给浏览器,然后浏览器会解析这串代码并展示出来.
其实很简单
import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; /** * urlPatterns 是URL的值,即使可能不会用到,也要写入 * loadOnStartup 是优先级的值 0最大 9999最小 */ @WebServlet(urlPatterns = "/anno",loadOnStartup = 0) public class AnnotationServlet extends HttpServlet { @Override public void init() throws ServletException { System.out.println("正在创建"); } }若有错误,请各位指正,文章持续更新,关注羽毛,我们一同成长