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

結果是: 

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