路径问题:
1. java中的路径:转发,重定向路径,refresh,servlet绑定的路径
2. 流读取图片/文件,路径 (getRealPath或者直接是电脑上的某个绝对路径:d:\\stu.txt)
3. html中的路径,img,link,a的href,form的action
绝对路径: 以"/"开头的都是绝对路径(全路径:项目虚拟路径+资源路径)
1. 转发:req.getRequestDispatcher("/servletDemo10").forward(req,resp);
转发这里没有写全路径,是因为转发只能转发当前项目内的url,所以相当于默认就有项目虚拟路径
2. 重定向:resp.sendRedirect(req.getContextPath() + "/servletDemo07"); //例如:/response/servletDemo07
3. 定时刷新:resp.setHeader("Refresh","3;URL=/response/login.html"); // 这里其实也可以通过req.getContextPath()动态获取虚拟路径,然后进行拼接
4. servlet绑定路径: @WebServlet("/addStudentServlet");// servlet绑定的路径相当于是给servlet指定一个访问的url,那肯定不需要写项目虚拟路径
访问此servlet的路径:例如:/stu/addStudentServlet
5. 文件:
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\stu.txt",true));//本地真实路径
String realPath = getServletContext().getRealPath("/img/hm.png"); //在项目中的路径:web/img/hm.png
6. <frame src="/crm/html/frame/left1.html" scrolling="no"/> //在项目中的路径web/html/frame/left1.html (/crm是虚拟路径)
7. <a href="/stu/addStudent.html">添加学生</a> //在项目中的路径:web/addStudent.html (/stu是虚拟路径)
8. <form action="/stu/addStudentServlet"> //(/stu是虚拟路径)
相对路径: 不以"/"开头的都是相对路径(相对于当前浏览器地址栏的地址)
1. img的src: <img src="../img/1.jpg">
2. link的href: <link rel="stylesheet" href="../css/login.css"/>
路径总结:一般项目中使用的路径都是绝对路径
1. 转发:req.getRequestDispatcher(req.getContextPath()+"/servletDemo10").forward(req,resp);
2. 重定向: 重定向:resp.sendRedirect(req.getContextPath() + "/servletDemo07");
3. 定时刷新: resp.setHeader("Refresh","3;URL="+req.getContextPath()+"/login.html");
4. jsp的form: <form action="${pageContext.request.contextPath}/addStudentServlet">
5. jsp的a:<a href="${pageContext.request.contextPath}/addStudent.html">添加学生</a>
6. jsp的js跳转:location.href="${pageContext.request.contextPath}/xxxServlet"