Servlet接受页面的参数:
request.getParamter(“name”);
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/as")
public class ArgumentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("请求过来了");
String name=request.getParameter("name");
int age;
try {
//注意,如果获取不到参数,转换会有异常
age=Integer.parseInt(request.getParameter("age")) ;
}catch(NumberFormatException e){
age=10;
}
String gender=request.getParameter("gender");
System.out.println(name+age+gender);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
执行结果
没传值显示为空
int型要异常捕获并且强制转换
int age;
try {
//注意,如果获取不到参数,转换会有异常
age=Integer.parseInt(request.getParameter("age")) ;
}catch(NumberFormatException e){
age=10;
}
表单:
get请求
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="reg" method="get">
用户名称:<input type="text" name="usersname"><br>
用户密码:<input type="password" name="password"><br>
用户性别:<input type="radio" name="gender" value="男">男
<input type="radio" name="gender" value="女" checked="checked">女<br>
<br>
用户爱好:<input type="checkbox" name="hab" value="足球">足球
<input type="checkbox" name="hab" value="篮球">篮球
<input type="checkbox" name="hab" value="网球">网球
<input type="checkbox" name="hab" value="台球">台球
<br>
<!--提交 -->
<input type="submit" value="注册">
</form>
</body>
</html>
接受参数代码
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet({"/as","/reg"})
public class ArgumentServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//开始注册
//接收参数
//request.getParameter();只能获取一个值得参数
String usersname=request.getParameter("usersname");
String password=request.getParameter("password");
String gender=request.getParameter("gender");
//获取多选框,使用request.getParameterValues();返回字符串数组
String[] hab=request.getParameterValues("hab");
System.out.println(usersname);
System.out.println(password);
System.out.println(gender);
for (int i = 0; i < hab.length; i++) {
System.out.println(hab[i]);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
操作
执行结果
Post请求
表单方法改为post
在这里发现出现乱码现象
//设置响应头的响应格式和指定编码
response.setContentType("text/html;charset=utf-8");
还有一个较为重要的方法
//获取所有请求头信息
Enumeration<String> names=request.getParameterNames();
while(names.hasMoreElements()) {
System.out.println(names.nextElement());
}
Servlet的参数传递过程中乱码情况
Servlet默认使用的编码是ISO-8859-1
get请求: 方式1
//手动解决get请求乱码问题(麻烦,适合临时少量的值)
String usersname=request.getParameter("usersname");
usersname=new String(usersname.getBytes("ISO-8859-1"),"utf-8");
方式2:
修改tomcat中的server.xml
加入
URIEncoding=“UTF-8”
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8800" protocol="HTTP/1.1" redirectPort="8443"/>
post请求:
方式1:
//解决post请求的中文乱码现象,指定请求头的编码
request.setCharacterEncoding("utf-8");
方式2:过滤器