1、servletjsp第一章 javaweb基础 31.1. web模型 31.2. java平台上的web服务器 31.3. Tomcat服务器 31.4. Tomcat的目录结构 3第三章 servlet编程 43.1. servlet简介 43.2. 编写一个简单的servlet程序 43.3. servlet的运行机制 43.4. servlet中的方法 43.5. servlet生命周期 53.6. 处理Http请求报头 53.6.1. 在servlet中取得HTTP请求报头 53.6.2. 在servlet中设置HTTP响应头 63.6.3. 使用setContentType()解决
2、中文问题。 73.6.4. 利用servlet动态生成图片 73.6.5. 在servlet中跳转到其他页面 83.7. 利用servlet读取HTML数据 83.8. 处理Cookie 83.8.1. 了解Cookie 83.8.2. 在servlet中处理Cookie 83.9. 会话跟踪 93.9.1. 会话跟踪的意义和用途 93.9.2. 在servlet中使用session 93.10. ServletContext接口 9第四章 jsp 编程初步 104.1. 编写一个简单的jsp 104.2. jsp基本架构 104.2.1. jsp注释 104.2.2. jsp表达式 104.
3、2.3. jsp sriptlet(jsp小脚本) 104.3. jsp和servlet的关系 10第五章 jsp指令和动作 105.1. jsp指令 105.1.1. page指令 115.1.2. include指令 115.2. jsp动作 115.2.1. include动作 115.2.2. forword动作 11第六章 jsp隐式对象 116.1. out 116.2. response 116.3. request 116.4. session 116.5. application 116.6. exception 11第七章 javabean 127.1. JavaBean的
4、规范 127.2. 127.3. 127.4. 127.5. 将bean属性和request关联 127.6. MVC模式 12第八章 EL表达式 138.1. EL访问4个范围对象 138.2. EL访问JavaBean 138.3. EL访问集合对象 138.4. EL隐式对象 138.5. EL运算符 138.5.1. 算术运算符 138.5.2. 关系运算符 138.5.3. 逻辑运算符 148.5.4. empty 14第九章 Filter和Listener 149.1. Filter 149.2. Linstener 149.2.1. ServletContextListener
5、149.2.2. ServletContextAttributeListener 149.2.3. HttpSessionListener 149.2.4. HttpSessionAttributeListener 14第十章 综合应用 1510.1. java mail 1510.2. 分页 1510.3. 文件上传 1510.4. web应用的国际化 1910.5. 工厂模式和抽象工厂模式 19第一章 javaweb基础1.1. web模型web应用就是浏览器和服务器进行交换的过程。用户在浏览器中输入需要访问的web的地址,通过浏览器使用http协议发送到服务器上,服务器使用http协议将
6、用户请求的网页返回到客户端的浏览器中。:80/mail/index.jsphttp: web服务的协议 :域名,访问服务器的地址,一个域名对应一个唯一的ip地址DNS:域名解析服务器80:web服务的端口号,默认是80mail/index.jsp:具体访问的资源路径和名字1.2. java平台上的web服务器 Tomcat Resin webSphere WebLogic1.3. Tomcat服务器Tomcat是一个开源的,轻量级的web服务器,一般初学者学习都是用这个服务器。Tomcat服务器的默认端口是:8080,如果该端口被其他应用程序占用,需要修改tomcat目录下的conf子目录中的
7、配置文件server.xml文件。将端口号改为其他的。 使用tomcat建立一个web程序。在tomcat目中的webapps目录下,创建一个自己的网站目录myweb。在目录中加入自己的网页index.html。文件 启动tomcat服务器在tomcat目录中的bin目录下,运行startup.bat,启动tomcat服务器 访问服务器中的资源打开浏览器在地址栏中输入http:/localhost:8080/myweb/index.html1.4. Tomcat的目录结构 /bin:存放各种平台下启动和关闭tomcat服务器的脚本文件。 /lib:包含tomcat所使用到的jar文件 /wor
8、k:tomcat把jsp生成的servlet文件放在这个目录下 /temp:临时文件夹 /logs:日志文件夹 /conf:存放各种配置文件 /webapps:web应用的默认发布目录第三章 servlet编程3.1. servlet简介servlet是运行在web服务器上的一个特殊的java类,和其他java类不一样的地方是,可以在serlvet中编写生成网页代码,在服务器端动态生成网页内容。并能够得到客户端发送过来的数据。3.2. 编写一个简单的servlet程序1. 创建一个web项目myweb2. 创建HelloWorld.java继承HttpServlet,并重写doGet方法3.
9、在web.xml中配置servlet映射4. 在浏览器中访问servlet3.3. servlet的运行机制当浏览器发送给服务器一个servlet请求时,如果servlet是第一次被调用,服务器将会创建一个servlet实例,并且运行它,如果这个servlet已经被实例化,那么服务器只会启动一个新的线程来运行它。应为默认情况下,多个线程访问同一个servlet时,有可能会去访问到共享的全局变量,因此,在使用全局变量时,应该要考虑线程同步的问题。比如使用 synchronized关键字来保护共享对象。3.4. servlet中的方法 doGet()和doPost()分别处理客户端get请求和po
10、st请求,这两个方法都有HttpRequest参数,客户端的所有数据都是存放在HttpRequest对象中的 init()方法servlet初始化时会调用这个方法,这个方法只有被调用一次 service()方法service方法用来得到客户端的请求方式,然后决定去调用doGet()还是doPost()方法。 destroy()方法在服务器销毁servlet实例的时候会调用这个方法。通常用来释放资源。比如关闭数据库连接,关闭打开的文件等。3.5. servlet生命周期serlvet生命周期就是创建servlet实例到销毁servlet实例的这一个过程。servlet的生命周期:实例化初始化服务
11、销毁 在初始化的时候会调用init()方法 服务的时候会调用service方法,service方法根据客户端的请求方式决定调用doPost ()或者doGet()方法。 在servlet实例未被销毁的时候,对于用户请求,web服务器会反复调用service()方法。而init()方法只会在第一次实例化对象的时候调用。3.6. 处理Http请求报头客户端的浏览器向服务器发送请求的时候,除了用户输入的表单数据之外,通常浏览器还会自动加上一些附加信息。服务器在响应请求的时候也会自动向客户端发送一些附加信息。我们将这些信息称为HTTP报头。HTTP:超文本传输协议,(无状态协议)断开式协议3.6.1.
12、 在servlet中取得HTTP请求报头常用的HTTP请求报头以及各自的含义accept:浏览器可以接受的MIME类型(浏览器返回文件类型)accept-Charset:浏览器可接受的字符集accept-Encoding:浏览器能够进行编码的数据编码方式accept-Language:浏览器所希望的语言种类authorization:授权信息Connection:是否需要持久连接,如果值为 “Keep-Alive”,当页面包含多个元素时,可以减少下载时间。Context-Length:请求消息正文的长度Cookie:向服务器返回服务器之前设置的Cookie值Host:初始URL中的主机和端口号
13、Referer:包含一个URL,表示的是从哪一个页面进入servlet的User-Agent:浏览器相关信息Pragma:指定“no-cache”值表示不使用浏览器缓存注意:并不是所有浏览器都会发送这些HTTP请求报头的。编写代码:如果是中文编码格式,accept显示的:* 如果不设置编码格式,才会显示所有后缀。 Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException /设置输出编码格式 resp.setContent
14、Type(text/html;charset=gb2312); /得到输出流 PrintWriter out = resp.getWriter(); out.print(浏览器可以接受的MIME类型:+req.getHeader(ACCept); out.print(是否需要持久连接:+req.getHeader(connection); out.print(向服务器返回服务器之前设置的Cookie值:+req.getHeader(Cookie); out.print(初始URL中的主机和端口号:+req.getHeader(Host); out.print(表示的是从哪一个页面进入servl
15、et的:+req.getHeader(Referer); 3.6.2. 在servlet中设置HTTP响应头设置响应头使用方法:setHeader(String headName,String headValue);以下是HTTP1.1常用的响应报头Content-Encoding:标明页面在传输过程中的编码格式Content-Type:设置servlet输出的MIME类型(浏览器返回文件类型)Content-Language:设置页面所使用的语言。例如 enExpires:标明页面过期时间,可以用来设值页面缓存时间。0为不缓存Refresh:标明浏览器自动调用最新的的页面。对于一些常用的报头
16、,可以使用更简单的方法来设置setContentType(String name):设置Content-Type报头。addCook(Cookie c) 设置CookiesendRedirect(String url):设置location报头,让servlet跳转到指定的页面。3.6.3. 使用setContentType()解决中文问题。3.6.4. 利用servlet动态生成图片 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOExcepti
17、on /设置Content-Type响应头 resp.setContentType(image/jpeg); /设置页面不缓存 resp.setHeader(Pragma, No-cache);/设置页面不适用缓存 resp.setHeader(Cache-Control, no-cache);/不适用缓存控制 resp.setDateHeader(Expires, 0);/页面过期时间0 /创建文件输出流 OutputStream os = resp.getOutputStream(); /建立指定大小的画布 BufferedImage image = new BufferedImage(8
18、0,20,BufferedImage.TYPE_INT_RGB); /创建画笔 Graphics g = image.getGraphics(); /填充指定的矩形 g.fillRect(0, 0, 80, 20); / 设置字体名称,斜体,大小 g.setFont(new Font(Times New Roman,Font.ITALIC,18); Random random = new Random(); /随机生成4个数字和颜色 for(int i=0;i4;i+) /产生10以内的随机数 String sRand=String.valueOf(random.nextInt(10); /设
19、置随机颜色 g.setColor(new Color(random.nextInt(110),random.nextInt(110),random.nextInt(110); /绘制 g.drawString(sRand, 20*i+6,16); /释放资源 g.dispose(); /输出图像到页面 ImageIO.write(image, JPEG, os); 3.6.5. 在servlet中跳转到其他页面 跳转分为:内部跳转和外部跳转内部跳转地址栏不会发生变化,外部跳转地址栏会发生变化内部跳转可以将request对象的值传递到下一个页面,在跳转后,当前页面无法向浏览器输出任何东西3.7.
20、 利用servlet读取HTML数据1) 创建reg.html文件,编写注册页面,包含基本的表单元素2) 创建RegServlet.java,读取表单提交的数据,并显示。3) 在浏览器中访问RegServlet例子:实现用户注册和登录3.8. 处理Cookie3.8.1. 了解Cookiecookie就是服务器在客户端存放的一些信息。http协议是一个无状态的协议,当浏览器获得他所请求的资源后,浏览器和服务器就失去了联系,当浏览器下一次去请求服务器的时候,服务器只把他当成一个新的连接。服务器也不知道浏览器是否以前访问过。要想建立服务器对浏览器的追踪,就可以使用Cookie。3.8.2. 在se
21、rvlet中处理Cookiecookie中的几个方法: getMaxAge():读取Cookie的过期时间 setMaxAge():设置Cookie的过期时间,如果是0,表示删除cookie,负值表示浏览器关闭就删除cookie,正数表示多少秒后删除,单位是秒 getValue():读取Cookie的value值 setValue():设置Cookie的value值例子:3.9. 会话跟踪3.9.1. 会话跟踪的意义和用途Cookie只能保存文本,不能保存对象Cookie可以在客户端被禁用Cookie不安全基于以上的问题,sun公司使用了一种替代Cookie的方法:sessionsession
22、是存放在服务器上的一块内存空间,默认销毁时间是30分钟,客户端通过URL地址重写的方式将session的id进行传递。达到服务器跟踪浏览器的目的。3.9.2. 在servlet中使用sessionsession常用的方法: getAttribute(String name):根据属性名称得到属性值 setAttribute(String name,Object value):在session中存值 removeAttribute(String name):移除一个属性值 invalidate():销毁session getMaxInactiveInterval():得到session过期时间,
23、单位是秒 setMaxInactiveInterval() :设置session过期时间session是浏览器为客户端,一个浏览器对应一个sessinon,session过期时间是以最有一个访问服务器开始算。例子:3.10. ServletContext接口ServletContext(servlet上下文 通常称为 公共区域),在服务器启动的时候就已经被创建。同一个项目中的所有jsp和servlet共用这个容器中的属性。getAttribute(String name):根据属性名称得到属性值 setAttribute(String name,Object value):在session中存
24、值 removeAttribute(String name):移除一个属性值例子:小项目:聊天室第四章 jsp 编程初步4.1. 编写一个简单的jsp在jsp页面上输出当前时间4.2. jsp基本架构4.2.1. jsp注释!-这个注释能在客户端看见 - %-这个注释不能在客户端看见 -%4.2.2. jsp表达式4.2.3. jsp sriptlet(jsp小脚本)4.3. jsp和servlet的关系jsp转译成servlet第五章 jsp指令和动作5.1. jsp指令jsp指令格式:5.1.1. page指令 contentType=application/vnd.ms-excel 指定
25、网页以excel格式打开 errorPage5.1.2. include指令包含5.2. jsp动作5.2.1. include动作include指令是将源文件合并之后,再编译成一个servletinclude动作是将源文件分别编译成servlet,然后将最后生成的html合并。5.2.2. forword动作第六章 jsp隐式对象6.1. out6.2. response6.3. request6.4. session6.5. application6.6. exception第七章 javabean7.1. JavaBean的规范 必须放在一个包里面 必须有一个无参的构造方法 所有的属性不
26、能是public的,属性的首字母必须小写 通过getter和setter方法来读取或者设置属性的值,getter和setter方法的原则是:get/set+变量名首字母大写。 如果是Boolean类型,getter方法必须写成is+变量名首字母大写,setter方法不变7.2. 7.3. 7.4. 7.5. 将bean属性和request关联7.6. MVC模式第八章 EL表达式EL 表达式只能从4个范围对象中取出值,jsp表达式 取java变量EL表达式,取值的时候,如果没有指定范围,默认从范围小的开始。8.1. EL访问4个范围对象 8.2. EL访问JavaBean$name8.3. E
27、L访问集合对象8.4. EL隐式对象 pageScoperequestScopesessionScopeapplicationScopeparam:表单提交的数据8.5. EL运算符8.5.1. 算术运算符+-*/ div% mod8.5.2. 关系运算符= eq!= ne gt= ge8.5.3. 逻辑运算符& and| or! not8.5.4. empty判断是否为空$empty null$empty “”以上两个将得到结果true第九章 Filter和Listener9.1. Filter filter1 com.web.Filter1 filter1 /index.jsp filter1 /showInfo.jsp 过滤后缀 filter1 *.jsp 过滤文件夹 filter1 /back/* 按filter在xml中写的顺序执行9.2. Linstener9.2.1. ServletContextListener主要用于系统初始化就需要加载的数据,比如得到项目路径,用来将文件写入指定目录9.2.2. ServletContextAttributeListener得到属性的keySystem.out.println(arg0.getName(); 得到属性的值 System.out.println(arg0.getValue();9
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1