山东省住房和城乡建设厅官方网站,黄岛建设厅官方网站,深圳短视频seo哪家好,公司网站建设企业文章目录 一、WEB服务器服务器概述使用Java代码手写web服务器 二、服务器软件Web服务器服务器软件的使用步骤 三、TomcatTomcat的下载Tomcat的安装与卸载Tomcat的启动与关闭常见问题 四、新建Java Web项目并将项目部署到tomcat中新建Java Web项目将项目部署到Tomcat中出现的问题… 文章目录 一、WEB服务器服务器概述使用Java代码手写web服务器 二、服务器软件Web服务器服务器软件的使用步骤 三、TomcatTomcat的下载Tomcat的安装与卸载Tomcat的启动与关闭常见问题 四、新建Java Web项目并将项目部署到tomcat中新建Java Web项目将项目部署到Tomcat中出现的问题 一、WEB服务器
服务器概述
指的也是计算机只不过服务器要比我们日常使用的计算机大很多。 服务器也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求并进行处理因此一般来说服务器应具备承担服务并且保障服务的能力。
服务器的构成包括处理器、硬盘、内存、系统总线等和通用的计算机架构类似但是由于需要提供高可靠的服务因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
在网络环境下根据服务器提供的服务类型不同可分为文件服务器数据库服务器应用程序服务器WEB服务器等。
服务器只是一台设备必须安装服务器软件才能提供相应的服务。 使用Java代码手写web服务器
主要使用到的是ServerSocket和Socket ServerSocket和Socket是Java网络编程中的两个核心类它们位于java.net包中用于实现基于TCP协议的客户端-服务器通信模型。 ServerSocket ServerSocket类在Java中代表服务器端的套接字它主要用于监听指定端口上的客户端连接请求。服务器程序通过实例化一个ServerSocket对象并绑定到特定的端口号上开始等待客户端的连接。当调用ServerSocket.accept()方法时服务器会阻塞并等待客户端的连接。一旦有新的客户端连接请求到达该方法会返回一个新的Socket对象表示与该客户端建立了一个新的通信通道。 Socket socket又称套接字应用程序通常通过套接字向网络发出请求或者应答网络请求。Socket类则代表客户端或服务端的一个连接端点即一个已建立连接的套接字。Socket允许程序员将网络连接看作是另外一个可以读写字节的流(既然是流就肯定有两端)。Socket是建立网络连接时使用的在连接成功时应用程序两端都会产生一个socket实例。操作这个实例完成所需的会话。在客户端应用程序创建一个Socket对象通常需要指定服务器的IP地址和端口号然后通过调用Socket构造函数来发起对服务器的连接请求。建立连接后客户端和服务端都可以通过各自对应的Socket对象进行读写操作进行双向的数据传输。 总结来说ServerSocket用于在服务器端创建并监听连接而Socket则是在客户端和服务端之间实际数据交换的载体。通过这两种对象的协同工作实现了Java网络编程中的可靠、面向连接的通信机制。 说明以下代码大家不需要自己写我们主要是通过代码让大家了解到服务器针对HTTP协议的解析机制 /** 自定义web服务器*/
public class Server {public static void main(String[] args) throws IOException {ServerSocket ss new ServerSocket(8080); // 监听指定端口System.out.println(server is running...);while (true){Socket sock ss.accept();System.out.println(connected from sock.getRemoteSocketAddress());Thread t new Handler(sock);t.start();}}
}class Handler extends Thread {Socket sock;public Handler(Socket sock) {this.sock sock;}public void run() {try (InputStream input this.sock.getInputStream();OutputStream output this.sock.getOutputStream()) {handle(input, output);} catch (Exception e) {try {this.sock.close();} catch (IOException ioe) {}System.out.println(client disconnected.);}}private void handle(InputStream input, OutputStream output) throws IOException {BufferedReader reader new BufferedReader(new InputStreamReader(input, StandardCharsets.UTF_8));BufferedWriter writer new BufferedWriter(new OutputStreamWriter(output, StandardCharsets.UTF_8));// 读取HTTP请求:boolean requestOk false;String first reader.readLine();if (first.startsWith(GET / HTTP/1.)) {requestOk true;}for (;;) {String header reader.readLine();if (header.isEmpty()) { // 读取到空行时, HTTP Header读取完毕break;}System.out.println(header);}System.out.println(requestOk ? Response OK : Response Error);if (!requestOk) {// 发送错误响应:writer.write(HTTP/1.0 404 Not Found\r\n);writer.write(Content-Length: 0\r\n);writer.write(\r\n);writer.flush();} else {// 发送成功响应://读取html文件转换为字符串InputStream is Server.class.getClassLoader().getResourceAsStream(html/a.html);BufferedReader br new BufferedReader(new InputStreamReader(is));StringBuilder data new StringBuilder();String line null;while ((line br.readLine()) ! null){data.append(line);}br.close();int length data.toString().getBytes(StandardCharsets.UTF_8).length;writer.write(HTTP/1.1 200 OK\r\n);writer.write(Connection: keep-alive\r\n);writer.write(Content-Type: text/html\r\n);writer.write(Content-Length: length \r\n);writer.write(\r\n); // 空行标识Header和Body的分隔writer.write(data.toString());writer.flush();}}
}
启动ServerSocket程序 浏览器输入http://localhost:8080 就会访问到ServerSocket程序
ServerSocket程序会读取服务器上html/a.html文件并把文件数据发送给浏览器浏览器接收到a.html文件中的数据后进行解析显示以下内容 现在大家知道了服务器是可以使用java完成编写是可以接受页面发送的请求和响应数据给前端浏览器的而在开发中真正用到的Web服务器我们不会自己写的都是使用目前比较流行的web服务器。如Tomcat 二、服务器软件
服务器软件基于ServerSocket编写的程序
服务器软件本质是一个运行在服务器设备上的应用程序能够接收客户端请求并根据请求给客户端响应数据 Web服务器
Web服务器是一个应用程序(软件)对HTTP协议的操作进行封装使得程序员不必直接对协议进行操作(不用程序员自己写代码去解析http协议规则)让Web开发更加便捷。主要功能是提供网上信息浏览服务。 Web服务器是安装在服务器端的一款软件将来我们把自己写的Web项目部署到Tomcat服务器软件中当Web服务器软件启动后部署在Web服务器软件中的页面就可以直接通过浏览器来访问了。 服务器软件的使用步骤
第1步下载安装Web服务器软件 第2步创建项目
或者直接新建一个项目文件夹这里的baidu就是context root 然后再在项目文件夹里新建 WEB-INF文件夹这个文件夹的名字是固定的 一个web项目最简单的形式就是两个文件夹
第3步将静态资源部署到Web服务器上
然后将网页静态代码放在和WEB-INF同级的地方 第4步启动Web服务器使用浏览器访问对应的资源 浏览器输入http://localhost:8080/baidu/index.html 一个Tomcat中可能会有很多个项目但是她们的context root不能一样通过ip地址端口号就能定位到某台服务器的端口号。通过context root就能定位到某个项目。然后将资源响应给客户端。 上述内容在演示的时候使用的是Apache下的Tomcat软件至于Tomcat软件如何使用后面会详细的讲到。而对于Web服务器来说实现的方案有很多Tomcat只是其中的一种而除了Tomcat以外还有很多优秀的Web服务器比如: Tomcat是轻量级的服务器只支持少量的javaEE规范 而WebLogic、WebSphere支持全部的JavaEE规范所以它们是重量级的服务器 Tomcat就是一款软件我们主要是以学习如何去使用为主。 三、Tomcat
Tomcat服务器软件是一个免费的开源的web应用服务器。是Apache软件基金会的一个核心项目。由ApacheSun和其他一些公司及个人共同开发而成。
由于Tomcat只支持Servlet/JSP少量JavaEE规范所以是一个开源免费的轻量级Web服务器。 JavaSEjava标准版Java SEJava PlatformStandard Edition JavaMEjava小型版 JavaEE规范 JavaEE Java Enterprise Edition(Java企业版) avaEE规范就是指Java企业级开发的技术规范总和。包含13项技术规范JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF 因为Tomcat支持Servlet/JSP规范所以Tomcat也被称为Web容器WebContainer、Servlet容器Servlet是基于Servlet规范开发出来的一种web资源。Servlet程序需要依赖于支持Servlet这种Web服务器才可以运行。
JavaWeb程序需要依赖Tomcat才能运行。
Tomcat的官网: https://tomcat.apache.org/ Tomcat的下载
直接从官方网站下载https://tomcat.apache.org/download-90.cgi Tomcat软件类型说明 tar.gz文件是linux和mac操作系统下的压缩版本zip文件是window操作系统下压缩版本我们选择zip文件 建议不要下载10因为tomcat的版本是和JDK配套的。 Tomcat的安装与卸载
安装: Tomcat是绿色版直接解压即安装 在E盘的develop目录下将apache-tomcat-9.0.27-windows-x64.zip进行解压缩会得到一个apache-tomcat-9.0.27的目录Tomcat就已经安装成功。 注意Tomcat在解压缩的时候解压所在的目录可以任意但最好解压到一个不包含中文和空格的目录因为后期在部署项目的时候如果路径有中文或者空格可能会导致程序部署失败。 打开apache-tomcat-9.0.27目录就能看到如下目录结构每个目录中包含的内容需要认识下 libtomcat本身也是用java和c写的程序它本身也是一个项目所以它本身也依赖一些jar包类。 bin目录下有两类文件一种是以.bat结尾的是Windows系统的可执行文件一种是以.sh结尾的是Linux系统的可执行文件。
webapps就是以后项目部署的目录
**卸载**卸载比较简单可以直接删除目录即可 Tomcat的启动与关闭
启动Tomcat tomcat也是用java和C写的所以它也需要有java虚拟机Java的运行环境因此需要告诉tomcat当前电脑的JDK装在什么地方。配置JAVA_HOME即可。 双击tomcat解压目录/bin/startup.bat文件即可启动tomcat 注意: tomcat服务器启动后,黑窗口不会关闭,只要黑窗口不关闭,就证明tomcat服务器正在运行。 Tomcat的默认端口为8080所以在浏览器的地址栏输入http://127.0.0.1:8080 即可访问tomcat服务器 127.0.0.1 也可以使用localhost代替。如http://localhost:8080 能看到以上图片中Apache Tomcat的内容就说明Tomcat已经启动成功 注意事项 Tomcat启动的过程中遇到控制台有中文乱码时可以通常修改conf/logging.properties文件解决 关闭: 关闭有三种方式
1、强制关闭直接x掉Tomcat窗口不建议 2、正常关闭bin\shutdown.bat 3、正常关闭在Tomcat启动窗口中按下 CtrlC
说明如果按下CtrlC没有反映可以多按几次
常见问题
问题1Tomcat启动时窗口一闪而过
参考博客【Tomcat】The CATALINA_HOME environment variable is not defined correctly-CSDN博客
问题2端口号冲突 发生问题的原因Tomcat使用的端口被占用了。 解决方案换Tomcat端口号 要想修改Tomcat启动的端口号需要修改 conf/server.xml文件 注: HTTP协议默认端口号为80如果将Tomcat端口号改为80则将来访问Tomcat时将不用输入端口号。 localhost:80等价于localhost 四、新建Java Web项目并将项目部署到tomcat中
新建Java Web项目
在父项目中新建子模块 添加web模块 方法一 旧版IDEA可以直接右击模块然后选择Add framework support添加web应用程序即可。 新版IDEA 2023.2以上版本 没有Add framework support选项。 解决办法选中模块双击shift选择操作中文版 搜索添加框架支持英文版 搜索Add framework support即可使用 删除jsp文件 方法二根据如图操作 然后检查目录是否配置正确 最后再点击应用ok即可
然后在web这一级新建html文件 将项目部署到Tomcat中
新建本地tomcat模板 配置完成后直接应用确认
此时再点上面的就会出现一个tomcat模板点击即可 配置tomcat 将项目部署到tomcat中 WAR (Web ARchive) 文件是一种归档格式用于将Java Web应用程序的所有组件包括HTML文件、图像、Java类、JSP等打包在一起。war exploded意味着你的项目已经被展开或解压缩到其各个部分而不是作为一个单独的WAR文件。这种部署方式的优点是可以提高性能因为服务器可以直接访问已展开的文件而不需要先解压缩WAR文件。此外某些IDE如IntelliJ IDEA可能会更轻松地进行热部署hot deployment即在运行时更新代码。 另一种选项 “pro01-javaweb-begin:Web exploded” 可能是指整个项目包括源代码和其他资源被展开并部署到了服务器上。这可能意味着你的项目没有被打包成WAR文件而是直接部署了源代码和资源。 在实际应用中通常推荐使用WAR文件进行部署因为它更容易管理和维护。然而在开发过程中使用 “war exploded” 部署可以提供更快的反馈循环因为更改可以立即反映在运行的应用程序中而无需重新打包和部署WAR文件。 下面的应用程序上下文就是我们所说的context root 为了我们后面写代码比较方便一般情况下直接改成一个 / 则网址上对应的项目名称就可以省略了
http://localhost:8080/baidu/index.html 也就变成了 http://localhost:8080/index.html
修改tomcat启动时打开浏览器时自动跳转到的页面的URL 如果只写一个/那么表名我们访问的是index.html如果没有就会报404. 验证 如果我们所输入的URL后面没有接上任何的资源它默认情况下先访问index.html如果index.html没有就访问index.htm如果第二个页面没有就会尝试去访问index.jsp如果也没有就会报404. 如果想要让自己的页面加入进默认访问只需要在中将自己的页面加入进去即可 当然我们也可以加入到自己的项目里去只需要将整个复制到自己Web项目的web/WEB-INF/web.xml文件中即可。 下图表示启动后自动打开的浏览器 当有更新操作时执行重新部署 当IDEA失去焦点后重新更新类和资源 当在IDEA中修改tomcat端口时修改的其实也是tomcat的config文件 然后应用确认即可
建议养成习惯运行的时候都点debug模式而不是运行模式。
好处是如果出问题了就可以直接设置断点直接调试。如果是运行模式断点就没啥用了。 tomcat运行成功自动弹出浏览器窗口 eclipse在配置tomcat在部署的时候它是正儿八经的把这个项目部署到webapp目录的但idea是部署在pro-web\out\artifacts中然后在tomcat中去指明所部署的项目在这所以原始的webapp目录基本上就没啥用了。 出现的问题
web目录前面没有蓝色小点 进入项目结构然后跟着下图操作 注意web.xml的路径中间的web非常容易掉 然后点击确定应用即可。