Servlet
1.简介
是服务器端运行的java小程序,起到一个桥梁的作用,用于浏览器和应用程序之间进行沟通
2.第一个servlet
//2. 使用注解 @WebServlet(urlPatterns = \"浏览器访问路径\")
@WebServlet(urlPatterns = \"/first\")
//1.继承 HttpServlet父类
public class MyServlet extends HttpServlet {
//3. 覆盖父类中 service 方法
@Override
// Request : 代表请求
// Response : 代表响应
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(\"hello,world\");
// 用servlet可以返回一段html代码,给浏览器
// 对于中文,需要设置响应采用utf-8字符集,否则会使用英文字符集(iso-8859-1)返回响应,会有乱码问题
resp.setContentType(\"text/html;charset=utf-8\");
// 向resp对象对象的字符输出流中写入的html代码都会返回给浏览器
resp.getWriter().println(\"<html><body>hello,world</body></html>\");
}
}
3.浏览器发送请求
语法:http://ip地址:端口号/servlet地址?参数名1=参数值1&参数名2=参数值2...
例:
对于get请求:http://ip地址:8080/servlet路径?参数名=参数值
http://localhost:8080/hello?name=张三&pass=123
服务器要获取请求参数:
request.setCharacterEncoding(\"utf-8\"); // 设置解码字符集 request.getParameter(\"参数名\"); // 返回参数值 String
例:
@WebServlet(urlPatterns = \"/hello)
public class MyServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParament(\"name\");
String pass = req.getParament(\"pass\");
}
}
注:如果某个参数没有传递,使用request.getParameter()返回的是null值;request.getParameter()返回的总是字符串,需要自己做数据类型转换
4.请求类型
4.1.get 请求:直接通过浏览器地址发送的请求
4.2.post 请求
表单form提交时可以设置其method属性,既可以发送get请求,也可以发送post请求
区别:
1) get请求会把所有请求参数跟在地址栏之后,不适合发送敏感信息;
而post请求不会把请求参数跟在地址栏之后
2) post请求不是绝对安全的,也可通过一些网络监测工具仍然可以看到post中的参数信息
http 是不安全的,都是明文发送给服务器的
https 是安全的,会把信息发送给服务器的过程中进行加密
所以,https 和post结合可以保证向服务器传输数据的安全性
3) get请求传输的数据有限制, post请求没有限制(任意大小的数据都可以发送给服务器)
4) get:获取信息(对应查询操作)
post:增,改,删等操作
5) 对于post请求,会有中文乱码问题,解决方法是调用req.getParameter方法之前调用
req.setCharacterEncoding(\"utf-8\")进行解码;
而对于get请求tomcat 8 已经对其中文按utf-8进行解码了, 所以程序员不需要对get请求的中文进行额外处理;但在tomcat 7, tomcat 6 … 等低版本对get请求中的中文还需要特殊处理
5.Servlet的生命周期
浏览器首次向此servlet发送请求时,会创建它的实例对象;以后再发送请求使用的仍然是第一次创建的对象。
结论:整个生命周期中,servlet只有一个实例(单例的)
1)init方法(初始化方法):只执行一次,由容器初始化,初始化成功后将缓存与容器中。
它的初始时间分为两种: 用户第一次访问;服务器启动时,需要配置
2)service方法:反复被执行,每次请求都会访问此方法,每次请求都会创建新的Request和Response对像。来一次请求执行一次
3)destory方法:只执行一次,当在服务器停止前或重新部署时由容器调用并销毁
- 构造方法首先执行(只执行一次)
- 初始化方法init (只执行一次)
- 服务方法 service (反复被执行)来一次请求执行一次
- 销毁方法 destroy (只执行一次)在服务器停止前,或重新部署时
6.doGet与doPost
提交表单时,设置method属性为get,则调用servlet的doGet()方法;设置method属性为pos,则调用servlet的的doPost()方法;地址栏直接输入的 请求,均会调用servlet的doGet()方法。
如果果servlet:
a.覆盖service方法,可以处理所有类型的请求
b.覆盖doGet方法,仅能处理get方式的请求
c.覆盖doPost方法,仅能处理post方式的请求
7.Web Application的基本目录结构(Servlet 2.2)
|-
|-WEB-INF (受保护不能直接访问)
|-classes 放自己编写的java类
|-lib 放第三方的jar包
|-web. 对这个web application描述
|-jsp
|-css 放样式表
|-js 放js脚本
|-jsp 放网页文件
|-index.jsp 首页面 如果没有写具体的地址,会按 index.html, index.jsp
继续阅读与本文标签相同的文章
鲍威尔为什么不敢承认放水?美国经济哪出了问题
深度学习进化编年大事记
-
数字技术让“诗和远方”融为一体
2026-05-18栏目: 教程
-
“成人网站”免费让人上钩,其背后有什么不为人知的猫腻,网友:不敢惹
2026-05-18栏目: 教程
-
网络互连技术之路由协议
2026-05-18栏目: 教程
-
信息技术助力物流行业转型升级
2026-05-18栏目: 教程
-
登榜!风采依旧表现“佳”
2026-05-18栏目: 教程
