ServletContext JSP

会话:

四种:1 :Session  保存在服务器上默认的30分

      2:Cookie  客户端的,maxAge

          3:重写 url - > url;jsessionid=xxxxxxx - > response.encodeRedirectUri(url);

          4:隐藏表单  <input type=hidden/>

 

 

1:ServletContext

2:JSP  

3:用JSP来重构项目。

 

 

1:ServletContext

特点:

  1:一个应用程序一个唯一的ServletCOntext对象。在/20160425这个项目中,这个对象只有一个。
  2:此对象也是一个域对象。setAttribute/getAttribute/removeAttribute

       做为域对象,保存所有会话,所有请求,都可以访问到的数据。

       对比:

           Session只保存当前用户的会话信息。

这个用户在多个页面上跳转和重定向时,共享的数据。

           Request只保存当前请求的会话信息。

在forward/incoude在多资源之间转发时,共享数据。

   3:生命周期是:当项目启动时,直接创建,当项目关闭时,就会被销毁。

   4:此对象由容器创建。

 

功能:

1:获取在 web.xml中配置的全局初始化参数


在任意的Servlet中通过SerlvteContext对象来获取配置初始化参数:

 

// 1:获取ServletCOntext对象,以下获取的方式,都是一只对象

ServletContext app = getServletContext();

app = getServletConfig().getServletContext();

app = request.getServletContext();

app = request.getSession().getServletContext();

// 2:获取初始化参数

String name = app.getInitParameter("name");

String addr = app.getInitParameter("addr");

out.print("name is:" + name + "<br>");

out.print("addr is:" + addr);

 

 

 

 

 

 

2:显示当前项目的真实的目录

 

//获取项目的真实的目录,如果只有/则表项目项目的根在哪儿,显示的是这个项目的运行目录 - 》Tomcat/webapps/20160425/

String realPath =  app.getRealPath("/");//

System.err.println("项目的真实的目录:"+realPath);

 

 

 

显示所有相片:

  1:获取放相片的真实的目录File对象。

  2:遍历里面的所有相片。

 

 

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

// 1:获取放相片的真实的目录

String path = getServletContext().getRealPath("/photos");

File file = new File(path);

String[] strs = file.list();//[a.jpg,b.jpg,c.jpg]

//2:如何才可以显示所有相片 <img>

for(String str:strs){

String img  ="<img src='photos/"+str+"' width='300' height='300' style='margin:10px;'/>";

out.print(img);

}

}


 

3:做为域对象保存所有人共享的数据,如可以实现聊天程序

//统计这个页面被刷新的次数

Integer count =(Integer) app.getAttribute("count");

if(count==null){

count=1;

}else{

count++;

}

//放回到ServletContext

app.setAttribute("count",count);

out.print("访问量为:"+count);

 

 

 

 

三个组件:

   Servlet

      三个域对象

      

   Filter

   Listener

 

2:JSP

Java Server Pages - > Java开发的服务器上的页面  - 》动态页面。

 

JSP 通常以 *.jsp文件结尾的文件。

           *.jsp文件,看上去像是HTML,本质上是Servlet。


1:快速 JSP示例

 

 

修改JSP文件生成的编码:

 

 

 

 

 

 

 

 

 

2:详解JSP就是Servlet

 

运行,显示这个页面:

 

JSP页面编译过程: one.jsp  > one_jsp.java  -> one_jsp.class

                   1.jsp   - > _1_jsp.java  - > _1_jsp.class

 

 

 

 

 

源代码:

 

(略)

 

JSP 文件是Servlet的扩展。里面的开发的html文件。默认都 在_jspService方法中通过out对象来输出。

 

 

 

 

 

 

3:JSP的语法

 

 

1:jsp的java代码块 也叫:scriptlets

<%

  里面是java代码。

  所有开发的java代码。默认都在_jspService方法中。

 

%>

 

<%

String name = "Jack";

String addr = "山东济南";

%>

<hr>

<%

out.print(name);

%>

 

 

2:隐藏对象  直接不用声明就可以使用的变量

在java代码块中,可以使用9个隐藏对象

 

隐藏对象

 

 

request

HttpServletRequest

<%

String userAgent = request.getHeader("user-agent");

System.out.println(userAgent);

%>

response

HttpServletRepsonse

response.sendRedirect(request.getContextPath()+"/index.html");

%>

session

httpSession

String id = session.getId();

out.print("<br>ID is:"+id);

%>

application

ServletContext

String path = application.getRealPath("/");

out.print("<hr>realpath:"+path);

%>

out

JspWriter

是PrintWriter的包装类。

out.print("<br>ID is:"+id);

%>

config

ServletConfig对象

这个jsp页面在Web.xml配置参数

 

  <!-- JSP本质是Servlet -->

  <servlet>

   <servlet-name>two-jsp</servlet-name>

   <jsp-file>/WEB-INF/two.jsp</jsp-file>

   <init-param>

   <param-name>email</param-name>

   <param-value>我的邮件@我的地址.com</param-value>

   </init-param>

  </servlet>

  <servlet-mapping>

   <servlet-name>two-jsp</servlet-name>

   <url-pattern>/two.html</url-pattern>

  </servlet-mapping>

 

配置的初始化参数是:<%

String mail = config.getInitParameter("email");

out.print(mail);

%>

 

 

 

 

page

Object

表示当前的JSP类自己

exception

Throwable

表示异常对象

只有当页面配置的指令:

<%@ page isErrorPage=true %>才会有这个对象。


 

pageContext

PageContext

1:表示页面的域对象。

    setAttribute/getAtttribute/removeAttribute

2是一个工具类。

   1:获取其他对象

     

  2:操作其他域对象中的值

 

 

 

 

 

 

 

 

本质上,所有上面的这些对象,都是_jspService方法的中的参数:

 

 

 

 

 

 

3:输出 <%=   ..  %>

<%

 

 Out.printl;n();

%>

 

 

 

4:MVC与项目的开发

Model _ 数据封装对象JavaBean

View;展示层  html,jsp

Controller 控制层 用于与用户交互。Servlet。

 

 

 

 

 

 

 

修改上面的页面,使用JSP输出数据

 

 

 

// 查询

List<Meeting> list = dao.query();

//将查询的结果,放到req

request.setAttribute("list",list);

//转发

request.getRequestDispatcher("/jsps/show.jsp").forward(request, response);

 

 

 

 

显示:

 

 

 

你可能感兴趣的:(ServletContext JSP)