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. IIS新建项目

    我在写网站的时候要 经常帮公司的游戏写界面,他们用的都是VS,然后要用IIS创建项目(配置环境)然后页面才能够在浏览器上看效果. 那就要先了解啥是IIS: IIS是Internet Informati ...

  2. Actor Roles 图示

    Udemy上的教程<Unreal Multiplayer Mastery - Online Game Development in C++>中对Actor Roles的总结非常直观到位,一 ...

  3. 使用maven如何生成源代码的jar包

    http://hw1287789687.iteye.com/blog/1943157 Maven build...

  4. 如何将一个SpringBoot简便地打成一个war包(亲测有效)

    正常情况下SpringBoot项目是以jar包的形式,通过命令行: 来运行的,并且SpringBoot是内嵌Tomcat服务器,所以每次重新启动都是用的新的Tomcat服务器.正因如此,也出现了一个问 ...

  5. Extending Widgets with the Widget Factory

    https://learn.jquery.com/jquery-ui/widget-factory/extending-widgets/ 实例 https://github.com/tkvw/jQue ...

  6. Ta还没有分享呢,过段时间再来看看吧~ 解决办法

    自己摸索出来的.只能查看以前分享的奥.   找到要查看用户的id号   利用特百度搜索工具实现检索 http://www.tebaidu.com/user--1.html 将红字部分替换为刚才复制的u ...

  7. ARM非对齐访问和Alignment Fault

    1.指令对齐 A64指令必须word对齐.尝试在非对齐地址取值会触发PC alignment fault. 1.1.PC alignment checking PC(Program Counter)寄 ...

  8. flask_sqlalchemy和sqlalchemy的区别有哪些?

    概要的说: SQLAlchemy是python社区使用最广泛的ORM之一,SQL-Alchmy直译过来就是SQL炼金术. Flask-SQLAlchemy集成了SQLAlchemy,它简化了连接数据库 ...

  9. java对接短信平台

    短信验证码目前是比较主流验证身份的一种方式,下面分享下我对接的几种短信平台 阿里云短信:https://api.alidayu.com/docs/api.htm?spm=a3142.7395905.4 ...

  10. js导入外部文件