Java Web学习笔记(四)

ServletConfig

封装了Servlet的配置信息,并且可以获取ServletContext对象
1.配置初始化参数;
2.获取初始化参数:
- getInitParameter(String name):获取指定参数名的初始化参数
- getINitParameterNames():获取参数名组成的Enumeration对象
- getServletName():获取Servlet的配置名称

ServletContext

(1)、可以有ServletConfig获取
(2)、该对象代表当前web应用,可以从中获取当前web对象的各个信息:

  • 获取当前web应用的初始化参数:可以为所有Servlet所获取,而Servlet的初始化参数只有自己的Servlet可以获取:getInitParameter(String
    name)、getInitParameterNames()
String user=servletConfig.getInitParameter("user");
Enumeration<String> names=servletConfig.getInitParameterNames();
        while(names.hasMoreElements()){
            String name=names.nextElement();
            System.out.println("name:"+name);
        }
  • 获取当前web应用的某一个文件在服务器上的绝对路径:getRealPath(String path);
String realPath=servletContext.getRealPath("/img/XX.jpg");
  • 获取当前web应用的名称:getContextPath();
String contextPath=servletContext.getContextPath();
  • 获取当前web应用的某一个文件对应的输入流:getResourceAsStream(String path)
try {
            ClassLoader classloader=getClass().getClassLoader(); 
            InputStream is=classloader.getResourceAsStream("jdbc.properties");
            System.out.println("1."+is);

            InputStream is2=servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
            System.out.println("2."+is2);

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
  • 和attribute相关的方法

在Servlet中获取请求信息

Servlet的service(ServletRequest request,ServletResponse response)方法用于应答请求

  1. ServletRequest :封装了请求信息,可以从中获取任何请求信息
    获取请求参数:
    (1)、String getParameter(String name):根据请求参数的名字返回参数值,若请求参数有多个值该方法只能获取到第一个提交的值
        String user=request.getParameter("user");
        String password=request.getParameter("password");

(2)、Map getParameterMap():返回请求参数的键值对

Map<String,String[]> map=request.getParameterMap();
        for(Map.Entry<String, String[]> entry:map.entrySet()){
            System.out.println(entry.getKey()+":"+Arrays.asList(entry.getValue()));
        }

(3)、Enumeration getParameterNames()

Enumeration<String> names=request.getParameterNames();
        while(names.hasMoreElements()){
            String name=names.nextElement();
            String val=request.getParameter(name);
            System.out.println(name+":"+val);
        }

(4)、String[] getParameterValues(String name):根据请求参数的名字返回请求参数对应的Enumeration对象

String[] interestings=request.getParameterValues("interesting");
        for(String interest: interestings){
            System.out.println("-->"+interest);
        }

其它常用方法:

  • 获取请求的uri:getRequestURI()(需要强转成HttpServletRequest)
HttpServletRequest httpServletRequest=(HttpServletRequest) request;
String requestURI=httpServletRequest.getRequestURI();
  • 获取请求方式:getMethod()
String method=httpServletRequest.getMethod();
  • 获取请求的查询字符串:getQueryString()
String queryString=httpServletRequest.getQueryString();
  • 获取请求的Servlet的映射路径:getServletPath()
String servletPath= httpServletRequest.getServletPath();
  • 和attribute相关的几个方法

HttpServletRequext:是ServletRequest的子接口,针对于HTTP请求所定义,里面包含了大量获取HTTP请求相关的方法
2. ServletResponse :封装了响应信息,如果想给用户什么响应,具体可以使用该接口的方法实现。

常用方法:

  • getWrite():返回一个PrintWriter对象,调用该对象的print()方法,将把print()中的参数直接打印到客户的浏览器上。
        PrintWriter out=response.getWriter();
        out.print("Hello..");
  • response.setContentType(String type):设置响应的内容类型(子方法为HttpServletResponse中定义,需要进行强转)。
response.setContentType("application/msword");
//setContentType参数可通过Servlet容器的web.xml进行查找
  • sendRedierct(String location):请求的重定向

ServletRequest 和ServletResponse 这两个接口都是由服务器来实现的,并由服务器调用service方法时传入。

猜你喜欢

转载自blog.csdn.net/qq_35007219/article/details/79658060