1.web开发入门

1.1 引入

软件结构分类:

CS结构:客户端和服务器端

特点:

1)必须安装特点的客户端程序

2)服务器端升级,客户端同步升级

BS结构:浏览器和服务器端

特点:

1)不需要安装特点的客户端(只需要浏览器)

2)服务器端升级,客户端不需要升级的。

1.2 服务器

从物理上一台PC机器,配置比较高。

  • web服务器:在PC机器安装web服务软件,提供web服务
  • 数据库服务器:在PC机器安装了数据库软件,提供数据管理服务
  • 邮件服务器:在PC机器上安装了可以收发邮件服务软件

1.3 web服务软件

web服务软件作用: 把本地资源文件共享给外部访问

package cn.jxufe.java.chapter03;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket; /*
* socket服务器端程序
*/
public class Server { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
// 1)创建ServerSocket对象,监听某个端口
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("服务器正在启动....");
while (true) {
// 2)接收客户端连接
Socket socket = serverSocket.accept();
// 3)把本地的hello.html文件内容发送给socket客户端
// 3.1 构建数据发送通道
OutputStream out = socket.getOutputStream();
// 3.2 读取本地hello.html文件内容
FileInputStream fis = new FileInputStream("e:/hello.html");
/**
* 输入流 输入字节流: InputStream FileInputStream BufferedInputStream
*
* 方法: read(): 读取一个字节 read(byte[] data): 读取多个字节 如何判断文件结束? 返回的长度等于-1
*
* 输入字符流: Reader FileReader BufferedReader
*
* 方法: read(): 读取一个字符 read(char[] data): 读取多个字符
*/
// 边读边写
/*int len=0;
while( (len = fis.read())!=-1 ){
out.write(len);
}*/ // 使用字节数组形式
byte[] buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);// 写出指定的buf数组内容,从0开始写,写到len位置
} // 4.关闭资源
fis.close();
out.close(); }
} }

1.4 市面上常见的web服务软件

WebSphere: 是IBM公司。是支持JavaEE规范的。收费的。

IIS:是微软公司。收费的。和net语言兼容性最好。

WebLogic:是BEA公司。收费的。支持JavaEE规范的。

Tomcat: 免费的。和java语言兼容性最好。不完全支持javaEE规范的。支持servlet,jsp.jdbc,javamail,但是不支持ejb

2.tomcat服务器基本使用

2.1 基本使用

1)到apache开源组织下的官网下载

2)下载的版本:

安装版: EXE    msi

压缩版: zip   rar   tag.gz

3)启动软件

3.1 找到%tomcat%/bin/startup.bat。双击。

验证是否成功,打开浏览器:

http://localhost:8080

3.2 看到一只猫的页面,证明ok了!

4)关闭软件

4.1 找打%tomcat%/bin/shutdown.bat.双击

2.2 体验tomcat服务器如何共享文件

规则:把文件拷贝到webappps目录下,不能单独共享文件,必须以目录(网站)形式共享

2.3 URL

http://localhost:8080/web/hello.html   统一资源定位符

http://      协议。http协议

执行流程:

1) 本地hosts文件,  ip地址 域名 (c:/windows/System32/drivers/etc/hosts)

2)在hosts文件中找不到,到网络运营商的DNS服务器中找域名对应的IP地址。

3)找到,访问对应的ip地址的PC机器.

localhost     域名。

本地域名: localhost

外部域名: www.baidu.com

8080        端口。软件监听端口

qq: 5555

tomcat: 8080

mysql: 3306

oracle: 1521

系统默认端口: 80

注意: 一个软件监听了默认端口,那么访问这个软件不需要写80.

web         网站名称。(web应用的名称)

hello.html    网站中的资源名称。

2.4 tomcat启动常见的问题

1)闪退

原因: tomcat软件使用java语言开发,需要jvm运行。tomcat软件在启动时寻找JAVA_HOME环境变量,JAVA_HOME配置的是jdk的目录。

解决办法:配置JAVA_HOME环境变量

2)端口占用的问题

原因:其他软件在占用端口

解决办法:

a)关闭其他软件

b)修改tomcat软件监听的端口

3)CATALINA_HOME变量的问题

4)tomcat启动出现乱码

  原因:Tomcat编码和电脑系统编码不一致

  解决办法:F:\apache-tomcat-7.0.94\conf\logging.properties文件中指定编码方式

  java.util.logging.ConsoleHandler.encoding = GBK(本来是UTF-8)

3.Tomcat服务器目录结构

|-bin目录: 存在tomcat软件操作指令。

startup.bat   catalina.bat start

shutdown.bat   catalina.bat stop

|-conf目录: 存在tomcat软件的配置文件

|-lib目录: 支持tomcat软件运行的jar包,因为tomcat使用java语言开发的。

|-logs目录: 存放tomcat运行的日志信息

|-temp目录: 存放临时文件

|-webapps目录: 存放web应用(网站)的目录

|-work目录: tomcat运行目录,存放jsp页面运行过程中产生的临时文件。

4.网站(web应用)目录结构

|-WebRoot         根目录

|- 普通文件(html,css,js,images)

|- WEB-INF      目录。固定写法

|-classes     目录。固定写法。存放class文件

|-lib          目录。固定写法。存放jar包。

|-web.xml    文件。

注意 :

1)WEB-INF外面的文件是可以直接通过浏览器访问的。

2)但是WEB-INF里面的文件是不可以通过浏览器直接访问的。如果想让WEB-INF里面的内容提供给外部访问,那么需要在web.xml文件中配置。

5.如何发布网站(web应用)

5.1 把整个网站拷贝到webapps目录下

ROOT是默认网站,访问默认网站是不需要名称的。

配置首页

<?xml version="1.0" encoding="utf-8"?>
<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"> <!-- 配置网站的首页 -->
<welcome-file-list>
<welcome-file>hello.html</welcome-file>
</welcome-file-list> </web-app>

访问首页不需要名称的!

弊端: tomcat软件和发布的网站是在一起的。

5.2 配置虚拟网站

<!--
#server.xml
配置虚拟网站
docBase:网站绝对路径
path:访问网站的名称
-->
<Context docBase="C:\web" path="/jxufe"/>

好处:软件和网站是分离的。

注意: path可以不写内容,表示当前网站是默认网站,优先于ROOT的网站。

弊端:修改server.xml文件,风险比较大

5.3 通过添加xml文件的方式配置虚拟网站(推荐)

1)在conf/Catalina/localhost  添加jxufe.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="C:\web" />

6.站点配置

name: 表示站点名称。访问站点就是使用站点名称。

appBases: 表示站点根目录

站点和网站的关系?

一个站点可以包含多个网站。

一个网站就在一个站点中。

1)在server.xml文件中添加host标签

2)在本地的hosts文件,中添加一个站点和ip地址的映射

3)访问站点的百度音乐项目

7.动态网站的开发

html/css/javascript 前端(静态网页)

静态网站: 只包含静态网页

动态网站: 既有静态网页,可以有动态网页

静态网页:用户多个访问这个网页时,网页的源码是不会改变的。

动态网页:用户多个访问这个网页时,网页的源码是有可能改变的。

使用servlet技术开发动态网页

Servlet特点:

1)servlet就是一个普通java类,继承HttpServlet类

2)servlet交给tomcat服务器运行(web服务器软件)!!!

手动开发一个servlet

1)编写一个普通的java类,继承HttpServlet类,覆盖doGet方法(
注意: 到tomcat的lib目录下拷贝servlet-api.jar导入到你的项目中 public class HelloServlet extends HttpServlet{ //覆盖doGet
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
//向浏览器输出内容
resp.getWriter().write("当前时间为:"+new Date());
} } 2)把servlet交给tomcat服务器运行!!!!!! 2.1 把servlet对应的class文件拷贝到tomcat的某个项目(bbs)的WEB-INF/classes目录下 2.2 在bbs项目的WEB-INF/web.xml文件配置servlet <?xml version="1.0" encoding="utf-8"?> <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>gz.itcast.b_servlet.HelloServlet</servlet-class>
</servlet> <servlet-mapping>
<!-- servlet名称,和上面的名称保持一致 -->
<servlet-name>HelloServlet</servlet-name>
<!-- 公开给外部访问这个servlet的名称(路径) -->
<url-pattern>/hello</url-pattern>
</servlet-mapping> </web-app> 3.通过URl访问这个servlet http://localhost:8080/bbs/hello

用工具开发一个servlet

1)创建一个bbs的web project

2)在WebRoot下编写静态网页

3)在src下编写动态网页

    3.1 在src右键选择 “servlet”
3.2 写上servlet的包,名,选择覆盖doGet方法 -> next
3.3 修改servlet的名称,修改访问servlet的url -> finished 4)myecplise关联tomcat服务器
4.1 window-> preferences -》 搜索“tomcat” -> 找到“tomcat6.x”
4.2 选择 tomcat的根目录
4.3 把disable -> enable 5)部署网站
5.1 点击发布图标 -> 选择网站- 》 选择发布的tomcat服务器
-> ok 6)访问:
静态文件: http://localhost:8080/bbs/index.html
动态文件: http://locahost:8080/bbs/hello

06Web服务的更多相关文章

  1. solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件

    昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...

  2. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  3. 启动了VSAN服务的主机不在vCenter集群中

    背景: 这个问题的来源是,某用户将该ESXi主机直接夺取到另一个vCenterA的管辖中,而这个vCenterA中集群A开启了VSAN功能,导致再次反向夺取到vCenterB中的时候带有了来自于集群A ...

  4. node服务的监控预警系统架构

    需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...

  5. 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇

    什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...

  6. 本人提供微软系.NET技术顾问服务,欢迎企业咨询!

    背景: 1:目前微软系.NET技术高端人才缺少. 2:企业很难直接招到高端技术人才. 3:本人提供.NET技术顾问,保障你的产品或项目在正确的技术方向. 技术顾问服务 硬服务项: 1:提供技术.决策. ...

  7. 使用 Roslyn 编译器服务

    .NET Core和 .NET 4.6中 的C# 6/7 中的编译器Roslyn 一个重要的特性就是"Compiler as a Service",简单的讲,就是就是将编译器开放为 ...

  8. C#高性能TCP服务的多种实现方式

    哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...

  9. 使用ServiceStack构建Web服务

    提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...

随机推荐

  1. Internet History, Technology, and Security(week6)——Technology: Transport Control Protocol(TCP)

    前言: 这周开始学习分层网络模型的第三层,传输层. Transport/Reliability: Transport Layer TCP层的目的是补偿IP层中可能出现的错误,并充分利用可用资源.由于I ...

  2. Django REST framework入门 (转自中文文档)

    快速入门 我们将创建一个简单的允许管理员用户查看和编辑系统中的用户和组的API. 项目设置 创建一个名为 tutorial 的新django项目,然后启动一个名为 quickstart 的新app. ...

  3. [BZOJ4552]:[Tjoi2016&Heoi2016]排序(桶排序)

    题目传送门 题目描述 在2016年,佳媛姐姐喜欢上了数字序列. 因而她经常研究关于序列的一些奇奇怪怪的问题,现在她在研究一个难题,需要你来帮助她. 这个难题是这样子的:给出一个1到n的全排列,现在对这 ...

  4. 关于Java泛型实现原理的思考与一般用法示例总结

    面向对象的一个重要目标是对代码重用的支持.支持这个目标的一个重要机制就是泛型机制.在1.5版本之前,java并没有直接支持泛型实现,泛型编程的实现时通过使用继承的一些基本概念来完成的. 这种方式的局限 ...

  5. 从 Quora 的 187 个问题中学习机器学习和NLP

    从 Quora 的 187 个问题中学习机器学习和NLP 原创 2017年12月18日 20:41:19 作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai ...

  6. MySQL高可用架构之MySQL5.7.19 PXC

    CentOS7.3下Percona-XtraDB-Cluster-5.7.19集群部署PXC三节点安装:node1:10.10.10.11 node2:10.10.10.12node3:10.10.1 ...

  7. 协议:FTP

    ylbtech-协议:FTP FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一.FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客 ...

  8. Vue Router 路由守卫:完整的导航解析流程

    完整的导航解析流程 1 导航被触发. 2 在失活的组件里调用离开守卫. 3 调用全局的 beforeEach 守卫. 4 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+). ...

  9. Java相关面试题总结+答案(七)

    [Hibernate] 113. 为什么要使用 hibernate? hibernate 是对 jdbc 的封装,大大简化了数据访问层的繁琐的重复性代码. hibernate 是一个优秀的 ORM 实 ...

  10. [Python3 练习] 002 温度转换2

    题目:温度转换 II (1) 描述 温度的刻画有两个不同体系:摄氏度 (Celsius) 和华氏度 (Fabrenheit) 请编写程序将用户输入的华氏度转换为摄氏度,或将输入的摄氏度转换为华氏度 转 ...