【声明】 html
欢迎转载,但请保留文章原始出处→_→ java
生命壹号:http://www.cnblogs.com/smyhvae/web
文章来源:http://www.cnblogs.com/smyhvae/p/4046862.html数据库
【前言】apache
JSP自己是JavaWeb中的知识,可是在学习Android网络时,必然要涉及到与服务器之间的交互,因此学一下JSP以及其余JavaWeb的内容仍是颇有必要的,至少能明白程序在访问服务器时,整个过程的原理。设计模式
其实,在学习Android以前,Java和JavaWeb的知识都是要先学习的。本人是在2014年7月正式开始Android方向的研究学习,在这以前没有接触任何和计算机软件相关的知识(惟一相关的是,本科学过一门C语言课程,不过如今已经忘光了)。浏览器
咱们来看下面的这张图就知道了:缓存
两张图拼起来看就对了,借鉴的是李刚的“疯狂Java学习路线图”,手机像素渣,图片不是很清晰,将就一下吧。说白了,在学习Android以前要具有必定的Java基础(Java SE 、JavaWeb、数据库等)。而若是要学的扎实而且有个好的就业岗位,如下基础知识须要所有具有:计算机基础知识(操做系统、计算机网络、数据结构、数据库、设计模式等)、C/C++、Java、Android、Linux。tomcat
因此,考虑到时间的因素,像我这种初学者,只能在边学Android的时候边学其余的知识。我学到了哪里,个人博客就会写哪里,也但愿能和其余初学者一块儿共勉,一块儿见证!服务器
【正文】
1、JSP简介
JSP:Java Server Pages。在传统的HTML文件(*htm,*.html)中加入Java程序片断(Scriptlet)和JSP标记(tag),就构成了JSP网页。
2、学习重点:
3、使用tomcat软件在本地搭建服务器:
Tomcat是Apache组织的Jakarta项目中的一个重要子项目,是Sun公司推荐的运行Servlet和JSP的容器(引擎),其源代码彻底公开。
有了这个服务器,就至关于在本地的计算机有了一个网站,而后咱们能够经过浏览器来访问这个网站。
tomcat软甲是apache旗下的一个开源项目。软件下载连接:http://tomcat.apache.org/
下载以后,将压缩包解压:
注意目录名不能有中文和空格。目录介绍以下:
软件运行以前要保证Java环境变量已经配置:
上图中,变量名为JAVA_HOME,变量值为:JDK安装的绝对路径。
注:Catalina_Home环境变量:指定tomcat在启动时启动哪一个tomcat,通常不推荐配置。
回到tomcat的bin目录中, 双击startup.bat:
以后弹出以下界面:
这个时候,本地的服务器就已经搭建起来了。若是想关闭服务器,能够直接关闭上面的窗口,或者在里面输入Ctrl+C禁止服务。
首先查看本身电脑的ip地址,个人计算机的ip地址为:192.168.1.112。
在浏览器中输入http://192.168.1.112:8080/(或者输入http://localhost:8080/也是能够的)。若是弹出以下界面,进入本地服务器的首页,表示tomcat安装成功而且启动起来了:
上方图片中,显示个人Tomcat的版本为:8.0.14。它的版本号是跟着JDK的版本走的,因此,建议JDK的版本为1.8。
咱们如今在浏览器上测试一下它吧:
首先在D:\apache-tomcat-8.0.14\webapps\ROOT目录中新建一个jsp文件:
jsp文件中填入以下内容:
<% String name = request.getParameter("name"); String pwd = request.getParameter("password"); out.print("name:" + name + ",password:" + pwd); //在浏览器上显示输入地址中的用户名与密码 %>
如今咱们随便起一个用户名和密码的帐号,好比用户名smyhvae,密码为smyh,而后在浏览器中输入以下内容:
http://192.168.1.112:8080/test.jsp?name=smyhvae&password=smyh
输入这个连接以后,回车,出现以下界面:
上图中表示,咱们向服务器发送这样一个请求,连接中,问号前面的内容表明请求的路径,问号后面是咱们要传送的参数(键是固定不变的,值是用户本身填写的),而后服务器返还给咱们这样的数据。
3、将Tomcat和eclipse相关联:
打开eclipse for Java EE ,选择菜单栏Windows-->preferences,弹出以下界面:
上图中,点击“add”的添加按钮,弹出以下界面:
上图中,选择对应的Tomcat版本,继续:
上图中,选择Tomcat的路径,以及JRE,点击“完成”,配置完毕。
新建java工程,建一个动态的工程:
注:对“动态”的理解:html是静态的,写成什么,就是什么。动态指的是根据服务器端返回的数据动态地生成页面。好比张三登录能够看到张三的信息;换成李四登录,能够看到李四的信息。
点开上图中的红框部分,弹出以下界面:
按照上图进行配置,其中,第三个红框中,是加载本身的jdk的安装路径便可:
而后,单击finish。继续:
工程文件结构:
上图中,deployment descriptor:部署的描述。Web App Libraries:本身加的包能够放在里面。build:放入编译以后的文件。WebContent:放进写入的页面。
在WebContent文件夹下新建一个jsp文件。在下图中能够看到它的默认代码:
上图中,这种编码方式不支持中文。咱们来修改一下JSP文件的编码方式,按上图所示,鼠标右击,选择"Preferences",弹出以下对话框:
上图中,将编码方式改成UTF-8。
一样,咱们还须要将文本内容的编码方式改成UTF-8(这个编码和程序无关),选择菜单栏Windows--preferences,打开以下界面,将编码方式改成UTF-8,并点击update:
之后每次新建一个jsp文件,默认的编码方式就是UTF-8了。默认代码以下:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 11 </body> 12 </html>
咱们在hello.jsp中修改一下,将上方的第7行的标题改一下,并在第10行添加输出语句。最终代码以下:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 7 <title>hello JSP</title> 8 </head> 9 <body> 10 <% 11 out.println("hello,JSP"); 12 %> 13 </body> 14 </html>
上方的第11行,out指的是输出流。经过页面获取这个输出流,并打印在页面中。之前学的System.out.println()指的是向控制台输出。
程序运行以前,咱们先修改一下浏览器选项:
如今咱们开始运行程序:
运行时,弹出以下错误:(若是没有此错误,请忽略)
缘由是,咱们以前点击了Tomcat安装包中的startup.bat,这样一来就手动打开了Tomcat服务器,这明显是多余的,由于程序运行时,eclipse会自动开启Tomcat服务器。因此咱们先手动关掉tomcat软件,再次运行程序,就好了。控制台信息以下:
浏览器会自动打开,网页信息以下:
如今来解释一下上方网址的名称为何显示的是 http://localhost:8080/TomcatTest/
咱们选中项目,右键选择“properties”,弹出以下对话框:
上图显示,咱们所部署的路径是根目录,根目录的名称默认为咱们新建的项目名,因此网址才会显示为:主机名+端口号+项目名。
网页显示的错误为404,即找不到网页,可见网页中并无看到咱们新建的jsp文件,咱们再来找一下缘由。打开工程文件中,WEB-INF目录下的web.xml文件:
上图解释:当程序运行时,Tomcat会首先读取工程的配置文件,且名字必须为web.xml。当系统默认进入的连接为:主机名+端口+工程名时,服务器就会找上图中<welcome-file-list>标签里的页面(有好几个页面的话,就依次往下找);而标签<welcome-file-list>中并无hello.jsp文件。因此,咱们须要在浏览器地址栏输入:http://localhost:8080/TomcatTest/hello.jsp,才会将hello.jsp页面显示出来。效果以下:
4、程序运行的原理:
咱们如今来分析一下上面的程序运行的原理。
当在服务器上运行后,会生成与工程文件并列的一个文件夹:Servers。以下:(若是删掉了Servers文件夹,当从新运行时,文件夹又会自动生成)
这个文件夹是Tomcat服务器的一个基本的配置。
上图中代表,咱们新建的项目已经部署到Tomcat服务器上去了,也就是看到了TomcatTest这个工程被发布出去了(发布的过程即:将写的工程打包之后放到Tomcat里)。
其实eclipse for EE已经包含了Tomcat服务的插件,但其也必须依赖Tomcat来启动。咱们双击上图的红框部分,显示以下信息:
上图的红框部分代表,服务的部署是在eclipse里面(默认是放在工做空间里的.metadata文件夹下),而不是在Tomcat里面。咱们来改一下,前提是工程并无发布到Tomcat中去,那咱们先把以前发布的版本删了吧(稍后从新发布):
而后就能够修改部署的路径了:
上图中,使用Tomcat的安装目录做为部署的位置,并修改部署的路径Deploy path(建议改为Tomcat的webapps目录下),而后保存便可。这时,从新运行程序。如今来到Tomcat的webapps目录下,发现多了一个TomcatTest文件夹(即工程文件名),而且文件夹下包含了工程文件中WebContent的内容:
上图说明,说明这才是真正将程序发布到服务器上。
咱们再来到Tomcat的work目录中,看一下编译以后的文件:
上图代表,Tomcat会先将jsp文件转为java文件,而后再把java文件编译为class文件,最终执行的是class文件。如今来看一下JSP运行的原理。
4、JSP的运行原理:
总结:本文的整个过程,让咱们学会了如何配置Tomcat和部署工程文件,明白了jsp文件是怎样发布到服务器上并最终显示出来。关于JSP的进一步学习,将在后面呈现。
5、Tomcat的其余问题:
一、端口占用问题:
在cmd中输入netstat -ano命令,查看占用端口的进程pid,再用任务管理器关闭相应进程便可。
咱们在浏览器中输入"www.baidu.com",可是并无输入端口号依然能进入网页,这是由于浏览器默认的端口号为80,若是对方服务器是监听在80端口上,则在浏览器中输入网址时,能够不用输入端口号。
Tomcat默认监听的端口号是8080(server.xml文件的第63行),能够在配置文件conf/server.xml中修改。
【备注】Tomcat关联帮助文档Javadoc
咱们之后若是要使用到Servlet类,可是想查看里面的源码和帮助文档,发现看不到:
按住ctrl点进去以后,是下面的界面:
咱们下载的tomcat中自带了源码,可是帮助文档须要另外下载: