Table of contents
The browser interacts with the servlet
The use of request general method request parameters
Solve the Chinese garbled problem (post solution)
The browser interacts with the servlet
package com.mwy.web;
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;
//http和servlet进行数据交互,动态显示页面内容
@WebServlet("/demo03")
public class ServletDemo03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("username");
resp.setHeader("content-type","text/html;charset=utf-8");
resp.getWriter().write("<h1>"+name+"欢迎您!</h1>");
}
}
request Get request data
get method: use the getQueryString method to obtain parameters
post method: use the character input stream to obtain parameters
package com.mwy.web;
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.BufferedReader;
import java.io.IOException;
//request请求方式,获取请求行
//输出结果:
//GET
// /Tomcat_demo1_war
// http://localhost:8085/Tomcat_demo1_war/req1
// /Tomcat_demo1_war/req1
// usernamezhangsan&password=123456
@WebServlet("/req1")
public class ServletDemo04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取方法:get或者post
String method = req.getMethod();
System.out.println(method);
//获取访问资源路径
String contextPath = req.getContextPath();
System.out.println(contextPath);
StringBuffer url = req.getRequestURL();
System.out.println(url);
String uri = req.getRequestURI();
System.out.println(uri);
// 参数
String queryString = req.getQueryString();
System.out.println(queryString);
//--------------获取请求头,user-agent:浏览器的版本信息-----------
String header = req.getHeader("user-agent");
System.out.println(header);
//输出:
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.70
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取post参数
// 获取字符输入流
BufferedReader br = req.getReader();
// 读取数据
String line=br.readLine();
System.out.println(line);
// 输出:username=111&password=111
}
}
The use of request general method request parameters
The most used method is getParameter() to get a single parameter value
The method in get is the same as that in post, so you can only write the method in get, and then use this.doGet(res, req) in doPost to directly use the method already written in get to improve efficiency.
package com.mwy.web;
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.util.Map;
//request通用方法请求参数的使用
@WebServlet("/demo2")
public class ServletDemo2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//get请求逻辑
System.out.println("get...");
// 1. 获取所有参数的map集合
Map<String,String[]> map = req.getParameterMap();
for(String key:map.keySet()){
System.out.println(key+":");
String[] values=map.get(key);
for(String value:values){
System.out.println(value+" ");
}
}
System.out.println("------------------");
//2. 获取对应的参数值
String hobbies[]=req.getParameterValues("hobby");
for(String hobby:hobbies){
System.out.println(hobby);
}
// ------------------
// 1
// 2
// 3. 根据key获取单个参数值
String psw = req.getParameter("password");
String usn = req.getParameter("username");
System.out.println(psw+" "+usn);
}
// get...
//username:
//19120543075
//
//password:
//111
//
//hobby:
//1
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//post请求逻辑
//get请求逻辑
System.out.println("post...");
//直接使用get中的方法
this.doGet(req, resp);
1. 获取所有参数的map集合
// Map<String,String[]> map = req.getParameterMap();
// for(String key:map.keySet()){
// System.out.println(key+":");
//
// String[] values=map.get(key);
// for(String value:values){
// System.out.println(value+" ");
// }
// }
// System.out.println("------------------");
//
// //2. 获取对应的参数值
// String hobbies[]=req.getParameterValues("hobby");
// for(String hobby:hobbies){
// System.out.println(hobby);
// }
//
------------------
1
2
//
3. 根据key获取单个参数值
// String psw = req.getParameter("password");
// String usn = req.getParameter("username");
// System.out.println(psw+" "+usn);
}
//post
// username:
//19120543075
//password:
//qqqq
//hobby:
//1
//2
//------------------
//1
//2
//qqqq 19120543075
}
Idea quickly creates servlets
There is no solution for servlet in new:
modify template
Solve the Chinese garbled problem (post solution)
package com.mwy.web;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet("/RequestDemo1")
public class RequestDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 解决乱码:getReader()
request.setCharacterEncoding("UTF-8");
// 2. 获取username
String username = request.getParameter("username");
System.out.println(username);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}