socket用法以及tomcat静态动态页面的加载

一.套接字的使用:

分为以下几步:

1.创建ServerSocket

2.接收客户端的连接

3.读取本地的test.html文件

4.构建数据输出通道

5.发送数据

6.关闭资源

代码参考:

package com.http.socket;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws Exception {
        
        ServerSocket server = new ServerSocket(8080);
        int num = 0;
        while(true){
            FileInputStream in = new FileInputStream(new File("E:/Test/1.xml"));
            Socket socket = server.accept();    
            System.out.println("接受到了链接" + num++);
            OutputStream out = socket.getOutputStream();
            
            int len;
            byte[] buf = new byte[1024];
            while((len = in.read(buf)) != -1){
                out.write(buf, 0, len);
            }
            in.close();
            out.close();
            socket.close();
        }    
    }
}

二.使用tomcat的常见问题:

1)闪退问题

原因:tomcat软件是java语言开发的。 tomcat软件启动时,会默认到系统的环境变量中查找一个名称叫JAVA_HOME的变量。这个变量的作用找到tomcat启动所需的jvm

解决办法; 到环境变量中设置JAVA_HOME的变量

JAVA_HOME= C:Program FilesJavajdk1.6.0_30  (注意别配置到bin目录下)

2)端口占用的错误

原因: tomcat启动所需的端口被其他软件占用了!

解决办法:

a)关闭其他软件程序,释放所需端口

b)修改tomcat软件所需端口

       找到并修改%tomcat%/conf/server.xml文件

  <Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

3CATALINA环境变量问题

原因: tomcat软件启动后,除了查找JAVA_HOME后,还会再查找一个叫CATALINA_HOME变量,这个变量的作用是设置tomcat的根目录。

解决办法:建议不要设置CATALINA_HOME变量。检查如果有的话,清除即可

三.Tomcat的目录结构:

|-bin: 存放tomcat的命令。

catalina.bat 命令:

startup.bat  -> catalina.bat start

shutdown.bat - > catalina.bat stop

    |- conf: 存放tomcat的配置信息。其中server.xml文件是核心的配置文件。

|-lib:支持tomcat软件运行的jar包。其中还有技术支持包,如servletjsp

|-logs:运行过程的日志信息

|-temp: 临时目录

|-webapps 共享资源目录。web应用目录。(注意不能以单独的文件进行共享)

|-worktomcat的运行目录。jsp运行时产生的临时文件就存放在这里

四.Web应用的目录结构:

|- WebRoot :   web应用的根目录

|- 静态资源(html+css+js+image+vedio
|- WEB-INF  固定写法。

|-classes: (可选)固定写法。存放class字节码文件

|-lib: (可选)固定写法。存放jar包文件。

|-web.xml    

注意:

1WEB-INF目录里面的资源不能通过浏览器直接访问

2)如果希望访问到WEB-INF里面的资源,就必须把资源配置到一个叫web.xml的文件中。

要调用动态页面需要导入servlet的jar包,写类文件,将生成的.class文件的包放入WEB_INF的classs文件夹中,并配置web.xml文件;

 代码参考:

java文件:

package com.http.servlet;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().write("大家好,我是handsome崔, 当前时间为:" + new Date());
    }
}

web.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5"> 
    
    <!-- 配置一个servlet程序 -->
    <servlet>
        <!-- servlet的内部名称, 可以自定义 -->
        <servlet-name>HelloServlet</servlet-name>
        <!-- servlet类名: 包名+ 简单类名 -->
        <servlet-class>com.http.servlet.HelloServlet</servlet-class>
    </servlet>    
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>

    
</web-app>

 五.工具开发动态资源

  1)创建web project javaweb工程)

  2)在WebRoot下建立静态资源文件,

  3)在src下建立动态资源文件

    3.1 new -> Servlet( servlet的代码生成器)

    3.2 pacakge  -> class-> 修改mapping  url

  4)关联tomcat服务器

  4.1 window-> Preferences - > MyEcplise -> servers -> Tomcat 6.x (注意一定要enable)

  5)部署web project应用。(拷贝web应用到tomcatwebapps目录下)

  6)启动tomcat服务器

  7)访问servlet

  http://localhost:8081/MyWeb/hello

原文地址:https://www.cnblogs.com/handsomecui/p/6050530.html