2.安装tomcat
3.安装eclipese
jdk和tomcat的安装都很简单,主要是配置一下环境变量,这里也就不演示了,百度一大把。应该谈点实际的东西,如何把网页运行起来。
4.检查tomcat是否工作正常
在/bin目录下可以看到一个startup脚本文件,windows自然是.bat,linux .sh 文件。然后关闭服务器是shutdown.xxx文件。
运行startup看到提示Server startup in xxx ms,说明tomcat已经启动起来了,我们在浏览器中输入localhost:8080/ 就进入了tomcat的主界面,证明了tomcat正常运行了。
4. 运行一个html
运行网站,我必须眼见为实,所以就写一个简单html 来测试了,为了这个html稍微有写意义,我们稍微加了一点东西,以便后续使用。
<html> <body> <h1 align="center"> Beer Selection Page </h1> <form method="POST" action="SelectBeer.do"> <!-- SelectBeer.do是一个逻辑名,这只是我们希望客户使用的名字,而且客户无法访问类--> <!--这里我们会使用XML部署文件web.xml 把客户锁清秋的资源映射到一个实际的Servlet类文件--> <!-- 当指向这个的请求达到时,容器就会使用这个类文件--> Select beer characteristics<p> Color: <select name="color1" size="1"> <option>light <option>amber <option>brown <option>dark <option>yellow </select> </br></br></br></br> <center> <input type="SUBMIT"> </center> </form> </body> </html>
我们先用浏览器直接打开看一下效果,发现还不错。
然后我们需要建一个网站的工程,让这个文件在tomcat上运行起来。
我们在tomcat\webapps\ 目录下建立一个目录,叫做Beer-V1,然后把form.html放进来。
然后在浏览器中输入url
http://localhost:8080/Beer-V1/form.html (很容易理解把!)
界面是不是显示出来了?
good!
然后我们点击一下提交。。。出问题了,瞄了一眼好像是说请求不可用。
想一下,我们的html中谢了点击提交后会发出一个报表给SelectBeer.do,我们必须让服务器知道SelectBeer.do到底是什么东西?
so; 应该是需要配置一下,告诉服务器SelectBeer.do是谁,于是查了一下有个叫做servelet规范的东西。
接着在那个文件夹新建一个WEB-INF文件夹
在里面创建一个web.xml 文件
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Beer</servlet-name> <!--BEER是一个虚构的名字,只能在DD配置文件中使用--> <servlet-class>com.example.web.BeerSelect</servlet-class> <!--类完全限定名 --> </servlet> <servlet-mapping> <servlet-name>Beer </servlet-name> <url-pattern>/SelectBeer.do</url-pattern> <!-- / 斜线不知道干什么用的,我们只希望客户使用SelectBeer .do是一个约定 --> </servlet-mapping> </web-app>
我们很容易的发现
Beer对应一个 java class文件:com.example.web.BeerSelect
Beer对应一个 url:SelectBeer.do
这里需要解释一下,我们不希望把class直接暴露给用户,用户只知道有SelectBeer.do这个界面,这里只是做了一个简单的转化。
而Beer这个只是配置文件的一个变量而已。
当点击事件发生 SelectBeer.do 找到Beer, beer找到了com.example.web.BeerSelect.class 然后把http请求告诉了这个class文件。
对于这个请求的处理我们就安排到了java代码中了。
我们写好了配置文件不妨试一下有什么不一样的地方,于是我们重启一下服务器让配置生效。shutdown starup,oh ye~!
现在我们点击提交发现错误变了,很容容易理解我们的服务器没有找到这个class文件。
5 建立BeerV1 java工程,这里目标很简单就是为了生成那个需要的文件。
打开eclipse new一个java 工程现在src目录下建立一个com.exaple.web包,
然后新建一个BeerSelect.java类然后建立一个etc文件夹,把之前做好的web.xml放到这里保存好。
然后建立一个lib目录,我们把tomcat/lib/servlet-api.jar放到这里,随后会用到这个jar包再建立一个web目录,我们把form.html放到这个目录下。
还差一步我们需要把jar配置到工程中,方便编译。选中工程右键,最后一个选项 配置。
如下图弹出把JAR导入进来即可。点击 选项 配置。如下图弹出把JAR导入进来即可。
准备工作完成了,我们该写代码了。
</pre><pre name="code" class="html">import java.io.IOException; import java.io.PrintWriter; import javax.servlet.http.HttpServlet; import javax.servlet.http.*; import javax.servlet.*; public class BeerSelect extends HttpServlet { @Override //这里我们来处理post请求,因为页面的表单指出method = post protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html"); PrintWriter out = resp.getWriter(); out.println("Beer Slection Advance</br>"); //color1 color2 来自于html点击提交发送来的表单FORM中包裹的内容 String c =req.getParameter("color1"); out.println("color1 = "+c); c= req.getParameter("color2"); out.println("color2 = "+c); } }
我们在 工具栏 点击工程 clean 和build 后发现我们代码产生了一个bin目录,我们把bin目录下的 com目录复制到
Tomcat\webapps\Beer-V1\WEB-INF\classes\ 这个目录下com.example.web是我们的包名嘛,所以要那么长看一下web.xml文件也就知道了。
重启一下tomcat
再次进入http://localhost:8080/Beer-V1/form.html,点击提交。我们发现成功了
我们的请求正常返回了。
最后,我们讲一下原理:
Tomcat是一个容器
Web服务器apche得到一个指向servlet的请求
服务器不是把请求交给servlet本身体,而是交给部署该servlet的容器。
由 该容器向servlet 提供HTTP请求和响应,而且由容器调用servlet的方法。
客户 ----请求---- 浏览器 --->web服务器[apche] ---->get --->容器[tomcat] ---->get ---->Servlet[.class]
容器的作用:
1.通过容器提供的方法,能轻松的让servlet与web服务器对话。
而不是自己创建ServerSocket 、监听端口 创建流等
2.容器控制着servlet的生死。 负责加载、实例化、调用servlet的方法以及垃圾回收。
3.配置文件部署和jsp支持 把jsp翻译成JAVA (这里我们还没用到)
这里我们只需要记住我们写的java文件实际上就是一个servlet(容器可以很多,我们是通过配置文件定位到这个servlet),
我们通过tomcat这个容器调用容器中的方法,这里我们就重写了doPost(),.当产生一个post请求的回应。