会话:
四种: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对象。在/20160425这个项目中,这个对象只有一个。
2:此对象也是一个域对象。setAttribute/getAttribute/removeAttribute
做为域对象,保存所有会话,所有请求,都可以访问到的数据。
对比:
Session只保存当前用户的会话信息。
这个用户在多个页面上跳转和重定向时,共享的数据。
Request只保存当前请求的会话信息。
在forward/incoude在多资源之间转发时,共享数据。
3:生命周期是:当项目启动时,直接创建,当项目关闭时,就会被销毁。
4:此对象由容器创建。
在任意的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);
//获取项目的真实的目录,如果只有/则表项目项目的根在哪儿,显示的是这个项目的运行目录 - 》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);
}
}
//统计这个页面被刷新的次数
Integer count =(Integer) app.getAttribute("count");
if(count==null){
count=1;
}else{
count++;
}
//放回到ServletContext
app.setAttribute("count",count);
out.print("访问量为:"+count);
三个组件:
Servlet
三个域对象
Filter
Listener
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对象来输出。
<%
里面是java代码。
所有开发的java代码。默认都在_jspService方法中。
%>
<%
String name = "Jack";
String addr = "山东济南";
%>
<hr>
<%
out.print(name);
%>
在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方法的中的参数:
<%
Out.printl;n(…);
%>
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);
显示: