韩顺平servlet视频教程笔记(8讲)
随笔- 2 文章- 0 评论- 0
韩顺平servlet视频教程笔记(8讲)
韩顺平servlet视频教程笔记(8讲) 1.Tomcat的安装和使用 2.如何开发servlet 3.HttpServletRequest、HttpServletResponse 4.Cookie的原理和使用、HttpSession的原理和使用 5.Servletcontext的原理和使用 6.用户的增加、删除、修改 7.如何做一个网站计数器
第一讲: 1.完成一个用户管理系统来讲解Servlet,是一个纯servlet写的,很好的练习servlet技术的案例 项目有两类人员:管理员:可以对用户进行增加、删除、修改、查询 普通用户:可以查询用户 同时完成:分页、网站计数器、保存用户访问网站的习惯、网站用户发在线统计、追踪用户的来源
2.动态网页技术的发展 HTML:静态网页技术 cgi:早期的动态网页技术,效率比较低,现在主要用在linux/nnix操作系统中 asp:html+javascript+com组件。功能扩展比较困难,安全性比较低,实现企业级的功能困难。 Php:(php+mysql+linux+apache)跨平台性好,多种数据库支持,效率高,安全性好,免费使用。安装复杂、缺少企业级的支持 Jsp:(jsp=html+java片段+jsp语法+js)跨平台性好,多种开发工具支持,复杂度高,对机器配置要求高。
3.b/s与c/s的比较 b/s:开发成本低、管理维护简单、产品升级便利、使用方便。但是安全性不足 c/s:便于管理用户
4.Servlet介绍 用java语言编写,学习jsp的基础,功能强大,是由服务器调用和执行的 Servlet/jsp开发工具: 普通的文本编辑器:notepad,uedit32 继承开发工具:jcreateor,jbulider,eclipse,editplus,netbean 运行环境: 浏览器:绝大部分浏览器 IE、netscapse,firefox,Maxthon Web服务器:Tomcat, Bea weblogic, Ibm websphere, Rsin 数据库:多数主流数据库
5.Tomcat的安装和介绍 Tomcat三个功能:1.web服务器 2.jsp容器 3.servlet的容器 下载tomcat,然后安装配置环境变量。 在环境变量添加如下:JAVA_HOME=你的jdk主目录 TOMCAT_HOME=你的Tomcat的主目录 注意:添加环境变量时,请注意字母的大小写。 启动:在Tomcat的bin目录下,双击startup.bat文件,也可以从所有程序中启动。 访问:在浏览器地址栏中输入:http://localhost:8080即可,能看到一个小猫就成功了。可以查看很多信息。
第二讲: 1.servlet的体系结构 javax.servlet.*;
2.servlet的网络拓扑结构 图片保存在桌面。
插入图片
3.servlet的几个实例 开发servlet有三种方法:实现servlet接口、继承GenericServet、继承HttpServlet 注意:使用eclipse开发非常容易,但是隐藏了太多的细节。为了交接servlet开发的底层机制和运行原理,先使用Jcreator开发,然后使用eclipse开发。
例一:实现servlet接口(引入servlet的生命周期) servlet开发流程: 插入图片 1)在Tomcat\Webapps下建立WEB-INF文件夹,写一个文件(web.xml:该网站的配置信息,可以从别的目录下复制一个)建立一个classes的子文件夹,也可以从别的目录ROOT下复制 2)开发servlet(引入servlet-api.jar) 3) 部署你的servlet 在web.xml文件中,添加如下代码: 4)启动Tomcat,访问你的servlet,在浏览器的地址栏中输入:http://127.0.0.1:8080/myWebsite/hello,回车就可以看到输出
插入图片
例二:通过继承GenericServlet开发servlet 通过GenericServlet开发,只需重写service方法,相对是简单的。同样实现一个hello,world的案例,注意两种方法的不同
例三:通过HttpServlet开发servlet 通过HttPServlet去开发servlet,需要重写doGet,doPost方法。这是目前使用最多的一种用法。同样实现一个hello,HttpServlet的程序。
表单调教数据get请求和post请求的区别 1.从安全性看get<post get提交的数据会在浏览器的地址栏显示 2.从提交的内容看get<post get提交的数据不恩呢个大于2K,二post提交的数据理论上不够限制,但是实际编程中建议不要大于64K。 3.从请求响应的速度看:get>post,get要求服务器立即处理请求,而post请求可能形成一个队列请求。
注意事项:如果你测试时不能输出而是出现这个错误,The requested resource (/HelloGeneric) is not available.那么去Http://localhost:8080,在这重载一下就可以了(reload)。 4.servlet的几个生命周期
5.一个简单的用户登录系统
第三讲: 1.同一个用户的不同页面如何共享数据 cookie(小甜饼)技术、sendRedirect()转向、隐藏表单提交、session技术 2.servlet中如何操作数据库 3.用户登录系统功能改进
什么是cookie:服务器在客户端保存用户的信息,比如登录名、密码等。这些信息数据量并不大,服务器端在需要的时候可以从客户端读取,一般保存在客户端的d:\Documents and Settings目录下,可以通过右边的图来理解。 cookie的用途:保存用户名、密码,在一定时间不用重新登录;记录用户的使用喜好(比如记录网页的背景颜色);网站的个性化,比如定制网站的服务和内容。
sendRedirect:sendRedirect("welcome?name=songshichao"); 注意:优点是传送速度比较快,缺点是只能传送字符串,而不能传送一个对象。servlet url名和变量之间有?号;要传递两个以上的值,他们之间要用&号分开,如: sendRedirect:sendRedirect("welcome?name=songshichao & pass=ok"); 如果传递的是中文,你将得到乱码,需要处理一下。
隐藏表单 这是最常见的一种方式,也是最简单的,但是有时该技巧非常管用。 <form action=login> <input type=hidden name=a value=b> <input type=hidden name="+text+" value=c> (String text="abc") </form> 使用的时候:String str=req.getParas(a); 通过隐藏表单也可以传递一些页面信息,比如用户名和密码。
session:当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为该浏览器分配一个空间,该空间被浏览器独占。这个空间就是session空间,该空间的数据默认存储30分钟,你也可以修改。 session用来做什么: 网上商城的购物车、 保存登录用户的信息、 将某些数据放入到session中,共同一用户的各个页面调用; 防止用户非法登录到某个页面。 如何使用Session: 1.得到Session HttpSession hs=request.getSession(true); 2.向Session添加属性 hs.setAttribute(String name,Object val); 3.从session得到某个属性 String name=hs.getAttribute(String name); 4.从session删除掉某个属性 hs.removeAttribute(String name); session注意事项: 1.session中属性存在的默认时间是30min,可以修改这个时间(1.修改web.xml 2.在程序中去修改) 2.30分钟是用户的发呆时间,不是累计时间。 3.当某个浏览器访问某个网站时,服务器会分配一个唯一的session id,并以此来区分不同的浏览器 4.因为session的各个属性占用服务器的内存,所以软件公司都是在迫不得已的情况才使用。
Servlet中操作数据库 登录系统中,验证用户时,增加到数据库中验证用户的功能。 在servlet中和在java中操作数据库中式完全一样的。 特别要注意sql注入漏洞。
注意事项: 需要将连接数据库的3个jar包,拷贝到tomcat服务器 具体的有两种方法: 1)将.jar包拷贝到%tomcat%/commons/lib文件夹 2)或者在你的webapps目录的WEB-INF文件夹下建立一个lib文件夹,然后把三个jar包拷贝到Lib文件夹下
两种方法的区别: 第一种 所有 webapps都可以使用3个jar【公用lib库】 第二种 只有放入jar的那个webapps能使用jar【独用lib库】
servlet第四讲 1.如何在servlet中显示图片 2.分页技术讲解 3.用户登录系统功能改进
1.在servlet中显示图片 很简单。在你的webApps,建立一个文件夹,比如imags,然后将图片拷贝到文件夹下,在servlet中添加:<img src="/imgs/wang.jpg"/>即可。 应用实例:在welcome页面显示左边的图片。
2.分页技术 分页技术是任何一个网站都要使用的技术。因此学习B/S开发一定要学会分页技术。 分页方法: 分页的算法:先要定义四个变量,有各自的用途 int pageSize:每页显示多少记录 int pageNow: 希望显示第几页 int pageCount:一共有多少页 int rowCount:一共有多少条记录
说明: pageSize是指定的pageNow是用户选择的;rowCount是从表中查询得到的;pageCount是计算出来的,该计算式为: if(rowCount%pageSize==0) { pageCount=rowCount/pageSize; } else { pageCount=rowCount/pageSize+1; }
例子:select *from users where userId between 3 and 5; 改进:select top 3 * from users where userId not in(select top 3 userId from users)
增加分页显示用户信息。
插入图片
分页方法(测试效率) 当表的记录超过100万条记录时,它的反也就很慢,原因是它查询的结果是整张表。实际的项目中,这种问题很常见。 为了说明问题,我们可以做一个实验,将表的记录增加到100万,看看会有怎么样的情况发生。 增加表的记录的语句是:insert into 表名(字段1,2...)select 字段1,2...from 表名 增加完后可以测试一下。
第五讲 Cookie 1.Cookie的讲解和使用 1)CooKie有点象一张表,分两列,一个是名字,一个是值,数据类型都是String 2) 如何创建一个Cookie(在服务器创建的) Cookie c=new Cookie(String name,String val); 3) 如何将一个Cookie添加到客户端 response.addCookie(c); 4)如何读取Cookie(从客户端读到服务器) request.getCookies();
Cookie的其它说明 1.可以通过IE-工具-internet选项-隐私-高级来启用或是禁用cookie 2.由于cookie的信息是保存在客户端的,因此安全性不高 3.cookie信息的声明周期可以在创建时设置。从创建的那刻起,就开始计时,到时该cookie就无效了。 4.关于cookie其它知识,以后讲,因为cookie对b/s编程时非常重要的。
实例讲解:保存用户名和密码,一定时间内不用重新登录
2.Cookie和Session的比较 存在的位置:Cookie保存在客户端,Session保存在服务器端 安全性:Session强于Cookie 网络传输量:Cookie通过网络在客户端和服务器端传输,而Session不需要传输 生命周期:cookie的生命周期是累计的,从创建开始就开始计时,20分钟后生命周期结束;Session的生命周期是间隔的,从创建开始计时如果在20分钟,没有访问Session,那么Session信息失效。 关机会造成Session的生命周期结束,但是对Cookie没有任何影响
3.网站框架的改进 1)将界面和业务逻辑放在一起(model1模式)在LoginIn.java文件和Welcome.java文件中都去操作了数据库,他们的逻辑相似,有重复代码 2)没有清晰地层次关系,显得很乱 3)代码一点也不优雅,可读性差,可维护性差。
改进:1.进行分层:将model1模式改为mv模式;2.将常用代码,比如连接数据库,封装到类中。
4.用户登录系统功能改进
Servlet第六讲 1.ServletContext的讲解和使用 2.Servlet操作文件 3.增加网站计数器
1.ServletContext的讲解和使用 把ServletContext和Cookie、Session做比较。把它想象成一个公用的空间,可以被所有的客户访问(类似于.net中的Application) 2.使用ServletContext 1)如何得到ServletContext实例 this.getServletContext(); 2)可以把它想象成一张表,和Session相似,每一行就是一个属性 添加属性:setAttribute(String name,Object ob); 得到值:getAttribute(String name) 返回Object 删除属性: removeAttribute(String name); 3.生命周期 ServletContext的生命周期从创建开始,到服务器关闭而结束。 4.注意事项:存在ServletContext中的数据会长时间保存在服务器,会占用内存。建议不要向ServletContext中添加过大的数据。
Servlet中操作文件:Servlet就是一个java文件,所以和JAVA操作文件和普通Java文件一样。
使用ServletContext实例 在网站开发中,很多功能需要使用ServletContext,比如:网站计数器、网站在线用户提示、简单的聊天系统 总之,如果涉及到不同用户共享数据,而这些数据量不是很大,同时又不希望写入到数据库中,我们就可以使用Servletcontext来实现。
网站计数器:统计网页被点击的次数 怎么叫有效点击率,不同网站不同: 1.只要访问过该网页,就算是一次,刷新一次也算。 2.不同的ip访问该页面,算一次有效点击(同一个IP在一天内算一次) 3.用户推出网站,再次访问也算一次
实现网站计数器,有以下几种方案: 1.当某个用户访问该网页时,就在数据库中增加一次(比如有张统计表) 2.设置一个静态变量,当服务器启动时,可以通过文件或者表初始化该变量,当服务器关闭时,将变量的值写入文件或数据库中 3.使用ServletContext,实现和第二种相似,我们重点讲解。 可以在init()方法中初始化servletcontext中属性times对应的初始值。可以在destory()方法中,一次性的将servletcontext中属性times对应的值,写入文件中,这样就可以减少对文件的操作。
总结:使用servletcontext,理解servlet的生命周期,增加网站计数器、显示用户的IP、主机名信息。
第七讲 一 美化管理系统界面,完善页面,这个参考.doc文档进行 给大家推荐两个常用软件:一个是得到颜色配置的软件(playcolor);另一个是制作网页logo的软件(photoshop、Logo制作工具)
二 管理系统功能改进 增加对用户的查找、增加、删除和修改的功能,这样我们这个用户登录系统就成了一个用户管理系统,而且是完全用servlet实现的。颜色交替、增加用户头像、指定跳转到某页(需要对servlet和html表单提交原理清楚)、
第八讲 tomcat的配置 1.如何修改tomcat的端口(1~65535 1-1024端口被使用了。命令行中输入 netstat -an 可以查看正在运行的端口) 某些情况下,可能需要修改tomcat监听的端口8080,比如:需要启动两份tomcat服务器、某个服务占用了8080端口 修改tomcat的端口的方法:修改tomcat/conf/server.xml文件中的port=8080数据修改成你要的端口号即可。
2.如何设置虚拟目录 我们网站站点都是放在默认的目录下tomcat/webapps下,但是某些情况下,可能需要把站点放在别的目录下,比如:tomcat的磁盘空间不够了、为了统一管理,放在某个特定的目录下。 打开tomcat安装目录下的conf子目录,修改其中的server.xml文件,在适当的位置添加如下信息:<Context path="/yoursite(你的站点名,就是主文件名)" docBase="c:\mysite(站点存放的磁盘目录)" debug="0"/>
3.如何给tomcat的管理员设置密码 在tomcat安装的目录下的tomcat-users.xml文件中可以给管理员设置密码,密码设置,可以防止非法用户远程登录到tomcat. 在tomcat-users.xml文件的适当位置,给管理员设置密码。 <user username="songshichao" password="1988529" roles="admin,manager"/> 在默认情况下,管理员的密码是空密码,不法分子可能远程发布一个站点,并在某个servlet中加入一些可怕的语句(比如重启、关机) 利用密码为空搞破坏过程: 插入图片。。。。。。。。。。。。。。。。。
4.如何设置数据源和连接池 原理图:
两种方法配置:通过修改%tomcat_home%/conf/server.xml文件,指定的位置添加如下代码即可。 代码如图片所示:
通过tomcat管理界面来配置:在登录界面的第二个,不过需要自己下载安装,默认是不安装的。
如何使用:添加两个包:import javax.sql.*; import javax.naming.*; 插入图片
public Connection getConn() { try{ //创建一个上下文环境 Context con=new javax.naming.InitialContext(); //通过con得到数据源 DataSouce ds=(DataSource)con.lookup("java:comp/env/shunping"); ct=ds.getConnection(); System.out.println("使用连接池方式"); }catch(Exception e){ e.printStackTrace(); } return con; }
浙公网安备 33010602011771号