servlet开发过程中常见知识点

tomcat

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

处理函数如何响应请求

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




	
		HelloServlet
		HelloServlet
	

	
		HelloServlet
		/hello
	


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

public void doGet(HttpServletRequest request,HttpServletResponse response) {
		try {
			response.getWriter().println("

Hello Servlet!!!

"); 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 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之前创建一个类对象。可以进行一些检测。


        HelloServlet
        HelloServlet
        10
        
    

你可能感兴趣的:(java)