tomcat实现第一个网站

1.安装jdk

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>


然后保存叫做form.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.通过容器提供的方法,能轻松的让servletweb服务器对话。

而不是自己创建ServerSocket 、监听端口 创建流等

2.容器控制着servlet的生死。 负责加载、实例化、调用servlet的方法以及垃圾回收。

3.配置文件部署和jsp支持 把jsp翻译成JAVA (这里我们还没用到)



这里我们只需要记住我们写的java文件实际上就是一个servlet(容器可以很多,我们是通过配置文件定位到这个servlet),

我们通过tomcat这个容器调用容器中的方法,这里我们就重写了doPost(),.当产生一个post请求的回应。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值