jsp request获取表单参数和解决中文乱码

提出问题

创建注册页面 reg.jsp ,内容如下:

<form method="post" action="doLogin.jsp">
    用户名:<input name="username"><br>
    密码:<input name="password"><br>
    性别:<input name="sex" value="0" type="radio">女&nbsp;&nbsp;
         <input name="sex" value="1" type="radio">男<br>
    爱好:<input name="like" value="wzry" type="checkbox">王者荣耀&nbsp;&nbsp;
         <input name="like" value="cj" type="checkbox">吃鸡&nbsp;&nbsp;
         <input name="like" value="dy" type="checkbox">抖音&nbsp;&nbsp;
    <input value="登录" type="submit">
</form>

如何让 java 代码可以获取表单中的参数?

获取参数方法

  • getParameter() 获取请求的参数,如表单数据、url中的参数
  • getParameterValues() 同 getParameter(),在多个值的时候使用,如:获取 checkbox 控件值

例子

创建 doReg.jsp ,内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String username=request.getParameter("username");
    String password=request.getParameter("password");
    String sex=request.getParameter("sex");
    String[] like=request.getParameterValues("like");

    out.println("用户名:"+username+"<br>");
    out.println("密码:"+password+"<br>");
    out.println("性别:"+sex+"<br>");

    out.println("爱好:");
    for(String item:like){
        out.println(item);
    }
%>

<br>
<br>

请求的资源路径:<%=request.getRequestURI()%><br>
请求的资源路径:<%=request.getRequestURL()%><br>

<br>

协议:<%=request.getScheme()%><br>
服务主机名:<%=request.getServerName()%><br>
服务端口号:<%=request.getServerPort()%><br>
上下文:<%=request.getContextPath()%><br>

<br>

客户端ip:<%=request.getRemoteHost()%><br>
请求方法:<%=request.getMethod()%><br>
User-Agent:<%=request.getHeader("User-Agent")%><br>

修改 reg.jsp 表单,提交到 doReg.jsp

例子:中文乱码

在上面例子中,如果 用户名 填中文,将会是乱码,解决方法:

在 doLogin.jsp 开始处增加下面代码:

request.setCharacterEncoding("UTF-8");