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("/");它代表的就是获取服务器的绝对磁盘根路径
例如:
7、getResource(String path) -----获取一个URL 简单理解成是一个网络路径。
例如:
System.out.println(this.getServletContext().getResource("/"));
结果: jndi:/localhost/myday05/
8、获取class文件所在目录的绝对路径
结果: /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
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()去获取.
例如:
结果: /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