javaweb22/4/3
HttpServletRequest
如果要获取客户端请求过来的参数,找HttpServletRequest
HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,
Http请求中的所有信息会被封装到HttpServletRequest,通过HttpServletRequest的方法,获得客户端的所有信息
获取前端传递的参数,请求转发
1.登录页面
<body>
<h2>登录</h2>
<div>
<%-- ${pageContext.request.contextPath}/login 是通过<servlet-mapping>在web.xml中找到/login,之后通过<servlet>找到LoginServlet--%>
<form action="${pageContext.request.contextPath}/login" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
爱好:
<input type="checkbox" name="hobbys" value="唱歌">唱歌
<input type="checkbox" name="hobbys" value="跳舞">跳舞
<input type="checkbox" name="hobbys" value="玩游戏">玩游戏
<input type="submit">
</form>
</div>
</body>
2.编写Servlet
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解决请求与响应的编码问题
resp.setCharacterEncoding("utf-8");
req.setCharacterEncoding("utf-8");
//获取请求的参数
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] hobbys = req.getParameterValues("hobbys");
// 会把/识别成当前应用,无需再写/s/seccess
req.getRequestDispatcher("/success.jsp").forward(req,resp);
System.out.println(username+":"+password);
System.out.println(Arrays.toString(hobbys));
}
3.在web.xml中注册Servlet
<servlet>
<servlet-name>Log</servlet-name>
<servlet-class>com.wenping.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Log</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
4.编写LoginServlet转发的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>登陆成功</h2>
<h3>SECCESS</h3>
</body>
</html>
解决遇到的问题:
1.转发成功,但是success页面无内容
解决:req.getRequestDispatcher("/success.jsp")后忘记加.forward(req,resp);
2.success页面显示404
解决:getResquestDisptcher()的参数写成/s/seccess,应是/seccess,IDEA会把/识别成当前应用,无需再写/s/seccess
3.控制台内容中文乱码
解决:编辑Tomcat配置,在虚拟机选项中填写 -Dfile.encoding=UTF-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现