韩顺平jsp学习笔记jspu j2ee核心13种技术:程序员必须掌握的技术:java,servlet,jsp。
13种技术规范.u j2ee程序员修炼成精法门u jsp 版本的用户管理系统:将servlet版本改为jsp版本,只使用jsp技术完成(modle1模式开发)并且在后面可通过jsp版的用户管理系统的改写,非常自然过渡到mv设计模式,更进一步到mvc设计模式开发工具:myeclipseu jsp概述:jsp是servlet技术的补充,访问jsp的过程:如果是第一次访问,jsp文件被服务器翻译成一个对应的java文件(servlet),然后,再被编译成.class文件并加载到内存中。
如果是以后访问jsp,那就直接调用内存中的jsp实例,所以,第一次访问jsp慢,后面访问jsp的速度就会变快了。
(hello.jsp来说明运行原理:tomcat下的work下有将jsp转换为servlet的代码)1. 为什么出现:程序员在开发过程中,发现servlet做界面非常不好,jsp对servlet的补充(对界面的补充,jsp界面好做)2. jsp=html+java片段+jsp标签(语法)+javascript(css):综合3. jsp功能的强大是因为可以与javabean结合使用(即:jsp作前台(界面),javabean作后台(逻辑层))。
4. Jsp是什么:1.jsp运行在服务器,2.jsp(java server page)3。
Jsp基础是servlet(相当于对servlet的包装)4.jsp 是综合技术:一个公式:jsp=html+java代码+jsp标签+javascript(css) 比较综合5.jsp无需配置,直接使用,如果你修改了jsp文件,不需要重新reloadweb应用6.jsp如何访问:http://ip:8088/web应用名.jsp路径u jsp的概述:元素1. 指令元素2. 脚本元素3. 动作元素u jsp与servlet的关系:1. jsp与servlet是对应关系2. jsp是以servlet为基础的u 编写一个计算器的实例:1. 表单提交处理的jsp页面为:<form action=”chuli.jsp”>2. 接受用户传来的数据的函数为request函数,方法为getParameter(“name”),返回类型为String3. 对于jsp页面报错的行数为tomcat中work里的对应的java代码中的错误行数4. jsp可以通过javascript代码,对数据合法性进行验证,防止用户空提交5. 可以通过Math.round(num) != num判断一个变量是否是一个数,当经过math.round处理后不相等,则num不是一个数u 在同一jsp页面提交和接受数据1.jsp中表达式标签:<%= %>u 迅速上手myeclipse工具-----》完成一个小案例:建立一个web工程(站点),创建一个jsp文件myHello.jsp,文件输出hello,配置tomcat,jdk,并发布工程(将站点放在tomcat 上),在浏览器中访问myHello.jspu Model1模式1. javaee开发有几个重要模式:Model1模式,Model2模式,mvc模式2. model1模式基础是jsp文件,由一些相互独立的jsp 文件,和其他的一些java class组成(不是必须的),jsp从httprequest中获得所需要数据,处理业务逻辑,然后通过response返回前段浏览器3. model1模式可分为model1(纯jsp)和model1(jsp+java class)4. model1缺点:表现层和业务逻辑层混合在一起(乱);开发中不利于多人开发协同;不利于后期维护,不好查看。
model模式优点:简单,开发速度快;适合开发小项目。
轻巧自由。
u 简单的用户登录界面:迅速掌握eclipse开发工具,使用纯jsp技术的model1学习到:如何在jsp页面间跳转,如何操作数据库,如何在jsp中显示数据/分页1. 通过response.sendRedirect来实现多个页面信息共享,注意在loginCl页面中的response.sendRedirect("wel.jsp?user="+u)与wel页面中的<%=request.getParameter("user") %>一定要相同2. 加载数据库:a.加载sql server://1.加载驱动Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver ”);//2.创建连接Connectionct=DriverMananger.getConnection(“jdbc:Microsoft:sqlserver://1 27.0.0.1:1433;databaseName=spdb”,”root”,”123”);b.加载mysql//到数据库中区验证//1.加载数据库驱动Class.forName("com.mysql.jdbc.Driver");//2.得到连接Connection ct =DriverManager.getConnection("jdbc:mysql://localhost:3306/spd b","root","123");//3.创建statementStatement sm = ct.createStatement();//4.查询ResultSet rs=sm.executeQuery("selectpasswd from users where username='"+u+"'");3. 如何在myeclipse中引入jar包:点击webroot下的web-inf中的lib,右键import,选择file system,选择jar包路径导入,成功后会在referenced libraries 中出现一个jar包的小奶瓶。
u 分页技术1. 分页算法:四个变量:int pageSize:每页显示几条记录(程序指定的);int pageNow希望显示第几页(用户指定的)int pageCount:一共多少页(是计算出来的一共多少页)int rowCount:一共多少记录(一共有多少条记录从表中查询得到的)if(rowCount%pageSize==0){pageCount=rowCount/pageSize;}else{pageCount=rowCount/pageSize+1;}2. 为防止因用户删除造成的查询页数缺失,我们不采用:select * from users where userIdbetween 7 and 9, 而是采用:select top pageSize 字段名列表from 表名where id not in ( select top pageSize *(pageNow-1) id from 表名)如:select top 3 * from users whereuserId not in ( select top 3 userId from users) 显示第二页但请注意这是在sql server中可以使用的top查询语句,在mysql中并不可以用mysql不支持select top n的语法,应该用这个替换:select * from tablename order by orderfielddesc/asc limit position,counter;position 指示从哪里开始查询,如果是0则是从头开始,counter 表示查询的个数取前15条:select * from tablename order by orderfielddesc/asc limit 0,15mysql中的分页实现:select *from tableName where 条件limit (当前页码-1)*页面容量, 页面容量如:select * from userswhere userId limit 3, 3"select* from users where userId limit "+((pageNow-1)*pageSize)+","+pageSize3. 请注意,一定要将ResultSet rs.next(),否则rs将指向表头,而非第一行数据4. 请注意,在同一个jsp页面中,java片段中声明的变量可以在下面的片段中使用5. 当数据表较大时,如何解决分页速度的问题表数据的自我复制,这个可以去看看你的项目操作表的效率如何insert into 表名(字段1,2、、、)select字段1,2、、、from表名如:insert into users(username,passwd,email,grade) select username,passwd,email,grade from usersu 用户登录系统框架改进:通过对model1纯jsp开发模式反思,演变为model1结合javaclass开发模式:1. 不合理的地方:loginCl与wel页面都用了数据库,有重复代码;整个框架没有清晰的层次关系;代码不优雅,可读性差,可维护差。
2. 改进:a) 分层:界面层(jsp)与业务逻辑层(java class),即纯jsp转为model1(jsp+java class)b) 将常用代码封装到类中,使得代码清晰c) 为什么userbeancl中分页处理返回值为arraylist而不是resultSet:1.如果resultSet,那么使用时,不能关闭与该resultSet相关联的数据库连接等资源而造成资源的浪费2.如果返回resultSet,我们只能用rs.getint(),rs.getString()来得到结果,代码可读性不好,不方便维护3.先将rs中每条记录封装成一个userbean对象ub;再将userbean对象ub放入arraylist集合中便于管理u 用户登录系统再改进mvc1. login.jsp输入数据,logincl.jsp通过调用java class处理数据,wel.jsp显示数据,虽然看起来不错,但有缺点如下:jsp技术主要用来做界面的,但logincl.jsp用来调用javaclass,完成用户验证,不好;wel.jsp用于显示用户信息,但还调用了java class,不利于分工开发;servlet技术处理页面跳转方便,不该放弃使用2. mvc模型:m(model模型),v(view视图),c(control 控制器),mvc强制性地使用应用程序的输入,处理和输出分开,使用mvc,应用程序被分成三个核心部件:模型(java class来做,或java bean,ejb)视图(jsp来做)控制器(servlet来做),各自处理自己的任务,利于分工开发。