2016/7/28
1、遇到的问题:一个大jsp包含一个小jsp,小jsp要用到外面大jsp中用js提取到的属性值,本想用参数方式把js提取到的属性值传递给小jsp,但是Js不能直接给JSP赋值。js是客户端的代码,jsp先执行,js后执行,js是不能给<pg:param name="now_selected" value=""/>赋值的。因为jsp是在先服务器上执行,服务器并不解释其中的静态代码,而是将它们原样输出到客户端。所以在javascript起作用之前jsp已经执行完毕了。
服务器端得到客户端值的方法是提交页面 (Session是运行在服务器端的。而cookie是运行在客户端的)
看到网上的一种常用方法是:
一般是在表单中用一个的隐藏表单元素,在脚本中将js变量值赋给它,然后在后台获取隐藏标签的值。参考http://bbs.csdn.net/topics/340076977
用这种方法试了一下,效果却是:小jsp有时取得到值,有时取不到,不稳定,具体原因也不知道。
最后用了这种方法:因为小的jsp是包含在大jsp中,也就是同一个页面中,干脆就用js直接赋值给小jsp,不采用传值的方式,直接赋值。
2016/7/29
2、今天看了servlet,有个疑惑:jsp和servlet都是java代码,他们可以实现一样的东西,那我什么时候用jsp,什么时候用sevlet???
3、把input设置为disabled="disabled",传值过去后那边jsp接收不到这个值的,可以用readonly="readonly"
4、不可以在form标签里面放置模态框的按钮,不然模态框出不来,页面会闪烁。
5、Jsp之间不能传input type=”hidden”,接收不到
2016/7/30
2、错误: java.lang.NoClassDefFoundError: org/apache/jsp/Index_jsp(wrong name: org/apache/jsp/index_jsp)
解决办法:把tomcat/work中对应的文件删除,重新运行就OK了。不想找的话就直接把work下的所有文件一起删除就可以了。
3、问题:使用RequestDispatcher rd = request.getRequestDispatcher跳转页面的时候,css样式,图片以及js均不会加载,
原因:当在jsp中引入css时,如果其相对路径相对于当前jsp文件的,而在一个和这个jsp的路径不一样的servlet中forward这个jsp时,就会发现这个css样式根本没有起作用。这是因为在servlet中转发时css的路径就是相对于这个servlet的相对路径而非jsp的路径了。
解决方法:页面中引用样式和其它资源的时候,尽量不要用相对路径,因为“当前路径”这个概念在J2EE中是不稳定的。
所以最好都是绝对路径,类似于:
<% String cp = request.getContextPath();%> 这句放JSP页面开头
<img src="<%=cp%>/images/xxoo.jpg" /> 后面都类似这么写
其中前面的<% %>这段文字主要是得到你应用发布的Context名称
4、request.getRequestDispatcher("").forward()中文乱码问题
解决方案一:
不使用PrintWriterout=response.getWriter();,把它注释掉。
解决方案二:
在使用PrintWriterout=response.getWriter();之前必须先设置编码:response.setContentType("text/html;charset=utf-8");或response.setCharacterEncoding("UTF-8");,否会出现中文乱码。
2016/7/31
1、get:不能直接使用js的dom API。用get(0)之后获取到对象的dom对象后就可以使用对应的dom API(http://www.php100.com/html/program/jquery/2013/0905/5839.html)
3、问题:bind确实能绑定事件,但是那是相对于固定的html标签来说,当页面内容属于动态加载的时候,bind事件就存在一个bug, 只能bind一次,当你第二次触发事件的时候就没用了
jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定。在1.7版本以前使用live。但是在1.8版本以后推荐使用on。
但是试了都没用,Bind、On、Delegate、Click都不行.
2016/8/1
1、对于昨天的问题,解决方法:一般动态添加元素时,click方法 直接在html代码里用元素的οnclick=“func()”
2问题:在这里绑定了事件onclick
在引入的外部文件app.js文件内,把响应函数放在$(function())里面事件不会响应
把响应函数放在外面就可以了
原因:$(document).ready里的代码是在页面内容都加载完才执行的。在$(document).ready(function(){})
中不能调用,但是将方法写在外面即可调用。原因很简单。因为当你把click
函数
写在那个作为ready
的参数的匿名函数里的时候,click
函数
这个变量的作用域也仅限于那个匿名函数里。那个匿名函数之外自然无法使用 click
函数
这个变量。(https://segmentfault.com/q/1010000000333507)
其他:
- 放在事件处理程序中,比如:<p οnclick=”alert(‘我是由onclick事件执行的Javascript’)”>点击我</p>
- 作为URL的主体,这个URL使用特殊的Javascript:协议,比如:<a href=”javascript:alert(‘我是由javascript:协议执行的javascript’)”>点击我</a>
这两种方法写入的Javascript需要触发才能执行,所以除非特别设置,否则页面加载时不会执行。
当HTML解析器遇到一个脚本,它必须按常规终止对文档的解析并等待脚本执行。在dom加载完毕之前,js是无法执行的
http://www.cnblogs.com/jinianjun/archive/2012/08/14/2638772.html
3、A href="javascript:;的作用?
般来说a标签里面href后接着的应该是一个网址,就是超链接,但是在制作网页的时候我们有时候不需要进行超链接,用到的只是a标签的效果而已,所以此时应该将a标签的超链接去除改成自己需要的在点击a标签时触发的事件,这个时候用以上的模式就可以去除a的超链接改为自己的js事件。
2016/8/3
4、查看timeglider插件文档http://timeglider.com/widget/?p=json
2016/8/4
1、为了结构清晰,我把时间轴的events元素包装成一个类,用json-lib包把对象转换成json格式。(http://shuaigg-babysky.iteye.com/blog/354516)
2、问题:已经导入了json的jar包及其需要的依赖包运行到json对象的代码时候发生 Java.lang.NoClassDefFoundError: net/sf/json/JSONObject异常
解决办法:打开eclipse所关联的tomcat文件夹,将所需要的jar包复制到lib文件夹里面,重启项目,问题搞定
2016/8/5
1、 完成时间轴,这个文件路径弄了很久,最后请教了同学。生成的json文件要放在localhost目录下,一开始还以为直接把路径写成”localhost:xxxx”这样子,但是不行。
原因:localhost是要经过虚拟机后的路径,不能直接用这个路径。
解决方法:this.getClass().getResource("").getPath()得到当前类的路径,然后再将这字符串截取前面的项目路径,再字符串拼接索要的路径
path=this.getClass().getResource("").getPath();
inta = path.indexOf("WEB-INF");
path= path.substring(0, a)+"json/";
2016/8/10
2、 Java类中不能直接写session,要通过这个方法得到session对象
HttpSession session =request.getSession();
2016/8/11
服务器部署
3、 Ubuntu 安装mysql和简单操作http://www.cnblogs.com/zhuyp1015/p/3561470.html
sudo apt-get install mysql-server
sudo apt-get isntall mysql-client
sudo apt-get install libmysqlclient-dev
mysql -u root -p 登录数据库
创建数据库db_fee
建表
4、 Ubuntu部署
1, 将项目达成war包(用eclipse,项目右键-->Export-->选择war file)
2, 将tomcat考到ilnux对应的目录下
3, 然后将项目的war包放到tomcat的webapps目录下
4, 启动tomcat:切换到bin目录下命令:./startup.sh
5, 打开localhost:8080/login/就可以了
安装chrome
http://www.cyberciti.biz/faq/how-to-install-google-chrome-in-ubuntu-linux-12-xx-13-xx/
打开终端开启root账户 :sudopasswd -u root