关于localhost:8080/student/info与后面改成info.jsp区别?

来源:1-1 初识EL表达式

小太阳哦

2019-11-04 22:58:36

用http://localhost:8080/student/info.jps运行错误

http://img.mukewang.com/climg/5dc03bdc09382f4106700806.jpg

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运行正确

http://img.mukewang.com/climg/5dc03c61096eb84806270436.jpg

写回答

1回答

好帮手慕柯南

2019-11-05

同学你好!

  1. 访问info.jsp是直接访问页面,此时request中并没有student和grade这两个属性,此时我们通过request获取到的stu和grade为空,这样在使用它们获取其它值时就报了空指针异常

    http://img.mukewang.com/climg/5dc10d5c095bba9e06110130.jpg

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

    http://img.mukewang.com/climg/5dc10dbe0971ea5906980186.jpg

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

0

0 学习 · 9666 问题

查看课程