会话:
四种:1 :Session–保存在服务器上默认的30分
2:Cookie 客户端的,maxAge
3:重写 url - > url;jsessionid=xxxxxxx - > response.encodeRedirectUri(url);
4:隐藏表单
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对象,以下获取的方式,都是一只对象
ServletContextapp= getServletContext();
app= getServletConfig().getServletContext();
app=request.getServletContext();
app=request.getSession().getServletContext();
// 2:获取初始化参数
Stringname=app.getInitParameter("name");
Stringaddr=app.getInitParameter("addr");
out.print("name is:"+name+"
");
out.print("addr is:"+addr);
2:显示当前项目的真实的目录
//获取项目的真实的目录,如果只有/则表项目项目的根在哪儿,显示的是这个项目的运行目录 - 》Tomcat/webapps/20160425/
StringrealPath=app.getRealPath("/");//
System.err.println("项目的真实的目录:"+realPath);
显示所有相片:
1:获取放相片的真实的目录File对象。
2:遍历里面的所有相片。
protectedvoiddoGet(HttpServletRequestrequest, HttpServletResponseresponse)
throwsServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.getWriter();
// 1:获取放相片的真实的目录
Stringpath= getServletContext().getRealPath("/photos");
Filefile=newFile(path);
String[]strs=file.list();//[a.jpg,b.jpg,c.jpg]
//2:如何才可以显示所有相片
for(Stringstr:strs){
Stringimg="";
out.print(img);
}
}
3:做为域对象保存所有人共享的数据,如可以实现聊天程序
//统计这个页面被刷新的次数
Integercount=(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 ="山东济南";
%>
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("
ID is:"+id);
%>
application
ServletContext
String path = application.getRealPath("/");
out.print("
realpath:"+path);
%>
out
JspWriter
是PrintWriter的包装类。
out.print("
ID is:"+id);
%>
config
ServletConfig对象
这个jsp页面在Web.xml配置参数
two-jsp
/WEB-INF/two.jsp
我的邮件@我的地址.com
two-jsp
/two.html
配置的初始化参数是:
String mail = config.getInitParameter("email");
out.print(mail);
%>
page
Object
表示当前的JSP类自己
exception
Throwable
表示异常对象
只有当页面配置的指令:
才会有这个对象。
pageContext
PageContext
1:表示页面的域对象。
setAttribute/getAtttribute/removeAttribute
2是一个工具类。
1:获取其他对象
2:操作其他域对象中的值
本质上,所有上面的这些对象,都是_jspService方法的中的参数:
3:输出
Out.printl;n(…);
%>
4:MVC与项目的开发
Model _ 数据封装对象JavaBean
View;展示层–html,jsp
Controller–控制层 用于与用户交互。Servlet。
修改上面的页面,使用JSP输出数据
// 查询
Listlist=dao.query();
//将查询的结果,放到req
request.setAttribute("list",list);
//转发
request.getRequestDispatcher("/jsps/show.jsp").forward(request,response);
显示: