此文章承接上篇文章XML(从是什么到怎么用),篇幅较长,可以收藏慢慢学习
优质文章导读:
XML入门(零基础教程)
一文了解Java反射
通过本文,可以了解到:
Browser-Server(B/S)模式即浏览器和服务器架构模式
优点: 开发简单,无需安装客户端,数据易于共享
缺点: 相较于C/S模式,执行速度与用户体验相对较弱
B/S模式执行流程
举个例子,一个用户 打开了浏览器, 然后输出了www.baidu.com ,然后浏览器会根据这个网址去查询这个网址所对应的IP地址是什么,这个转换过程是由DNS 来完成的,然后查询到IP地址之后,浏览器就会将刚刚我们输出的网址或者一些附加的信息通过http协议发送给远程的服务器主机,然后服务器主机根据刚刚发送过来的数据包利用里面编写好的程序动态的去生成了HTML,然后服务器程序会将这份HTML返回给浏览器,然后浏览器将对HTML进行解释,展示给用户
请求与响应
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的关系
Servlet
而有了Tomcat还不够,Tomcat装上了以后可以让我们的电脑变成一台服务器,而在服务器内部,程序是如何处理的,就要用到J2EE的核心组件Servlet来进行编码
Tomcat与Servlet的关系
这里只是先学习Servlet,可以先在windows下进行安装
参考: win10下Tomcat的安装与运行
建议参考这篇博文 使用IDEA配置Tomcat
组织结构 | 描述 |
---|---|
tomcat安装目录/webapps/ | Tomcat应用根目录 |
/web应用目录/ | Java Web应用目录 |
/web应用目录/index.html |.jsp | 默认首页 |
/WEB-INF | WEB应用的安全目录,用于存放配置文件 |
/WEB-INF/web. xmI | web.xml是“部署描述符文件”,是该Web项目核心配置文件 |
/NWEB-INF/classes | 存放编译后的classes文件 |
/WEB-INF/lib | 用于存放web应用依赖的jar文件 |
/META-INF/MANIFEST.MF | 包含Web应用的版本等信息 |
在配置好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 = "Hi,"
+ name +"!
";
//这相当于从服务器向浏览器返回的输出流
PrintWriter out = resp.getWriter();
//将html返回给浏览器
out.println(html);
}
}
我们写好这个之后,还需要在web.xml中进行配置
打开web.xml
<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>firstservlet-name>
<servlet-class>FirstServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>firstservlet-name>
<url-pattern>/hiurl-pattern>
servlet-mapping>
web-app>
J2EE设置这个别名,有两个好处
在我们上述过程中,浏览器和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;
/*写了注解@WebServlet(映射URL) 之后就不用切换去写web.xml里面的东西了
*因为有了这句话之后,在启动的时候,Tomcat会扫描所有的字节码文件,这个类里面写了@WebServlet并且配置了
* 对应的URL,就会按照这个规则加载进去,其实@WebServlet就像是一个标志,告诉Tomcat当前的类是一个Servlet,
* 要将它绑定到/anno就可以了
*/
@WebServlet("/anno")
public class AnnotationServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().println("I'm annotationServlet servlet!");
}
}
其实很简单
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("正在创建");
}
}
若有错误,请各位指正,文章持续更新,关注羽毛,我们一同成长