jsp页面request.getParameter报错
时间: 2023-10-05 17:06:00 浏览: 101
当使用 `request.getParameter()` 方法时,通常是从前端页面传来的参数值,如果没有传递参数或参数名错误,就会抛出 `NullPointerException` 或者 `IllegalArgumentException` 异常。因此你需要检查以下几个方面:
1. 确认前端页面是否正确传递了参数,可以查看浏览器的开发者工具(F12)的 Network 选项卡中的请求信息,看是否包含了需要的参数。
2. 确认参数名是否正确,可以在 Java 代码中打印出接收到的参数名,或者直接查看前端页面中传递的参数名是否与 Java 代码中一致。
3. 确认参数值是否符合要求,例如是否为空或者格式不正确。
在排除以上问题后,如果仍然无法解决,可以提供更详细的错误信息或代码片段,以便更好地帮助你解决问题。
相关问题
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath()); request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("utf-8");//解码 //向网页输出内容 PrintWriter out=response.getWriter(); //获取用户的姓名和密码 String b_username = request.getParameter("b_username"); String b_password = request.getParameter("b_password"); System.out.println(b_password+" "+b_username+"==="); //调用Login方法进行判断 BuyerobjDao dao = new BuyerobjDao(); boolean success = dao.login(b_username, b_password); System.out.println(success); if(success==true){ System.out.println("登录成功"); response.sendRedirect("shouyu.html"); }else{ System.out.println("登录失败"); response.sendRedirect("jingdong.jsp"); } } 改错
代码中主要存在的问题是:
1. doGet方法中的response.getWriter()方法只能调用一次,不能重复调用,否则会报错。
2. 在设置response的字符编码时,应该在获取PrintWriter对象之前进行设置,否则会无效。
修改后的代码如下:
```java
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
//向网页输出内容
PrintWriter out = response.getWriter();
//获取用户的姓名和密码
String b_username = request.getParameter("b_username");
String b_password = request.getParameter("b_password");
System.out.println(b_password + " " + b_username + "===");
//调用Login方法进行判断
BuyerobjDao dao = new BuyerobjDao();
boolean success = dao.login(b_username, b_password);
System.out.println(success);
if (success) {
System.out.println("登录成功");
response.sendRedirect("shouyu.html");
} else {
System.out.println("登录失败");
response.sendRedirect("jingdong.jsp");
}
out.close();
}
```
修改的主要内容包括:
1. 删除了无用的注释和代码。
2. 将获取PrintWriter对象的代码移到设置response字符编码的前面。
3. 修改了if语句中的判断条件,使其更加简洁。
使用jsp设计网页计算器添加报错处理异常
在使用JSP设计网页计算器并添加错误处理异常时,你可以遵循以下步骤:
1. **页面布局**:
创建一个基本的HTML结构,包含输入框用于用户输入数字和操作符,以及提交按钮。例如,可以有`<input type="text">`用于显示结果,`<button>`标签用于触发计算。
```html
<form action="calculator.jsp" method="post">
<input id="num1" type="number" name="num1"><br>
<select name="operator">
<option>+</option>
<option>-</option>
<option>*</option>
<option>/</option>
</select><br>
<input id="num2" type="number" name="num2"><br>
<input type="submit" value="Calculate">
<span id="result"></span>
<span id="error-message" style="color:red;"></span>
</form>
```
2. **服务器端Java(JSP)处理**:
在`calculator.jsp`文件中,创建一个Java bean(如CalculatorBean),包含计算方法,并捕获可能出现的异常。
```java
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="result" value="" scope="request"/>
<c:set var="errorMessage" value="" scope="request"/>
<script>
function calculate() {
// 异步获取表单数据
var num1 = document.getElementById("num1").value;
var operator = document.querySelector('select[name=operator]').value;
var num2 = document.getElementById("num2").value;
// 调用后台方法进行计算
$.ajax({
url: "calculate",
data: {num1: num1, operator: operator, num2: num2},
success: function(response) {
result = response.result;
document.getElementById("result").innerHTML = result;
},
error: function(xhr, status, error) {
errorMessage = xhr.responseText; // 获取错误信息
document.getElementById("error-message").innerHTML = errorMessage;
}
});
}
</script>
...
<body>
<!-- ... -->
<c:if test="${not empty errorMessage}">
<p>Error: ${errorMessage}</p>
</c:if>
<input onclick="calculate()" type="button" value="Calculate">
<p>Result: ${result}</p>
</body>
</jsp>
```
3. **错误处理部分**:
在Servlet或Controller中(如果使用的是MVC架构),对用户输入进行检查,比如防止除数为零、验证数字格式等,并抛出对应的异常。然后在相应处理方法中捕获异常,返回错误消息给前端。
```java
// Servlet example
@WebServlet("/calculate")
public class CalculatorServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String num1 = request.getParameter("num1");
String operator = request.getParameter("operator");
String num2 = request.getParameter("num2");
CalculatorBean calculator = new CalculatorBean();
try {
double result = calculator.calculate(num1, num2, operator);
request.setAttribute("result", result);
} catch (IllegalArgumentException e) {
request.setAttribute("errorMessage", "Invalid input: " + e.getMessage());
}
request.getRequestDispatcher(request.getServletPath()).forward(request, response);
}
}
// Java Bean Example
public class CalculatorBean {
public double calculate(String num1, String num2, String operator) throws IllegalArgumentException {
// ... Perform calculations and validate inputs
if (operator.equals("/") && Double.parseDouble(num2) == 0) {
throw new IllegalArgumentException("Cannot divide by zero.");
}
// ...
}
}
```
阅读全文