servlet开发过程中常见知识点

本文深入探讨了Tomcat服务器的工作原理,以及如何通过Servlet处理HTTP请求。详细介绍了web.xml配置文件的作用,Servlet的生命周期,以及request和response对象的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tomcat

tomcat 是一个web服务器,将编译后的class文件和配置文件web.xml(指定url的处理对象)

处理函数如何响应请求

通过web.xml将请求文件映射到一个已经注册过的servlet上。下面代码是注册servlet和将url映射到servlet上

<?xml version="1.0" encoding="UTF-8"?>
<web-app>

	<servlet>
		<servlet-name>HelloServlet</servlet-name>
		<servlet-class>HelloServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>HelloServlet</servlet-name>
		<url-pattern>/hello</url-pattern>
	</servlet-mapping>

</web-app>

一个servlet就可以处理那个请求了。它继承于一个HttpServlet,实现了一个doGet或doPost函数。请求对象及响应对象都包含在doGe,doPostt的参数中。会根据请求中是否由post提交,自动选择函数。函数会修改后的response 通过tomcat(遵守http协议)传回浏览器。

public void doGet(HttpServletRequest request,HttpServletResponse response) {
		try {
			response.getWriter().println("<h1>Hello Servlet!!!</h1>");
			response.getWriter().println(new Date().toLocaleString());
		}catch (IOException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}

request常用方法

request.getRequestURL(): 浏览器发出请求时的完整URL,包括协议 主机名 端口(如果有)"
request.getRequestURI(): 浏览器发出请求的资源名部分,去掉了协议和主机名"
request.getQueryString(): 请求行中的参数部分,只能显示以get方式发出的参数,post方式的看不到
request.getRemoteAddr(): 浏览器所处于的客户机的IP地址
request.getRemoteHost(): 浏览器所处于的客户机的主机名
request.getRemotePort(): 浏览器所处于的客户机使用的网络端口
request.getLocalAddr(): 服务器的IP地址
request.getLocalName(): 服务器的主机名
request.getMethod(): 得到客户机请求方式一般是GET或者POST
获取参数
request.getParameter(): 是常见的方法,用于获取单值的参数
request.getParameterValues(): 用于获取具有多值的参数,比如注册时候提交的 “hobits”,可以是多选的。
request.getParameterMap(): 用于遍历所有的参数,并返回Map类型。

String password = request.getParameter("password");

其中name为form表中input 中属性 name的值
获取头信息
request.getHeader() 获取浏览器传递过来的头信息。
比如getHeader(“user-agent”) 可以获取浏览器的基本资料,这样就能判断是firefox、IE、chrome、或者是safari浏览器
request.getHeaderNames() 获取浏览器所有的头信息名称,根据头信息名称就能遍历出所有的头信息

Enumeration<String> headerNames= request.getHeaderNames();
        while(headerNames.hasMoreElements()){
            String header = headerNames.nextElement();
            String value = request.getHeader(header);
            System.out.printf("%s\t%s%n",header,value);
        }

response

  1. 设置返回内容
PrintWriter pw= response.getWriter();
通过response.getWriter(); 获取一个PrintWriter 对象
可以使用println(),append(),write(),format()等等方法设置返回给浏览器的html内容。给里面加参数
  1. 设置响应格式
response.setContentType("text/html");
  1. 设置响应编码
1. response.setContentType("text/html; charset=UTF-8");
2. response.setCharacterEncoding("UTF-8");
  1. 设置客服端跳转 301和302
response.sendRedirect("fail.html"); //301跳转,临时性跳转

//永久性跳转
response.setStatus(301);
response.setHeader("Location", "fail.html");
  1. 设置是否使用缓存
//设置不使用缓存,默认使用
response.setDateHeader("Expires",0 );
response.setHeader("Cache-Control","no-cache");
response.setHeader("pragma","no-cache");
 response.getWriter().println(“返回内容”)

页面跳转

web中页面跳转是很常见的应用场景,页面跳转有两种方式。分别为服务端跳转和客户端(浏览器)跳转。
服务端跳转是将要返回的内容赋予response,然后直接返回。浏览器地址发生改变
客户端跳转是告诉浏览器去访问哪个页面,浏览器接收消息后去访问那个页面(重定位),浏览器访问地址不发生改变

if ("admin".equals(name) && "123".equals(password)) {
            request.getRequestDispatcher("success.html").forward(request, response);
            //服务器跳转
        }
        else{
            response.sendRedirect("fail.html");
            //客服端跳转
        }

servlet的生命流程及自启动

servlet默认情况下是服务器(tomcat)就受一个url后创建一个类对象,然后直至程序关闭,期间一直用该类对象处理请求
自启动就是在获得一个url之前创建一个类对象。可以进行一些检测。

<servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
        <load-on-startup>10</load-on-startup>
        <!--  上行代码设置自启动,数字范围为0-99,表示启动的顺序 -->
    </servlet>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值