如何在自己的Windows系统上 架设服务器并开发网站,然后连入外网供外界访问?(JDK+Tomcat+花生壳)
<目前百度谷歌上都木有我这么完整的笔记,虽然各个部分都是来自百度的,然后自己实践,自己做截图笔记,嘻嘻 Made By HeYang>
环境:Windows 7
工具:JDK,Apache tomcat,花生壳 客户端
网站建设技术:JSP
<建议:之后需要用的JSP的开发工具Eclipse都不要建立在中文路径下>
1、首先下载然后安装JDK,安装JDK的方法,包括配置环境变量,百度搜索就会有,这是学习Java的基础,以及简单利用终端测试安装是否成功,此处就不多累述。
2、下载然后安装Apache tomcat服务器,下载网址是:http://tomcat.apache.org/,随便哪个版本的tomcat都可以,一般最好是最新版本的。然后直接解压这个服务器就安装好了。
个人喜好放在JDK安装的目录同一目录下面,如果之后使用了Eclipse For JavaEE(不是普通的Eclipse哦,是专门用来开发JavaWeb的Eclipse)这个IDE的话,最好是不能随便移动这些文件的,包括JDK的目录,因为Eclipse是会默认配置这些文件的所在路径的,或者在安装这个IDE是要首次配置这个文件所在固定好的目录的:
接下来测试apache-tomcat是否有用,如果没有用,往往很可能是JDK环境变量配置错误。
进入apache-tomcat-8.0.24\bin文件夹下,其中双击startup.bat就能启动apache-tomcat服务器,同样双击 shutdown.bat就能关闭apache-tomcat服务器。
一般启动成功的状态是这样的,不是这样的往往就是前面JDK环境变量配置错误,请重新配置,这个基于JDK运行的窗口是不能直接关闭的,如果直接关闭,同时也就关闭了服务器,或者说要想方便的关闭服务器,直接关闭这个窗口也是可以的:
然后本地测试这个服务器,只要在本地浏览器输入:http://localhost:8080 显示下面网页就说明 tomcat服务器架设完毕:
3、建立简单的网页,在apache-tomcat-8.0.24\webapps文件夹下添加文件夹HeYang(文件夹名字随便取),然后在apache-tomcat-8.0.24\webapps\HeYang这个文件夹下面添加记事本和一个测试用的图片1.jpg(随便你什么图片,便于测试名字改为1.jpg),记事本的内容为下面的jsp代码,然后记事本文件名包括后缀全部要改为index.jsp,然后本地访问测试一下:
<%@ page language="java" contentType="textml; charset=UTF-8"
pageEncoding="UTF-8"
errorPage="two.jsp"%> <%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html>
<head>
<meta http-equiv="Content-Type" content="textml; charset=UTF-8">
<title>登入界面</title>
</head>
<body>
<h1>Hello world! My Name is 何杨!</h1>
<br>
<h2>很抱歉,目前网站里只放了这么简单的内容,只是做做测试用的,以后会展示精彩的东西给大家看。</h2>
<%
out.print("<br/>");
String name = request.getParameter("userName");
String pass = request.getParameter("passWord");
out.print(name);
out.print("<br/>");
out.print(pass);
out.print("<br/>"); %>
<hr>
<h1>九九乘法表</h1>
<hr>
<%!
String print1()
{
String s = "";
for(int i = 1;i<=9;i++){
for(int j = 1;j<=i;j++)
{
s+=i+"*"+j+"="+i*j+" ";
}
s+="<br>";
}
return s;
}
//JSP内置out对象,使用脚本方式调用,打印九九乘法表,还要抛出异常
void print2(JspWriter out) throws Exception
{
String s = "";
for(int i = 1;i<=9;i++){
for(int j = 1;j<=i;j++)
{
s=i+"*"+j+"="+i*j+" ";
out.print(s);
}
out.print("<br/>");
}
}
%>
<%=print1() %>
<br>
<img src="1.jpg">
<br>
<% print2(out); %>
</body>
<ml>
index.jsp
这个算是最最简单的jsp网站了,只有一个jsp网页数据,然后带一个用于显示的图片资源1.jpg,然后在本地浏览器输入地址:http://localhost:8080/HeYang/index.jsp(服务器打开了,这个网址才有用),就会出现下面:
到这里,tomcat轻量级服务器和JSP网站环境架设完毕,这些足以够继续学习JavaWeb用的了,另外可以搭配Eclipse For JavaEE集成开发环境来深入学习Javaweb。
4、连入外网,让大家都能够访问刚刚建设的服务器里的网站网页数据,甚至手机客户端在任意地点也能够访问。
接下来个人啰嗦一下计算机网络的基本常识,这个我自己理解的常识,可能不正确还望高手指教:内网和外网,通常在内网中不同的计算机进行通信一般情况下简单的说来算是局域网,只要在局域网通过需要访问的计算机的本地IP地址就能访问这个计算机,如果是从外网,比如说,要通过手机客户端(手机联网的方式就可能是wifi也可能是4G网络)来访问计算机,就需要知道这个计算机的网络外网IP地址,就比如我现在的电脑联网的方式是室内wifi路由器,这个路由器是链接到外网IP地址的,同时这个外网IP地址还要映射到我这个计算机本地IP地址,然后将申请的域名网址指向这个映射好我这台笔记本的IP地址的外网的IP地址(域名网址好比:http://www.baidu.com,而我的域名网站是:http://heyang234.imwork.net ),由于网络环境的复杂,外网的IP地址常常是多变的。每一次链接都需要重新获取外网的IP地址,就特别的麻烦,所以就需要动态域名。
这里需要用第三方工具:花生壳,网址是:http://www.oray.com/ 需要注册,申请获取免费的域名,然后下载 花生壳 客户端(花生壳官网提供了内网版和外网版,我用的是内网版提供了内网和外网服务的,外网版没试用所以不是很清楚使用细节),目前只提供Windows和Linux版本的,没有Mac版本的,真可惜,我架设不来Mac可以被外网访问的服务器。
我这里就用Windows的花生壳客户端了,通过前面注册的账号和密码就能登入这个客户端。
然后是打开映射功能,这个功能可能会提示你申请开通,会需要支付一元服务费,支付开通后,就是永久免费使用的。
映射需要经过多次,可能一开始几次是会失败的。
接下来要把tomcat配置文件稍微修改一下,就能使得外网通过这个申请的域名访问我的JSP网址,打开apache-tomcat-8.0.24\conf\server.xml(用记事本打开也可以,但是我用的是Sublime Text编辑器,视觉上比单调的记事本好看多了),然后找到Connector port="8080",改为下面图片改后的80,还有就是比较新版本的可能没有这行配置代码:
<Context path="" docBase="HeYang" reloadable="true" />,
将这段代码复制到里面去就可以了,但是注意docBase="HeYang",就会使得域名地址访问的是HeYang文件目录下的网站,所以自己设定网站目录同时也要自己设定这个docBase="HeYang",最后保存即可:
然后测试一下,用你的手机输入网址或者让离你很远的朋友通过手机或者电脑打开这个网址链接:http://heyang234.imwork.net/HeYang。如果出现上面的网页,就说明你的服务器外网建立连接成功。
1、为了下来的工作中不出现什么问题,我并没有将8080端口改成80,据说80端口被电信封掉了,我让用电信上网的同学访问我的网站,果然不行,这里我们明白道理就可以了,只是学习测试之用,所以我们就用8080端口。
如何在自己的Windows系统上 架设服务器并开发网站,然后连入外网供外界访问?(JDK+Tomcat+花生壳)的更多相关文章
- php项目,别人无法访问自己(windows 系统)上Apache服务器原因(转载)
别人无法访问自己电脑上的Apache服务器,其中最大的原因是因为Windows防火墙的因素. 1.有安装防火墙的,把防火墙关闭 2.windows默认带防火墙的,进入 控制面板-系统和安全-Windo ...
- windows系统上安装与使用Android NDK r5 (转)
windows系统上安装与使用Android NDK r5 很早就听说了android的NDK应用,只是一直没有时间去研究,今天花了点时间在windows平台搭建了NDK环境,并成功运行了第一个简单 ...
- spm完成dmp在windows系统上导入详细过程
--查询dmp字符集 cat spmprd_20151030.dmp ','xxxx')) from dual; spm完成dmp在windows系统上导入详细过程 create tablespace ...
- 快速获取Windows系统上的国家和地区信息
Windows系统上包含了200多个国家和地区的数据,有时候编程需要这些资料.以下代码可以帮助你快速获取这些信息.将Console语句注释掉,可以更快的完成分析. static void Main(s ...
- Windows系统上如何使用SSH
Windows系统上如何使用SSH 传统的网络服务程序如FTP.Telnet等,在网络上一般使用明文传送数据.用户账号和口令信息,容易受到中间人的攻击.用户利用SSH协议后能有效防止DNS及IP欺骗, ...
- 如何在Windows系统上用抓包软件Wireshark截获iPhone等网络通讯数据
http://www.jb51.net/os/windows/189090.html 今天给大家介绍一种如何在Windows操作系统上使用著名的抓包工具软件Wireshark来截获iPhone.iPa ...
- Redis进阶实践之三如何在Windows系统上安装安装Redis
一.Redis的简介 Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合 ...
- 非Unicode编码的软件如何在Windows系统上运行
我们常常会遇到这样一种情况:点开某些日文软件(我不会说就是galgame( ╯□╰ ))会出现乱码或者直接无法运行. 出现乱码的原因很简单:编码与译码的方式不一致!!!!!!!!!!! 首先大家需要知 ...
- 在windows系统上使用pip命令安装python的第三方库
在windows系统上使用pip命令安装python的第三方库 通过cmd启动命令行后,直接输入pip命令,有时候命令行会提示我们pip不是一个指令,这个时候我们可以通过python的集成开发环境里面 ...
随机推荐
- "浅谈Android"第二篇:活动(Activity)
距离上一篇文章,过去有半个多月了,在此期间忙于工作,疏于整理和总结,特此写下这篇博文,来谈谈自己对Activity的理解.总所周知,Activity组件在Android中的重要性不言而喻,我们 ...
- Criteria查询数据
Criteria介绍: Criteria查询是Hibernate提供的一种查询方式,与HQL基于字符串的查询形式完全不同.Hibernate提供了org.hiberanee.Criteria 接口.o ...
- LeeCode - Unique Binary Search Trees
题目: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For e ...
- C#设计模式——适配器模式(Adapter Pattern)
一.概述在软件开发中,常常会想要复用一个已经存在的组件,但该组件的接口却与我们的需要不相符,这时我们可以创建一个适配器,在需复用的组件的接口和我们需要的接口间进行转换,从而能够正常的使用需复用的组件. ...
- [CLR via C#]10. 属性
一.无参属性 对于字段,强烈建议将所有的字段都设为private.如果允许用户或类型获取或设置状态信息,就公开一个针对该用途的方法.封装了字段访问的方法通常称为访问器(accessor)方法.访问器方 ...
- oracle中文显示为问号
在用PL/sql查询时,中文显示为问号.经查证,发现问题为oracle字符集不支持中文导致的.修改oracle字符集,改为支持中文即可. 方法: 第一步:修改注册表. 开始-运行-输入regedit- ...
- 看了一本Unity3D的教程
国内写的<Unity 3D游戏开发>. 实例挺多,对于有基础的人来说,上手会挺快的: 但进阶的东西没有涉及,可能与书的定位有关吧
- Discuz的缓存体系
参考文档:<http://dev.discuz.org/wiki/index.php?title=缓存机制> Discuz中涉及数据缓存的地方有: 1. session Dz的sessio ...
- 技巧题---Single boy
Description Today is Christmas day. There are n single boys standing in a line. They are numbered fo ...
- Angular 核心概念2
自定义指令 指令增强了 HTML,提供额外的功能 内置的指令基本上已经可以满足我们的绝大多数需要了 少数情况下我们有一些特殊的需要,可以通过自定义指令的方式实现 普通指令 语法 <div hel ...