您的位置:首页 > 其它

Web资源文件的加载

2016-11-01 15:02 162 查看

一、关于页面跳转的一下几种方法:

package com.gqx.load;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test extends HttpServlet {
/**
* 给服务器端使用的: /表示当前web的根目录 (webroot下)
* 给浏览器端使用的:/表示在webapps的根目录(webapps下)
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
/**
* 转发
*/
//		request.getRequestDispatcher("/index.jsp").forward(request, response);

/**
* 请求的重定向
*/
//		response.sendRedirect("/TestService/index.jsp");

/**
* html超链接
*/
response.getWriter().write("<html><body><a href='/TestService/index.jsp'>超连接</a></body><html>");

/**
* html页面中表单的提交
*/
response.getWriter().write("<html><body><form action='/TestService/index.jsp'><input type='submit'/></form></body><html>");

}
}


 注意:要正确区分浏览器还是服务器端使用“.”符号来获取路径,请求的转发是直接由Servlet实现的,所以是由服务器端来完成的,而重定向是服务器向浏览器发送location和状态码302使浏览器去完成页面的跳转,此时是在浏览器的目录下实现跳转的,同理,表单请求和超链接都是浏览器短的目录,所以要注意点号的不同意义

二、读取服务器端的文件,路径的注意事项:

假设在服务器端设置了一个属性文件,需要读取如图:



属性的内容:


通过简单的文件读取如下:

File file=new File("./src/db.porperties);


 我们会发现此时去运行,会发生错误,因为根本找不到文件,究其原因,不难发现,web项目的“.”与java项目的"."所指示的文件目录不同,web目录的“.”代表的是tomcat下的bin目录,此时就无法找到相应的文件和资源,这个时候我们可以用到servletContext下面的方法去获取路径

package com.gqx.load;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Properties;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 读取web应用下面的资源文件(例如propertis)
* @author Administrator
*
*/
public class ResDemo extends HttpServlet {
/**
*   "."  相对于java命令运行的当前路径
*   在java项目中,“.”代表java目录的根目录下开始,
*   在web项目中:"."代表当前在tomcat/bin目录下开始,所以不能使用这种相对路径
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 得到web应用资源下的文件
//方法1、servletContxt中的方法,拿到项目下的文件
//		String path=this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
//		File file=new File(path);
//		System.out.println(file.getAbsolutePath());
//
//		FileInputStream in=new FileInputStream(file);

//方法2、getResourceAsStream() 	得到资源文件,返回输入流
InputStream in=this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties pro=new Properties();
//读取资源文件
pro.load(in);

String user=pro.getProperty("user");
String password=pro.getProperty("password");
System.out.println("user="+user);
System.out.println("password="+password);
}
}


这时就会得到相对应的结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: