Servlet请求和响应

1、请求 HttpServletRequest      响应 HttpServletResponse

请求头、请求行、请求体(请求参数)。

package net.pp.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.io.IOException;
import java.util.Enumeration;

public class HelloService extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException{
        //请求 HttpServletRequest
        //获取请求行
        System.out.println("接收到get请求");
        System.out.println("请求方式:" +request.getMethod());
        System.out.println("URL:" +request.getRequestURL());
        System.out.println("发出请求客户端IP地址:"  +request.getRemoteAddr());
        System.out.println("服务点接收请求的IP地址:" +request.getLocalAddr());
        System.out.println("访问客户端的端口号:" +request.getRemotePort());
        System.out.println("WEB应用路径:" +request.getContextPath());
        System.out.println("HTTP协议和版本" +request.getProtocol());

        //获取请求头
        Enumeration<String> headerNames = request.getHeaderNames();
                    while (headerNames.hasMoreElements()){
                        String element = headerNames.nextElement();
                        System.out.println(element+":"+request.getHeader(element));
                    }
        //获取请求参数
        String name = request.getParameter("name");
        String passWord = request.getParameter("passWord");
        System.out.println("用户名:" + name);
        System.out.println("密码:" + passWord);

        //响应 HttpServletResponse
        String result = "恭喜您登陆成功";
        //法一:
        ServletOutputStream outputStream = response.getOutputStream();
        outputStream.write(result.getBytes());
        //法二:
        response.setContentType("text/html;charset=utf-8");//将iso转化为utf-8,否则会出现码
        PrintWriter writer = response.getWriter();
        writer.write(result);

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
        System.out.println("接收到post请求");
    }

}

get.html

<center>

    <h2>发起HTTP get请求</h2>
    <form action="hi" method="get">
        <p>账号:<input type="text" name="name" /></p>
        <p>密码:<input type="text" name="passWord" /></p>
        <input type="submit" value="提交" />
    </form>

</center>

结果如下:

 

2、ServletContext对象

ServletContext对象是它对应的Web应用环境的相关配置信息

应用:

1)获取整个Web项目初始化参数;

2)在多个Servlet中共享数据;

3)读取Web项目中的资源文件。

 

1.获取整个Web项目初始化参数;

ServletTest2.java

package net.pp.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "ServletTest2", urlPatterns = "/test2")
public class ServletTest2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //利用getServletContext()获取全局变量
        String encoding = this.getServletContext().getInitParameter("encoding");
        this.getServletContext().getInitParameterNames();
        System.out.println(encoding);

    }
}

结果是: 

2.在多个Servlet中共享数据

ServleTest3.java

package net.pp.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "ServletTest3", urlPatterns = "/test3")
public class ServletTest3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String data = "pengpeng";
        this.getServletContext().setAttribute("name", data);

    }
}

ServleTest4.java

package net.pp.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "ServletTest4", urlPatterns = "/test4")
public class ServletTest4 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = (String) this.getServletContext().getAttribute("name");
        System.out.println(name);

    }
}

 结果是:

3)读取Web项目中的资源文件

ServletTest5.java

package net.pp.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

@WebServlet(name = "ServletTest5", urlPatterns = "/test5")
public class ServletTest5 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        InputStream resourceAsStream = this.getServletContext().getResourceAsStream("/db.properties");
        Properties properties = new Properties();
        properties.load(resourceAsStream);
        String name = properties.getProperty("name");
        String password = properties.getProperty("passWord");
        String url = properties.getProperty("url");

        System.out.println(url);
        System.out.println(name);
        System.out.println(password);
    }
}

 db,properties

url=jdbc:mysql://localhost:3306
name = mysql of pengpeng
passWord = 888888

结果是: 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章