Servlet基础
来源:互联网 发布:国产纪录片 知乎 编辑:程序博客网 时间:2024/06/04 19:02
Servlet基础
1.1 什么是Servlet?
Servlet是sun公司制订的一种用于扩展web服务器功能的组件规范。
1.2 如何写一个servlet?
编写Servlet的步骤
第1步 写一个java类
servlet只能使用java语言来编写
实现Servlet接口或者继承HttpServlet抽象类
第2步 编译
第3步 打包
建立一个如下的目录结构
– appname
—– – WEB-INF
————- classes 存放.class文件
————- lib 存放.jar文件,该文件夹可选
————- web.xml 部署描述文件
注:该目录结构可以使用jar命令打成一个.war为后缀的文件
第4步 部署
将第三步的整个目录结构或者是对应的.war文件拷贝到服务器特定的目录
第5步 启动服务器,访问servlet
http://ip:port/appname/servlet的url-pattern配置
1.3 servlet是如何运行的?
当用户向浏览器地址栏输入http://ip:port/hellowe/sayHello?name=zs
1)浏览器使用ip:port(端口号)连接服务器
2)浏览器将请求数据按照http协议打成一个数据包(请求数据包)发送给服务器
请求数据包的内容包含了请求资源路径(/hellowe/sayHello?name=zs),另外,在请求数据包当中,还会包含浏览器自动生成的一些信息。
3)服务器创建两个对象:请求对象(Request)和响应对象(Response)服务器解析请求数据包,将解析之后的数据存放到请求对象里面,方便servlet读取请求数据(因为servlet不用解析请求数据包,如果要解析,需要理解http协议)。请求对象是HttpServletRequest接口的一个实现。响应对象是HttpServletResponse接口的一个实现,响应对象由于存放servlet处理的结果。
4)依据请求资源路径找到相应的servlet配置,通过反射创建servlet实例。然后调用其service()方法。在调用service()方法时,会将事先创建好的请求对象(request)和响应对象(response)作为参 数进行传递。在servlet内部,可以通过request获得请求数据,或者通过response设置响 应数据。
5)服务器从response中获取数据,按照http协议打成一个数据包(响应数据包),发送给浏览器。
6)浏览器会解析响应数据包,取出相应的数据,生成相应的界面。
HelloServlt类代码
package web;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlt extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{ //读取请求参数值 String qty=request.getParameter("qty"); /** * 通常需要对请求参数值做一些检查, * 比如,检查qty是不是一个合法的数字。 */ //处理 String greeting=""; // for(int i=0;i<Integer.parseInt(qty);i++){ greeting +="<h1>hello myfirst Servlet!</h1>"; } response.setContentType("text/html"); //设置服务器返回的数据类型 PrintWriter out=response.getWriter(); out.println(greeting); out.close(); }}
web.xml代码
注意:
url-pattern要以“/”开头
servlet-name 要一致
servlet-class 完整的类名
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>helloServlt</servlet-name> <!-- 完整的类名 --> <servlet-class>web.HelloServlt</servlet-class> </servlet> <servlet-mapping> <!-- 两个name要一致 --> <servlet-name>helloServlt</servlet-name> <!--以/开头 --> <url-pattern>/hello</url-pattern> </servlet-mapping></web-app>
- Servlet基础----Hello Servlet!!!
- Servlet基础
- Servlet基础
- Servlet基础
- servlet基础
- Servlet 基础
- Servlet基础
- servlet基础
- Servlet 基础
- Servlet基础
- Servlet基础
- servlet基础
- Servlet基础
- Servlet ---- 基础
- servlet基础
- Servlet基础
- servlet基础
- Servlet基础
- python : turtle 画正多边形
- SSH整合(附上IbaseDao和分页查询)
- ZOJ3703 Happy Programming Contest
- [编程题]循环单词
- 坑记:FFmpeg用movie+overlay做图片水印
- Servlet基础
- Spring总结
- GIT能做什么、它和SVN在深层次上究竟有什么不同
- 表达式求值
- HDU5533 Dancing Stars on Me(计算几何)
- 在Ubuntu14.04上快速部署OpenStack
- php pdo连接mysql数据库
- How to merge MPTCP Kernel Source with Android 5.x ?
- JAVA求学之路第十四天