Request获取前端返回的参数重点学习两个方法:getParameter和getParameterValues.
新建一个maven项目,勾选简单的web应用模板,模块命名为request,补全java目录,更改web.xml内容.
删除webpps下的index.jsp,新建一个index,jsp,发现新建的多了一行头部,标注了类型以及编码.
新建一个包名为com.sunsplanter.servlet,包内新建类为LoginServlet,本次尝试用doPost实现功能,注册Servlet代码如下:
LoginServlet com.sunsplanter.servlet.LoginServlet LoginServlet /login
新建类名为LoginServlet,内容如下:
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] hobby = req.getParameterValues("hobbys");
System.out.println(username);
System.out.println(password);
System.out.println(Arrays.toString(hobby));
//通过请求转发
resp.setCharacterEncoding("utf-8");
req.getRequestDispatcher("/request/success.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
更改Tomcat配置的包,设置上下文为request。
运行后发现请求转发的代码提交表单后无法跳转成功页面。
且控制输出的用户名为乱码–该问题通过req设置编码解决。
404问题发现是因为访问地址有误,地址设置成以下这样就好了,这是和Redirect不一样的地方:
req.getRequestDispatcher("/success.jsp").forward(req,resp);
虽然访问的地址都是http://localhost:8080/request/login ,但如果请求转发中多加了/request,那就是不行,迷惑。



