servlet-2

ServletContext

代表整个web应用程序,用于共享数据

ServletConfig

代表某个Servlet

Servlet三大域对象

域对象:作用范围不同的对象

域对象解释
ServletContext(Application)所有用户都可以获得此对象,或者所有的网页都可以获得。在服务器启动时创建,在服务器关闭时销毁,一个web应用程序只有一个ServletContext
HttpSession服务器会为每个会话创建一个session对象,打开关闭浏览器为一次会话的开始和结束。一次会话只创建一个session对象,默认有效期是30min。应用:用户登录
HttpServletRequest作用域:仅在当前请求中有效,会创建一个request,请求结束则失效。应用:请求转发,或者实现不同页面的参数传递
代码实例

获取ServletContext对象的两种方式

// 获取ServletContext对象的两种方式
// 方式一 
out.print(getServletConfig().getServletContext()+"</br>");
// 方式二
out.print(getServletContext()+"</br>");
// 获取全局的初始化参数
ServletContext servletContext = getServletContext();
Enumeration<String> names = servletContext.getInitParameterNames();
// 得到具体的参数值
while(names.hasMoreElements()){
	// 参数名
	String name = names.nextElement();
	// 参数值
	String value = servletContext.getInitParameter(name);
	out.print(name+":"+value+"</br>");
}
// 获取真实路径F:\tomcat\apache-tomcat-8.0.9\webapps\servlet02
out.print(servletContext.getRealPath("/")+"</br>");
// 获取web应用名称/servlet02
out.print(servletContext.getContextPath());

// 获得ServletContext对象的共享数据
Object name = servletContext.getAttribute("name");
System.out.println(name);

访问图片

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// 设置相应的内容类型
	response.setContentType("text/html;charset=utf-8");
	PrintWriter out = response.getWriter();
	// 1.获取ServletContext对象
	ServletContext servletContext = getServletContext();
	// 2.获取项目图片文件夹的真实路径
	String path = servletContext.getRealPath("/imgs");
	out.print(path+"</br>");
	// 3.获取图片目录下的所有文件名称
	File file = new java.io.File(path);
	// 列出所有的文件
	String[] names = file.list();
	for (String s : names) {
		out.print(s+"</br>");
	}
	// 4.将imgs下面的所有图片显示到浏览器
	//out.print("<img src='/imgs/1.jpg'>");
	String contextPath = servletContext.getContextPath();
	for (String p : names) {
		String img = "<img src='"+contextPath+"/imgs/"+p+"'/></br>";
		out.print(img);
	}
}

设置属性,同一应用程序下的任意servlet均可访问

public class NodeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@Override
	public void init() throws ServletException {
		// 初始化网站点击量计数器
		getServletContext().setAttribute("count", 0);
	}
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 使用ServletContext共享数据
		ServletContext servletContext = getServletContext();
		/*// 设置属性
		servletContext.setAttribute("name", "zhangsan");
		// 获取属性
		Object name = servletContext.getAttribute("name");
		System.out.println(name);*/
		// 获得点击量
		int count = (int)servletContext.getAttribute("count");
		count += 1;
		// 重新赋值
		servletContext.setAttribute("count", count);
		// 相应到浏览器
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().print("<span style='color:red'>"+count+"</span>");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}
Servlet3.0注解

1.Servlet传统的配置方式
Servlet,Servlet-Name,Servlet-Class,url-pattern等
2.基于注解的方式

@WebServlet(
		name="FiveServlet",
		urlPatterns={"/five","/fiveServlet"},
		initParams={// 初始化参数
			@WebInitParam(name="username",value="zhangsan"),
			@WebInitParam(name="password",value="password")	
		},
		loadOnStartup=1// 加载时机
)
public class FiveServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("fiveServlet....");
		//getServletContext().getInitParameter("name");
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

最常用的方式:

@WebServlet("/six")
public class SixServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().print("<h1>hello China!</h1>");
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值