jsp路径问题



jsp路径问题。

1、<jsp:forward page=”/jsp/login.jsp”></jsp:forward>
      jsp中的这个转发操作属于服务器端路径,前面不需要加入应用程序名。
2、<a href=”${pageContext.request.contextPath }/a.jsp”>haha</a>
      <img src=”${pageContext.request.contextPath }/servlet/CheckCode”>
      <form action=”${pageContext.request.contextPath}/servlet/RegisterServlet” method=”post” >
      jsp页面中如果通过一个链接跳转到某一jsp页面或把数据传到servlet中进行处理,我们一般都按上面的方式去写,自动获取我们的应用程序名,这样当我们修改我们web应用的名称是,不需要修改代码。
      注:用jstl标签来处理,首先导入标签<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
              <a href=”<c:url value=’/BookServlet?method=load&bid=${book.bid }’/>”>${book.bname }</a>
3、request.getRequestDispatcher(“/jsp/login.jsp”).forward(request,response);
      request.getSession().getServletContext().getRequestDispatcher(“/jsp/login.jsp”).forward(request, response);
      在servlet中的转发是在服务器内部进行的,在我们写跳转路径是不需要在路径前添加web应用程序名称的。
4、String path=request.getContextPath();
      response.sendRedirect(path+”/jsp/register.jsp”);
      也可以写成:
      String path=request.getContextPath()+”/jsp/register.jsp”;
      response.sendRedirect(path);
      我们在servlet中进行重定向时,由于这是一个浏览器端路径,我们需要在前面加上我们的web应用程序名,在项目中提倡上面的  写法而不提倡response.sendRedirect(“/myday11homework/jsp/register.jsp”)这种把web应用程序名写死,因为在我们开发项目的时候是有可能变更web应用程序的名,变更一次修改一次源代码太麻烦了。其中request.getContextPath()得到的内容为“/应用程序名”
5、设置访问权限的例子
      1>获得请求资源路径:String uri=request.getRequestURI(); 得到:/day05_1/demo1Request
      2>获得工程虚拟目录名称:String contextpath=request.getContextPath;得到:/day05_1
      3>截取资源路径:String path=uri.subString(contextPath.length);
      4>为资源设置访问权限
6、示例 在开发中,怎样在服务器端读取文件
      getRealPath(“/”);它代表的就是获取服务器的绝对磁盘根路径
      例如:
      System.out.println( this.getServletContext().getRealPath(“/”));      结果: E:\itcast\apache-tomcat-7.0.0\apache-tomcat-7.0.0\webapps\myday05\
7、getResource(String path)   —–获取一个URL  简单理解成是一个网络路径。
     例如:               
      System.out.println(this.getServletContext().getResource(“/”));
      结果: jndi:/localhost/myday05/
8、获取class文件所在目录的绝对路径
     Class.getResource(“/”).getPath();获取的就是class文件所有在目录的绝对磁盘路径。在开发中,就可以将放置在classes目录下的文件,通过此方式获取到。在实际开发中,在src除了放置类文件外,还放置一些配置文件,那么要读取这些配置文件,就需要得到绝对路径,就可以通过getReasource().getPath()去获取.

     例如:

     System.out.println(this.getClass().getResource(“/”).getPath());
     结果: /E:/itcast/apache-tomcat-7.0.0/apache-tomcat-7.0.0/webapps/myday05/WEB-INF/classes/

9、URL与URI
      URI获取请求资源路径request.getRequestURI();结果:/day05_1/demo1Request
      URL获取带协议的绝对的路径request.getRequestURL();结果:http://192.168.3.100/day05_1/demo1Request