操作环境IDEA
在src下创建 com.xx.control包,servlet一般放在control下。一个简单的HttpServlet
package com.xx.control;
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 = "TwoServlet")
public class TwoServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String mt = request.getMethod();
String uname = request.getParameter("uname");
System.out.println("用户名: "+ uname);
System.out.println("方法: " + mt);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String mt = request.getMethod();
String uname = request.getParameter("uname");
System.out.println("用户名: "+ uname);
System.out.println("方法: " + mt);
}
}
然后在web目录下配置WEB-INF中的web.xml
<servlet> <servlet-name>WYF</servlet-name> <servlet-class>com.lh.control.OneServlet</servlet-class> <load-on-startup>10</load-on-startup> <!-- 设置为启动tomcat时即加载该实例,数字越小 加载优先级越高 --> <!-- tomcat 访问期间,只会有一个servlet被实例化--> </servlet> <servlet-mapping> <servlet-name>WYF</servlet-name> <url-pattern>/wyf</url-pattern> </servlet-mapping>
有四种路径配置方法,当路径冲突时,优先级为 具体 > 前置 > 通配 > 后置
<!-- 具体路径请求--> <url-pattern>/wyf</url-pattern> <!-- 前置条件请求--> <url-pattern>/wyf/*</url-pattern> <!-- 后置条件请求--> <url-pattern>*.do</url-pattern> <!-- 通配符请求路径--> <url-pattern>/*</url-pattern>
<html> <body> <div> <form action="/Sample01/wyf" method="get"> <label>用户名: </label><input type="text" name="uname"/> <input type="submit" value="get"/> </form> <form action="/Sample01/wyf" method="post"> <label>用户名: </label><input type="text" name="uname"/> <input type="submit" value="post"/> </form> </div> </body> </html>
使用post传参时会发现,tomcat在console的输出会乱码
浏览器采用【get】请求时,请求参数保存在【请求头】,请求头的内容是由tomcat负责的。Tomcat9 编码集默认为 utf-8, 以前也是ISO-8859-1
浏览器采用【post】请求时,请求参数保存在【请求体】,请求体的内容是由请求对象负责的。编码集默认为 ISO-8859-1
设置request对象的编码
request.setCharacterEncoding("utf-8");
必须在读取内容前调用该方法.
Tomcat9以前的版本还需要修改Tomcat/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
String array[] = req.getParameterValues("hobby");
<form action="/Sample01/cbs" method="get"> <label>爱好: </label><input type="checkbox" name="hobby" value="1">吴亦凡<br> <input type="checkbox" name="hobby" value="2">才徐坤<br> <input type="checkbox" name="hobby" value="3">郭德纲<br> <input type="submit"/> </form>
测试结果
原文:https://www.cnblogs.com/wrnmb/p/10706389.html