request接受参数和防止异常

send.jsp
<html>
<head>
<title>send parameter</title>
</head>
<body>
<form action="getCanshu.jsp method="get">
first:<input type="text" name="first">

second:<input type="text" name="second">

<input typr="submit" value="fasong">
</form>
</body>
</html>

getCanshu.jsp
<html>
<head>
<title>get the parameter</title>
</head>
<body>
<%
String firstNum=request.getParameter("first");
String secondNum=request.getParameter("second");
int first=0;
int second=0;
try{
first=Integer.parseInt(firstNum);
second=Integer.parseInt(secondNum);
}catch(Exception e){
%>
<h1>input error</h1>
<%
}
%>
<%=first%>

<%=second%>
</body>
</html>

### 在 Servlet 中接收 GET 或 POST 请求参数的完整方法 在 Servlet 中,可以通过 `HttpServletRequest` 对象来接收客户端发送的请求参数。无论是 GET 请求还是 POST 请求,都可以通过 `request.getParameter()` 方法获取单个参数值,或者通过 `request.getParameterValues()` 获取多个同名参数值。 #### 1. 接收单个参数 对于简单的表单提交或 URL 查询字符串中的参数,可以使用 `request.getParameter(String name)` 方法获取指定名称的参数值。以下是一个示例代码: ```java public class SampleServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { // 设置响应内容类型并解决中文乱码问题 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 获取单个请求参数 String name = request.getParameter("name"); // 获取名为 "name" 的参数[^2] // 向浏览器输出结果 out.println("<h1>name: " + name + "</h1>"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { this.doGet(request, response); } } ``` #### 2. 接收多个同名参数 如果表单中存在多个同名参数(例如复选框),可以使用 `request.getParameterValues(String name)` 方法获取所有同名参数的值数组。以下是一个示例代码: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 获取多个同名参数 String[] hobbies = request.getParameterValues("hobby"); // 获取名为 "hobby" 的多个参数[^2] if (hobbies != null) { for (String hobby : hobbies) { out.println("<p>Hobby: " + hobby + "</p>"); } } else { out.println("<p>No hobbies selected.</p>"); } } ``` #### 3. 处理 POST 请求中的参数 对于 POST 请求,参数通常位于请求体中。需要确保正确设置字符编码以避免中文乱码问题。以下是一个处理 POST 请求的示例代码: ```java @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 解决 POST 请求中的中文乱码问题 request.setCharacterEncoding("UTF-8"); // 设置请求体的编码为 UTF-8[^4] // 获取用户名密码 String username = request.getParameter("username"); String password = request.getParameter("password"); // 输出到控制台 System.out.println("Username: " + username); System.out.println("Password: " + password); // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<h1>Login Successful</h1>"); } ``` #### 4. 处理 GET 请求中的参数 GET 请求的参数通常位于 URL 的查询字符串中。需要特别注意的是,GET 请求的参数可能会出现编码问题,因此需要手动进行解码。以下是一个处理 GET 请求的示例代码: ```java @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 获取参数并手动解码 String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "UTF-8"); // 解码 GET 参数[^5] out.println("<h1>Name: " + name + "</h1>"); } ``` #### 5. 注意事项 - **中文乱码问题**:对于 POST 请求,需要调用 `request.setCharacterEncoding("UTF-8")` 来设置请求体的编码。对于 GET 请求,则需要手动对参数进行解码。 - **参数为空的情况**:在获取参数时,应始终检查返回值是否为 `null`,以避免潜在的空指针异常。 - **安全性**:在实际开发中,应对用户输入的数据进行校验过滤,防止 SQL 注入等安全问题。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值