06Web服务
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服务的更多相关文章
- solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件
昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- 启动了VSAN服务的主机不在vCenter集群中
背景: 这个问题的来源是,某用户将该ESXi主机直接夺取到另一个vCenterA的管辖中,而这个vCenterA中集群A开启了VSAN功能,导致再次反向夺取到vCenterB中的时候带有了来自于集群A ...
- node服务的监控预警系统架构
需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...
- 通过AngularJS实现前端与后台的数据对接(二)——服务(service,$http)篇
什么是服务? 服务提供了一种能在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性. 服务是一个单例对象,在每个应用中只会被实例化一次(被$injector实例化) ...
- 本人提供微软系.NET技术顾问服务,欢迎企业咨询!
背景: 1:目前微软系.NET技术高端人才缺少. 2:企业很难直接招到高端技术人才. 3:本人提供.NET技术顾问,保障你的产品或项目在正确的技术方向. 技术顾问服务 硬服务项: 1:提供技术.决策. ...
- 使用 Roslyn 编译器服务
.NET Core和 .NET 4.6中 的C# 6/7 中的编译器Roslyn 一个重要的特性就是"Compiler as a Service",简单的讲,就是就是将编译器开放为 ...
- C#高性能TCP服务的多种实现方式
哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...
- 使用ServiceStack构建Web服务
提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...
随机推荐
- IIS新建项目
我在写网站的时候要 经常帮公司的游戏写界面,他们用的都是VS,然后要用IIS创建项目(配置环境)然后页面才能够在浏览器上看效果. 那就要先了解啥是IIS: IIS是Internet Informati ...
- Actor Roles 图示
Udemy上的教程<Unreal Multiplayer Mastery - Online Game Development in C++>中对Actor Roles的总结非常直观到位,一 ...
- 使用maven如何生成源代码的jar包
http://hw1287789687.iteye.com/blog/1943157 Maven build...
- 如何将一个SpringBoot简便地打成一个war包(亲测有效)
正常情况下SpringBoot项目是以jar包的形式,通过命令行: 来运行的,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服务器.正因如此,也出现了一个问 ...
- Extending Widgets with the Widget Factory
https://learn.jquery.com/jquery-ui/widget-factory/extending-widgets/ 实例 https://github.com/tkvw/jQue ...
- Ta还没有分享呢,过段时间再来看看吧~ 解决办法
自己摸索出来的.只能查看以前分享的奥. 找到要查看用户的id号 利用特百度搜索工具实现检索 http://www.tebaidu.com/user--1.html 将红字部分替换为刚才复制的u ...
- ARM非对齐访问和Alignment Fault
1.指令对齐 A64指令必须word对齐.尝试在非对齐地址取值会触发PC alignment fault. 1.1.PC alignment checking PC(Program Counter)寄 ...
- flask_sqlalchemy和sqlalchemy的区别有哪些?
概要的说: SQLAlchemy是python社区使用最广泛的ORM之一,SQL-Alchmy直译过来就是SQL炼金术. Flask-SQLAlchemy集成了SQLAlchemy,它简化了连接数据库 ...
- java对接短信平台
短信验证码目前是比较主流验证身份的一种方式,下面分享下我对接的几种短信平台 阿里云短信:https://api.alidayu.com/docs/api.htm?spm=a3142.7395905.4 ...
- js导入外部文件