servlet前言

C/S模式的软件  客户端/服务器  比如QQ,或者一些大型游戏 
 用户需要先下载软件的客户端,然后才可以使用.

B/S模式的软件  浏览器/服务器  我们上网时候所访问网站
的基本全是B/S模式的项目.用户不需要下载任何东西,只需要
用到浏览器就可以访问到这个项目.


我们在java中要学习的web项目,就是B/S架构的项目.


web项目中,其实就是俩个软件之间的信息交换,客户端机器
中的浏览器软件和服务器端机器中的web服务器软件之间的
交换,比如在我们的学习中,就是客户端的浏览器和服务器端
的tomcat进行信息交换。


浏览器和tomcat是俩个不同的软件,但是在开发这俩个软件
的时候,都是加入对http协议的支持,所有它们俩个进行信
息交换的时候,是通过http协议规定的方式进行交换的:
客户端先发送一个请求,然后服务器端接收到请求后再返
回给客户端一个响应,并且把客户端所请求的资源返回给客户端.


我们要做的时候就是,开发一个web项目,然后把这个web项目
放到tomcat里面指的的位置,然后再运行这个tomcat软件,
在tomcat运行过程中,其他计算机里面,只要是网络和我们这
个服务器是通的,那么都可以通过浏览器来访问我们这个web项目。


在用浏览器访问tomcat的时候,tomcat会按照浏览器发送的
这个请求里面的内容,把浏览器想访问的页面从web项目中找
到并返回给这个浏览器,或者是tomcat去调用web项目所写
的某些java类中的方法(其实就调用servlet中的方法)

注意:web项目中,任何一个类里面都不需要写main方法,整个
项目的运行,对象的创建,方法的调用,都是由tomcat处理的,
我们不需要去管. tomcat根据客户端的要求,会调用某个
servlet中的指定方法,然后在这个指定方法里面,我们可
以写上调用我们自己写的某个类的方法,类似的这样方法相
互调用下去,最后调用到我们sql语句的执行,这样我们的
一个功能就走完了,比如说登录或者注册功能。

一个web项目最基本的项目结构:
项目名字:WebTest
1.文件夹WebTest,项目名字是随便起的

2.WebTest文件中有文件WEB-INF,WEB-INF这个名字是固定的

3.WEB-INF文件夹中:classes文件夹,lib文件夹,web.xml文件,这个名字都是固定的。
web.xml文件在tomcat目录中的conf目录里面有一个web.xml模板.
    
注意:
  WebTest文件夹下面还可以放页面,css样式、js文件、图片等等.
  classes文件夹中放的是编译后的.class文件
  lib文件夹中放的是当前项目中运行所需要的jar包


tomcat服务器:
    bin    目录:启动、关闭tomcat相关的命令。
    conf目录:tomcat的配置文件
    lib    目录:tomcat中可以同时部署多个项目,多个项目都需要用到的相同jar包,就可以放在这个目录。
    logs目录:记录tomcat日常运行的情况或者错误信息。
    temp目录:tomcat运行期间可能会产生一些临时文件,这写临时文件就会放在这个目录.
    webapps目录:我们开发好的web项目就是需要放到这个指定的目录下面,默认里面已经有一些tomcat自带的项目样例了.
    work目录:编译jsp页面时候需要用到的一个目录.


访问tomcat中项目里面的资源的方式:

http://IP:port/项目名字/项目在资源

http://127.0.0.1:8002/WebTest/hello.html

http://172.16.4.81:8002/WebTest/hello.html

手写一个servlet并且放到tomcat中去运行:


package com.briup.test;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

import java.io.IOException;
import java.io.PrintWriter;


public class FristServletTest extends HttpServlet{

    
    public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException{
        
        PrintWriter out = resp.getWriter();

        out.println("hello world");
        out.flush();

        out.close();
    
    }


}

servlet-api.jar在tomcat的lib目录中

servlet-api.jar和FristServletTest.java都在桌面
编译java文件所在的命令窗口的路径也在桌面


javac -cp servlet-api.jar -d . FristServletTest.java

编译完之后,把这个.class文件已经包目录,放到项目中
的classes目录里面,然后再项目中的web.xml文件进行
配置,配置的目的是:想把一个路径映射成我们自己一个
servlet,这个我们在浏览器里面就可以用个这个映射
的路径来来访问这个servlet了.

浏览器的地址栏中只能提供类似于这样的信息:
主要是以路径的形式提供访问的信息:
/.../.../.../...
http://172.16.4.81:8002/WebTest/hello.html

但是我们需要的是这样的信息:
要运行servlet至少要有servlet的对象,所有我们需要这个类的package.类名
com.briup.test.FristServletTest


所以我们需要把一个路径映射成一个servlet:
比如:把/first路径映射成FristServletTest这个servlet,将来用户在浏览器中输入/first路径之后,就相当于告诉服务器,需要运行FristServletTest这个servlet.

例如:
web.xml文件中加入:
<servlet>
        <servlet-name>firstservlet</servlet-name>
        <servlet-class>com.briup.test.FristServletTest</servlet-class>
</servlet>
    
<servlet-mapping>
        <servlet-name>firstservlet</servlet-name>
        <url-pattern>/first</url-pattern>
</servlet-mapping>

<servlet>中的<servlet-name>子标签:
   给你要描述的servlet起一个名字,这个是名字是随便起的,目的是为了在下面做映射的时候能够再找到这个servlet

<servlet>中的<servlet-class>子标签:
   这个servlet的package.类名

<servlet-mapping>中的<servlet-name>子标签:
   指明这个映射是给哪一个servlet的做的映射,通过之前随便起的servlet的名字找。

<servlet-mapping>中的<url-pattern>子标签:
   这个就是我们要映射的路径,将来浏览器里面输入这个路径就相当于要访问我们这个servlet。
注意:这个路径一定是以/开头的:/a   /a/b  /a/b/hello
 

猜你喜欢

转载自blog.csdn.net/bifuguo/article/details/82886696