关于localhost:8080/student/info与后面改成info.jsp区别?
来源:1-1 初识EL表达式
小太阳哦
2019-11-04 22:58:36
用http://localhost:8080/student/info.jps运行错误

public class Student {
private String name;
private String phone;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK" import="com.imooc.Student"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>Insert title here</title>
</head>
<body>
<% Student stu=(Student)request.getAttribute("student");
String grade=(String)request.getAttribute("grade");
out.println("<h1>"+stu.getName()+"</h1>");
out.println("<h2>"+stu.getPhone()+"</h2>");
out.println("<h2>"+grade+"</h2>");
%>
</body>
</html>import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Lestudent
*/
@WebServlet("/info")
public class Lestudent extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Lestudent() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Student stu=new Student();
stu.setName("李三");
stu.setPhone(null);
String grade="A";
request.setAttribute("student", stu);
request.setAttribute("grade", grade);
request.getRequestDispatcher("/info.jsp").forward(request, response);;
}
}用http://localhost:8080/student/info运行正确

1回答
好帮手慕柯南
2019-11-05
同学你好!
访问info.jsp是直接访问页面,此时request中并没有student和grade这两个属性,此时我们通过request获取到的stu和grade为空,这样在使用它们获取其它值时就报了空指针异常

访问info是先访问了Servlet然后再跳转至页面,而在Servlet中我们给request设置了student和grade这两个属性,所以在页面获取时是可以获取到的,因此不会报错

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题