# 1.什么是Servlet? sun公司制订的一种用来扩展web服务器功能的组件规范。 ## (1)扩展web服务器功能 早期的web服务器(apache web server,iis) 只能处理静态资源的请求(即需要事先将html文件 写好并添加到服务器上),不能够处理动态资源的 请求(即需要计算,生成html)。所以,需要扩展 这些web服务器的功能。 (了解) 早期使用CGI程序来扩展。 CGI(Common Gateway Interface): 通用网关接口,可以使用c,perl等来开发符合 CGI接口规范的程序。CGI程序开发繁琐,不好 移值,所以用得比较少了。 ## (2)组件规范 ### 1)什么是组件? 符合规范,具有部分功能,并且需要部署到相应的 容器里面才能运行的软件模块。 Servlet就是一个符合Servlet规范的组件,需要部署 到Servlet容器里面才能运行。 ### 2)什么是容器? 符合规范,提供组件的运行环境的程序。 Servlet容器(比如Tomcat 雄猫)也是要符合 相应的Servlet规范。 Servlet容器提供Servlet组件的运行环境(提供 网络相关的服务)。  ## (了解) a.tomcat也是一个简单的web服务器(其实, 大部分的Servlet容器同时也是一个简单的web 服务器)。 b.对于大型的web应用,最好要安装一个专业的 web服务器(比如apache web server),由这些 服务器来抗压(并发请求量很大),另外,将 静态资源(html)存放到这些web服务器上面, Servlet容器只负责计算。 # 2.如何写一个Servlet? ## step1.写一个java类,实现Servlet接口或者 继承HttpServlet抽象类。 ## step2.编译。 ## step3.打包(即将Servlet变成一个组件) 要创建一个具有如下结构的文件夹: appname (应用名,可以自定义) WEB-INF (固定写法) classes(固定写法,存放 .class文件) lib(可以没有,存放 .jar文件) web.xml(固定写法,部署描述文件) ## step4.部署 将step3创建好的整个文件夹拷贝到容器指定的位置。 注: 可以将step3创建好的整个文件夹使用jar 命令压缩成.war文件,然后再拷贝。 ## step5.启动容器,访问Servlet。 打开浏览器,输入 http://ip:port/appname/url-pattern。 注: ip,port:容器所在的机器的ip地址,容器所 监听的端口号(tomcat默认的端口是 8080)。 url-pattern:在web.xml中定义。 # 3. Servlet运行过程 比如,在浏览器地址栏输入 http://ip:port/day01/hello?username=Giving hello Giving   # 4. 常见问题及解决方式 ## (1)404 ### a. 404是一个状态码,表示服务器找不到对应的资源。 b. 产生的原因: b1.请求路径写错。 b2.没有部署成功。 ## (2)500 a. 500也是一个状态码,表示服务器运行出错。 b. 产生的原因: b1.配置文件写错。 b2.源代码出错。 比如没有继承HttpServlet。 代码不严谨,比如对用户的输入的数据 没有做检查就做强制转换。 ## (3)405 a.405也是一个状态码,表示服务器找不到处理方法。 b.产生的原因: a.service方法不合法:  |
|