栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

JavaEE 中的 Servlet

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaEE 中的 Servlet

servlet

servlet 全称为 server applet。用于编写Java服务器,利用实现servlet接口的类,完成客户端与服务器之间的交互。

工作流程:

  1. (第一次发送请求)客户端发送请求给服务器
  2. servlet容器对客户端请求进行解析
  3. servlet 实例化,初始化
  4. 调用 servlet 的 service() 方法 返回请求的对应响应给servlet容器
  5. servlet容器返回相应给客户端
  6. (后续请求)直接调用 service() 方法
  7. (结束相应)调用 destroy() 方法销毁servlet实例。
    每种servlet类型只有一个实例。

servlet 继承关系
Interface Servlet -> abstract GenericServlet -> abstract HttpServlet

Interface Servlet 仅提供了5个基本方法:
1.init()
2.getServletConfig()
3.service()
4.getServletInfo()
5.destroy()
前后端交互 常见类名
类名注解
HttpServletRequest请求对象
HttpServletResponse响应对象
ServletContext全局对象
前后端数据传输

前台给后台传数据 request.getParameter(String name);
后台给后台传数据 request.setAttribute(String name, String value);
这些方法写在doGet()/doPost(),就可以实现前后端的交互。

Get / Post 区别

对于html表单操作,可以使用 get 和 post,post方法相对于get方法更常用,原因如下:

  1. 数据提交后,get方法会把输入的信息都写在url中,而post不会。post提交的信息会打包在http请求包的包体中。
  2. 虽然http协议对于url的长度没有限制,但实际开发中,url的长度在某些时候会受到限制。post在url方面不会收到限制(某些情况下,post传输的数据量也会收到限制)。
  3. 因为get方法是url传值,所以安全性会受到挑战。比如:账号名,密码的传值。
跳转页面

html 界面

<-- hello.html -->



	
<-- display.html -->

hello world

web.xml 中加入这段代码

    
        hello
        web.HelloServlet
    
    
        hello
        /test
    

src/web/HelloServlet.class中

	@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
			// 利用转发跳转
			request.getRequestDispatcher("/display.html").forward(request, response);
			// 利用重定向方式跳转
			response.sendRedirect("/display.html");
			// 设置相应内容
			response.setContentType("text/html");
			response.getWriter().println("success");
	}

转发跳转(一次请求,一次响应)

请求包含页面地址,还有页面内容,url 的呈现为:

localhost:8080/hello.html/test

重定向跳转(两次请求,两次响应)

url 的呈现为:

localhost:8080/hello.html/display.html

会话 Session
	// 获取session对象
	HttpSession session = request.getSession();
	session.setAttribute("haha", "hello world");
	
	session.getAttribute("haha");

	// 设置session的超时时间
	session.setMaxInactiveInterval(10); // 单位是秒
	session.getMaxInactiveInterval();
	
	// session 失效
	session.invalidate();

session 中存的内容储存在服务器端。可以在多个页面中拿到,但是会占服务器资源。所以不要把所有的变量都往session中存。
cookie 是session的一种,其中的数据储存在客户端,不会占用服务器资源。
但是通常情况认为cookie不可靠,cookie是保存在本机上的,其信息完全可见且易于编辑。Session是可靠的。
session是由应用服务器维持的一个服务器端的储存空间。用户连接服务器时,服务器会生成一个sessionID。(unique id)这个id由cookie保存。提交界面时会把sessionID一起提交倒服务器。如果禁用cookie则,session也失效。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/288812.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号