Servlet中的service方法

  Servlet中的service方法用于应答浏览器请求,每次请求都会调用该方法。

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
        }

	}
ServletRequest:封装了请求信息,可以从中获取到任何的请求信息。

ServletResponse:封装了响应信息,用于响应用户请求。

这两个接口都是服务器给予实现的,并在服务器调用service方法时传入。

1.ServletRequest:

  1.1  获取请求参数:

       1.1.1  String getParameter(String name); 根据名字获取值

html:



  
    login.html
	
    
    
    
    
    

  
  
  
    
Login:
Password:
xml:

  
  
  
    loginServlet
    
    com.sa.servlet.LoginServlet
  
  
  
  
    loginServlet
    
    /login
   
LoginServlet:

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
        String login=request.getParameter("login");
        String password=request.getParameter("password");
        System.out.println("login:"+login);
        System.out.println("password:"+password);

	}
	
输出结果:

login:admin
password:123

       1.1.2  Map  getParameterMap();返回请求参数的键值对。

                key:参数名,value:参数值,String[] 类型

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		Map map=request.getParameterMap();
		for (String key : map.keySet()) {
			   System.out.println("key= "+ key + " and value= " + Arrays.toString(map.get(key)));
			  }

	}
	
输出结果:

key= login and value= [admin]
key= password and value= [123]
key= interesting and value= [Party, Shopping]

       1.1.3  Enumeration  getParameterNames();返回参数名对应的Enumeration对象。

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		//Map request.getParameterMap();
		//Enumeration request.getParameterNames();
		//String[] request.getParameterValues(arg0);
		Enumeration enums=request.getParameterNames();
		while(enums.hasMoreElements()){
			String name=enums.nextElement();
			String[] value=request.getParameterValues(name);
			System.out.println("name:"+name+",value:"+Arrays.toString(value));
		}
查看结果:

name:login,value:[admin]
name:password,value:[123]
name:interesting,value:[Playing, Party]

       1.1.4  String[] getParameterValues(String name);根据名字获取值数组,例如checkbox

html:



  
    login.html
	
    
    
    
    
    

  
  
  
    
Login:
Password:
interesting: Playing TV Party Sport Shopping
LoginServlet:

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
        String login=request.getParameter("login");
        String password=request.getParameter("password");
        String[] interesting=request.getParameterValues("interesting");
        System.out.println("login:"+login);
        System.out.println("password:"+password);
        System.out.println("interesting:"+Arrays.toString(interesting));

	}
输出结果:

Servlet中的service方法_第1张图片

  1.2   获取请求的URI:

          HttpServletRequest是ServletRequest的子接口,针对于HTTP请求所定义,里面有

大量获取HTTP信息的方法。

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpServletRequest httpServletRequest=(HttpServletRequest) request;
		String uri=httpServletRequest.getRequestURI();
		System.out.println("uri:"+uri);

	}
	
输出结果:
uri:/MyLab2/login

  1.3   获取请求方式:

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpServletRequest httpServletRequest=(HttpServletRequest) request;
		String method=httpServletRequest.getMethod();
		System.out.println("method:"+method);

	}
输出结果:

method:POST

2. ServletReponse:

   2.1   getWriter():

          返回PrintWriter对象,调用该对象的print()方法,把print()中参数打印在网页上。

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
        PrintWriter writer=response.getWriter();
        writer.println("hello world");

	}
查看页面:

Servlet中的service方法_第2张图片
  2.2  setContentType():

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("application/msword");
        PrintWriter writer=response.getWriter();
        writer.println("hello world");

	}
设置为内容类型为“application/msword”,这样返回的内容下载下来:



      2.3 void sendRedirect(String location):

     请求的重定向。(此方法为HttpServletResponse中定义)


  
 在web.xml文件中设置两个WEB应用的初始化参数:user,password.

定义一个login.html,里边定义两个请求字段:user,password,发送请求到loginServlet.

loginServlet中,获取请求的user,password,比较其和web.xml文件中的初始化参数是否一致,

若一致,则响应: hello,xxx;若不一致,则响应: sorry ,xxx;

  html:



  
    login.html
	
    
    
    
    
    

  
  
  
    
Login:
Password:
web.xml



    
  
      user
      sasa
   
      
      password
      123
    
  
  
  
    loginServlet
    
    com.sa.servlet.LoginServlet
  
  
  
  
    loginServlet
    
    /login
   
 
LoginServlet:

package com.sa.servlet;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet implements Servlet {
     
	public LoginServlet(){

	}
	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub

		return null;
	}

	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub

		return null;
	}

	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
        String user=request.getParameter("login");
        String password=request.getParameter("password");
        ServletContext servletContext=request.getServletContext();
        String user2=servletContext.getInitParameter("user");
        String password2=servletContext.getInitParameter("password");
        //HttpServletResponse httpServletResponse=(HttpServletResponse) response;
        PrintWriter writer=response.getWriter();
        if(user.equals(user2)&&password.equals(password2)){       	       	
        	writer.println("hello,"+user);
        }else{
        	writer.println("sorry,"+user);
        }

	}
	

}
测试:

Servlet中的service方法_第3张图片



Servlet中的service方法_第4张图片






你可能感兴趣的:(SpringMVC)