我爱编程

Servlet入门

2018-08-09  本文已影响0人  Scalelength

Servlet简介


Servlet(Servlet Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容

Servlet路径

request.getScheme():获取协议

request.getServerName():获取IP地址

request.getServerPort():获取端口号

request.getServletContext().getContextPath():获取工程名动态获取协议、IP、端口号、工程名

String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/"+request.getServletContext().getContextPath()+"/";静态的协议、IP、端口号、工程名http://localhost:8080/imook_servlet1/loginServlet

Servlet生命周期

生命周期:

1.初始化阶段调用init()方法init只有第一次打开网页的时候被调用

2.响应客户请求阶段调用service()方法可以被访问多次

3.终止阶段调用destroy()方法当工程从服务器中移出,才会调用。不是关闭服务器

原理:

Servlet作用

请求与响应 

浏览器对服务器的一次访问被称之为一次请求,请求用HttpServletRequest对象来表示

 服务器给浏览器的一次反馈称之为一次相应,相应用HttpServletResponse对象来表示 

ServletContext与ServletConfig

 Java是一门面向对象的语言,万事万物皆对象。整个JavaWeb工程也可以用一个对象来表示,这个对象就是ServletContext类型。 我们可以在web.xml文件中给某一个Servlet配置一些配置信息,当服务器被启动的时候,这些配置信息就会被封装到某一个ServletConfig对象中去,因此ServletConfig表示的是某一个Servlet的配置文件。 

常用方法:

 // 获取代表某一个JavaWeb工程的ServletContext对象

// Context对象是一个域对象,可以往某一个域对象中存放数据,并且还可以取出存放的数据ServletContext context = this.getServletContext();

// 往context域对象中存放数据

//context域对象中的数据可以从其他文件中提取

context.setAttribute("username", "张三");

// 取出context域对象中的数据

Object result = context.getAttribute("username");

// 打印取出的结果:张三

System.out.println(result);

//首先获取ServletConfig对象

ServletConfig sc = this.getServletConfig();

//获取sc这个对象中封装的信息String encoding=sc.getInitParameter("encoding");System.out.println("encoding="+encoding);

XML文件中配置参数

<servlet>

<servlet-name>Demo3Servlet</servlet-name><!--这个东西相当于变量-->

<servlet-class>cn.java.servlet.Demo3Servlet</servlet-class>

<init-param>

<!-- 配置encoding参数,启动时自动封装到Demo3Servlet的ServletConfig对象中去 -->

<param-name>encoding</param-name>

<param-value>utf-8</param-value>

</init-param>

</servlet>

转发与重定向的区别


实现转发调用的是HttpServletRequest对象中的方法,实现重定向调用的是HttpServletResponse对象中的方法

转发时浏览器的URL地址栏不会发生改变,重定向时浏览器中的URL地址会发生改变

转发时浏览器只请求一次服务器,重定向时浏览器请求两次服务器

转 发:

request.setAttribute("username","内容");

request.getRequestDispatcher("/文件名.jsp").forward(request,response);

接收:

request.getAttribute("");

重定位:

ServletContext sc=request.getServletContext();

sc.setAttribute("变量","内容");

response.sendRedirect("/工程名/文件名");

接收:

application.getAttribute("变量");

上一篇下一篇

猜你喜欢

热点阅读