旅游网

9 篇文章 0 订阅

旅游网

互联网的项目为了访问速度快一般直接使用html进行页面的展示,而内部的OA等可以使用jsp,访问人员较少,jsp不会太多影响性能

一.首先进行一个架构及使用的技术的分析,三层架构

web层
1.servlet前端控制器
2.filter进行编码的过滤 过滤器
3.BeanUtils将查询的数据封装成对象 封装工具
4.jackson 将对象系列化成Json字符串返回给前端 Json序列化工具
5.html视图

service层
1.redis作为数据的缓存 NOSQL 内存数据库
2.Jedis操作redis java操作redis的客户端
3.javamail java发送邮件的工具

dao层
1.druid 数据库连接池
2.jdbctemplate jdbc的操作工具
3.mysql 数据库

二.创建数据库及表

三.完成 注册 登录 及退出功能
1.分析注册功能

jQuery中form表单对象有一个方法可以将表单的内容序列化成key/value型的字符串 serialize()

jdbcTemplate查询一个结果 queryForObject(sql,new BeanPropertyRowMapper(X.class),parameter…) 它需要的是一行数据,如果出现多行,或者没有查到都会抛异常的.这块一定要处理一下此异常

为什么要进行邮箱的激活?因为要保证用户的邮箱是可用的,另外以后还可以向用户的邮箱发送推广的邮件 发邮件都有相关的开源的工具类,不需要我们去写

$(form).submit() 提交表单的意思 $(form).submit(function(){}) 如果function的返回值是false则表单不提交 如果function的返回值是TRUE或者没有,则表单提交

整个用户注册的过程中发生了n多的问题,现在总结一下
1.jquery表单对象.submit() 是提交的意思 如果表单内有function,且为ajax访问,那么相当于满足条件,ajax已经提交,那么表单的submit就不用再提交.那么内部的function最终返回的结果是false,一定是false,因为这个submit()只起到了触发ajax的作用,别的作用没有了,一定不能让它再提价,所以返回的结果肯定是false.此处迷惑了很久
2.既然后台的对象要传到前端,又不能使用jsp的EL表达式从域中取对象及属性,那么只能后台往前端发送Json字符串了,这样前端就可以操作js对象的属性了(json即js对象) 如data.flag 这样操作.
切记一定要设置响应头 setContentType(“application/Json;charset=utf-8”)
3.后台不再管它页面跳转的事情了,返回结果对象,前端自行判断跳不跳转
4.过程中的一些return一定要注意,看是不是会少东西,如后台验证码错误了,return了,但最终每往前台发送字符串.还有前台的,返回验证码错误,return了,那么submit()无返回值,又开始提交了.
5.过程中的细节,注意,字母的错误,变量的错误等等,一定要做到一步一测,避免毫无头绪的改bug

一个form表单如果没有设置action的话,默认的提交地址是自己
在进行html标签拼接的时候,一定注意引号的位置,否则会出问题,中间引入变量的话先把语句写好,然后在变量左右两处这样写 “+变量+”

有时候前端的一些界面不管用了,不是代码有问题是应该清一下缓存了 查看源码发现是访问缓存了304

最基础的servlet都是一个功能一个servlet,这样做简直是太多了,能不能一个模块一个servlet呢?用户模块一个servlet,各种功能都是该servlet下的方法. 数据库中一张表对应一个servlet

servlet中打印到控制台出现中文乱码,在运行时加这样的参数 -Dfile.encoding=gb2312

方法的分发,理论上实现servlet接口,或者继承哪个servlet的实现类都可以,但是我们需要获得请求路径,就需要使用httpServletRequest的getUri方法,所有创建的baseServlet必须继承httpservlet

注意事项:
1.分发方法时注意分发的方法要是public修饰的,既然要外界访问那么就用public修饰.不用获得所有方法,并暴力反射,因为受保护的方法就是不想被外界访问.
2.分发方法后,原来的相对路径都要改一改了,因为原来访问资源都是在虚拟路径下的,相对路径直接写访问资源的路径及文件名即可,但是分发方法后,文件还是在虚拟路径下,但是进行重定向的地址却在虚拟路径的模块路径下,所以要改为…/访问文件名
3.注意细节,大小写问题等

location.search可以获取到路径?及后面的内容,做一个字符串的切割就可以得到参数内容了 这不是一个方法,而是一个属性,获得的是问号及参数部分的内容

JavaScript:void(0) 就是什么都不干的意思

页面显示完毕后,怎么回到开始 window.scrollTo(0,0) 滚动到初始位置

注意在页面拼接的过程中,使用空字符串进行拼接.因为每次执行ajax字符串都是从空串开始的.但是如果使用的是增加元素等方法,只要页面不加载,发送ajax是不会使内容初始化的,会导致页面内容越来越多

JavaScript中只有length属性,没有size方法,因为它里面只有数组,并且是长度可变的,没有集合的概念

jdbcTemplate.queryForObject() 里面传递的参数只能是基本类型的包装类,或者是BeanPropertyRowMapper(T.class) 返回的是一个包装类的对象,只是一个,多个会报错,没有也会报错

pageBean的封装在service层进行,而不是在web层,注意每层的作用,分工要明确

在事件上定义方法,参数直接拼接字符串就可以了,不用在定义全局变量了

动态生成的元素,通过事件添加class属性是不起作用的,可以用笨方法,if else判断,直接定义的字符串中含有class是可以执行的.原因后续再查

引用的头页面和本页面之间是不通的,定义的方法变量等都是不能共享的,切记啊

字符串cid=和为null的变量拼接会得到cid=null 获取参数的话就会得到null

凡是从地址栏获取的汉字都要进行URI解码,否则得不到相应的东西

通配符?必须是?号,如果是模糊查询的话,应该在实际参数两边拼接百分号

字符串的拼接问题,外层的用单引号,属性用双引号,方法内参数的用单引号

模糊分页查询的流程:
1.首先是在首页点查询按钮,给此按钮绑定单击事件,单击后获取查询框的值以及当前页的cid,跳转到路线页,携带cid和value
2.因为value可能为中文,所以在路线页获取到此参数后,参数非空要进行URLdecoder的解码
3.修改原来的前台代码,其实就是在分页查询的基础上增加一个参数,但是此参数为字符串,所以获得的值两旁需要加单引号,但是由于它又是个变量,所以需要字符串拼接,又因为很多单引号,所以需要进行转义,此处整了一天.
4.后端代码的处理,多个参数可用可不用的情况下使用数组,用就加进数组里,不用就不加,最后数组记得转成数组,可变参数的本质是数组啊.
5.前台的代码不要乱定义变量,就使用可以引用的变量,不然后出大问题的,各种没有值等等.

页面一加载执行的都是静态的资源,及静态资源的效果,而ajax是异步请求的,它的数据回来后才完成动态的效果,所以在ajax请求的方法内部需要再次调用资源的效果,否则效果先执行了,而后加载的数据就没有效果了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值