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请求的回应。