一.套接字的使用:

分为以下几步:

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 Files\Java\jdk1.6.0_30  (注意别配置到bin目录下)

2)端口占用的错误

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

解决办法:

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

b)修改tomcat软件所需端口

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

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

connectionTimeout="20000"

redirectPort="8443" />

3)CATALINA环境变量问题

原因: 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包。其中还有技术支持包,如servlet,jsp

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

|-temp: 临时目录

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

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

四.Web应用的目录结构:

|- WebRoot :   web应用的根目录

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

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

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

|-web.xml

注意:

1)WEB-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应用到tomcat的webapps目录下)

  6)启动tomcat服务器

  7)访问servlet

  http://localhost:8081/MyWeb/hello

socket用法以及tomcat静态动态页面的加载的更多相关文章

  1. 前端技术-HTML页面的加载

    HTML页面的加载 HTML页面的加载实际上是基于http过程+浏览器对数据的解析渲染. http协议的请求过程是基于TCP协议的.http是要基于TCP连接基础上,简单的说,TCP单纯建立连接,不涉 ...

  2. 关于asp.net中页面事件加载的先后顺序

    一.ASP.NET 母版页和内容页中的事件 母版页和内容页都可以包含控件的事件处理程序.对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件.控件事件 ...

  3. document.readyState等属性,判断页面是否加载完

    如何在页面加载完成后再去做某事?什么方法可以判断当前页面加载已完成?document.readyState 判断页面是否加载完成?javascript提供了document.readyState==& ...

  4. [f]动态判断js加载完成

    在正常的加载过程中,js文件的加载是同步的,也就是说在js加载的过程中,浏览器会阻塞接下来的内容的解析.这时候,动态加载便显得尤为重要了,由于它是异步加载,因此,它可以在后台自动下载,并不会妨碍其它内 ...

  5. Webpack 常见静态资源处理 - 模块加载器(Loaders)+ExtractTextPlugin插件

    Webpack 常见静态资源处理 - 模块加载器(Loaders)+ExtractTextPlugin插件 webpack系列目录 webpack 系列 一:模块系统的演进 webpack 系列 二: ...

  6. mui框架页面每次加载操作

    最近在优化自己用mui开发的app,主要还是针对交互这块儿,这里简单给大家说一下问题点场景,就是我是通过动态添加底部tabBar的方法创建了一个底部可以切换的操作区域,代码如下: mui.init() ...

  7. 完美解决Webpack多页面热加载缓慢问题【转载】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/localhost_1314/article ...

  8. c++ 动态库的加载

    转载:https://blog.csdn.net/ztq_12345/article/details/99677769 使用ide是vs, 使用Windows.h下的3个函数对动态库进行加载第一个:H ...

  9. js之页面列表加载常用方法总结

    导语:最近由于一些事情需要处理,所以没来得及写技术总结了.今天终于可以坐下来好好的梳理一下脉络,说一下那个在日常前端开发过程中,常用到的页面列表加载的方法总结.这里介绍三种方法,分别是分页加载.按钮加 ...

随机推荐

  1. [Cocos2d-x v3.x]序列帧动画

      简单介绍 Cocos2d-x中.动画的详细内容是依靠精灵显示出来的,为了显示动态图片,我们须要不停切换精灵显示的内容.通过把静态的精灵变为动画播放器从而实现动画效果. 动画由帧组成,每一帧都是一个 ...

  2. [AngularJS] Angular 1.5 $transclude with named slot

    In Angular 1.5, there is no link and compile. So use if you transclude, you cannot access the fifth ...

  3. Qt install Phonon

    sudo apt-get install libphonon-dev phonon-backend-gstreamer

  4. 强制转https

    原文:http://blog.csdn.net/wzy_1988/article/details/8549290 需求简介 基于nginx搭建了一个https访问的虚拟主机,监听的域名是test.co ...

  5. WPF DataGrid 之数据绑定

    1. Auto generation of columns 最简单的方法莫过于让DataGrid根据数据源中的字段自动生成列了: 根据实体类的公共属性, 能够自动生成四种类型的数据列,对应关系如下: ...

  6. 国外十个出名的 upload 上传组件

    在日常开发中,我们常会用到很多的组件及共用代码提高我们的开发效率.   King MEDIA - $ 17.00 / 11 Sales DNNStore | 6/5/2014 6:06:42 PM|  ...

  7. js引用类型姿势

    栈 1)var a=new Array(),a.push(a,b,...),a.pop() queue 1)var a=new Array(), a.push(a,b,...),a.shift() a ...

  8. 15--Box2D使用(一、创建物理世界)

    创建工程Box2DTest,去掉背景和精灵对象等.首先在HelloWorldScene.h头文件定义一个屏幕像素与物理世界长度转换宏,并引入box2D头文件 #define PIXEL_TO_METE ...

  9. windows下配置lamp环境(5)---配置MySQL5.6

    开始配置mysql 1.创建配置文件my.ini   1.进入C:\wamp\MySQL   2.把my-default.ini 另存一份:my.ini   3.开始编辑mysql的配置文件,打开my ...

  10. Python新手学习基础之运算符——位运算

    位运算符 位运算实际上是把数字看作二进制来进行计算,它的运算法则如下: 结合实例,来看下位运算是如何进行的吧: 位运算在实际应用中用途很广泛,比如我们经常听到的子网掩码,它其实就是和IP地址做了按位与 ...