浏览 3495 次
锁定老帖子 主题:最近项目开发知识总结积累
精华帖 (0) :: 良好帖 (1) :: 新手帖 (2) :: 隐藏帖 (13)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-23
最后修改:2009-09-23
(1)对系统时间利用java时间的歌是函数进行处理 SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); //格式化当前系统日期 String reqDate = dateFm.format(new java.util.Date()); 以上是对系统时间格式化成:年-月-日 时-分-秒 (2)请参照jdk—Api进行操练 2、在HTNL中获得下拉项的值,可以利用一个隐藏域,把取出的数据赋给隐藏域,然后通过js获得下拉单中的 值 3、对于在js中进行url跳转要用window.location=url 4、在js中弹出确认按钮后跳转页面,如以下就是经过确认后跳转到/sms/student/delete.action?id=<%= student.getId()%>页面: <a onclick="return confirm('真的要删除该信息吗?')" href="/sms/student/delete.action?id=<%= student.getId()%>">删除</a> 5、加载读取某一个文件的操作(特别是对于数据库的配置文件比较适合): (1)首先声明Properties private static Properties config = new Properties(); (2)通过输入流来读取文件 InputStream in = ConnectionFactory.class.getClassLoader() .getResourceAsStream("jdbc.properties"); (3)通过properties来加载输入流 config.load(in); (4)关闭输入流 in.close(); 6、读取JNDI数据源(在5的基础上) Connection con = null; Context ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup(config.getProperty("jndiName")); con = ds.getConnection(); 7、JNDI连接池配置 以tomcat6.0为例: 将数据库驱动jar包导入到tomcat6.0的/lib下,修改以下类 //连接数据库的类 class connectDB: public static Connection getConnection(){ Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); DataSource ds = (DataSource)envContext.lookup("jdbc/restrant"); conn = ds.getConnection(); } 在你的项目的配置文件web.xml中增加下面一段: web.xml <resource-ref> <res-ref-name>jdbc/restrant </res-ref-name> <res-type>javax.sql.DataSource </res-type> <res-auth>Container</res-auth> </resource-ref> 最后,在tomcat/webapps/yourpro/META-INF/下增加context.xml文件 新建txt文件,复制下面代码,重命名为context.xml <?xml version='1.0' encoding='utf-8'?> <Context> <Resource name="jdbc/restrant" type="javax.sql.DataSource" //增加数据库驱动,我的是sqlserver2005 driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" //指定数据库,并定义登录名和密码 url="jdbc:sqlserver://localhost:1433;databaseName=restrant" username="sa" password="sa" maxActive="200" maxIdle="10" maxWait="-1"/> </Context> 重新启动服务器--------->结束 8、在sturts2中让action实现ModelDriven接口,在Web层和业务逻辑层使用相同的对象,即如 LoginAction 实现了ModelDriven<User>接口,在页面中,这个模型对象中的属性可以直接通过 属性名来访问(如username),而不需要使用形如“user.username”这种格式的表达式,在action 中也不需要为这个模型对象提供JavaBean风格的getter和setter方法。 9、在struts2中记录登陆人数,和其他的一样,需要把信息存放到application中,在页面取得 :${requestScope.greeting} 和 ${applicationScope.counter} (1)在action的execute中添加 ActionContext context = ActionContext.getContext(); Map request = (Map)context.get("request"); Map session = context.getSession(); Map application = context.getApplication(); equest.put("greeting", "欢迎您光顾本站!!!"); //把user信息存放到session中 session.put("user", user); // Integer count = (Integer)application.get("counter"); if(null == count) count=1; else count++; application.put("counter", count); (2)在action开始声明 private Map request; private Map session; private Map application; public void setRequest(Map request) { this.request = request; } public void setSession(Map session) { this.session = session; } public void setApplication(Map application) { this.application = application; } 在execute中调用 request.put("greeting", "欢迎你光临本站"); session.put("user", user); Integer count = (Integer)application.get("counter"); if(null == count) count=1; else count++; application.put("counter", count); (3)在execute中 HttpServletRequest request = ServletActionContext.getRequest(); HttpSession session = request.getSession(); ServletContext context = ServletActionContext.getServletContext(); request.put("greeting", "欢迎你光临本站"); session.put("user", user); Integer count = (Integer)application.get("counter"); if(null == count) count=1; else count++; application.put("counter", count); (4)在action中先声明 HttpServletRequest request; ServletContext context; 添加get、set方法 在execute中添加 HttpSession session = request.getSession(); request.put("greeting", "欢迎你光临本站"); session.put("user", user); Integer count = (Integer)application.get("counter"); if(null == count) count=1; else count++; application.put("counter", count); 10、注意struts2.1.6和struts2.0.14不同 (1)与struts2.0.14不同,要想正常使用struts2.1.6,至少需要6 个jar包: struts2-core-2.1.6.jar freemarker-2.3.13.jar commons-logging-1.0.4.jar ognl-2.6.11.jar xwork-2.1.2.jar commons-fileupload-1.2.1.jar (2) 在使用零配置( zero configuration)的时候按照struts2.0.14中那样在sturts2-core-2.0.11中 org.apache.struts2.config下找了半天都没有那个包,上网才晓得“struts2.1.6中还需要引用struts2- convention-plugin-2.1.6.jar文件,而且注释类的包也变了(又增加了一些新的注释类),Struts2.0.14中 的注释类在org.apache.struts2.config包中,而struts2.1.6的注释类在 org.apache.struts2.convention.annotation包中。除此之外,有些注释的属性名也变了,如Result注释在 struts2.0.14中有一个value属性,表示一个要转入的URL,而 Struts2.1.6的Result注释中使用location属性代替了value属性(不再有value属性了),但它们的使用方法 相同。” (3)记得在struts2.0.14中,@result中type为类名,然后利用反射机制装载这个类例如 type=org.apache.struts2.dispatcher.ServletRedirectResult.class,而struts2.1.6中type应填入名称如 type="redirect",否则会报错。 (4)在action包设置的时候<package name="action" extends="struts-default" namespace="/">如果缺省 namespace就会报错,找不到result (5)在一个action返回result访问另一个package中的action时:<result type="chain">/xxx/test</result> 来访问 <action name="test" namespace="/xxx"会报错,找不到这个action,但是如果改成 <result type="chain"> <param name="actionName">test</param> <param name="namespace">/xxx</param> </result> 这种方法来访问就没有问题。 11、页面经过刷新几秒后跳转到另一个页面示例如下: <head> <META HTTP-EQUIV="Refresh" CONTENT="0;URL=Welcome.do"> </head> 注:content表示的是间隔几秒刷新一次 12、页面刷新的实现: (1)页面自动刷新js版1 <script language="JavaScript"> function myrefresh() { window.location.reload(); } setTimeout('myrefresh()',1000); //指定1秒刷新一次 </script> (2)页面自动刷新js版2 //如何刷新包含该框架的页面用 <script language=JavaScript> parent.location.reload(); </script> //子窗口刷新父窗口 <script language=JavaScript> self.opener.location.reload(); </script> (或<a href="javascript:opener.location.reload()">刷新</a>) //如何刷新另一个框架的页面用 <script language=JavaScript> parent.另一FrameID.location.reload(); </script> (3)页面自动刷新js版3 history.go(0) location.reload() location=location location.assign(location) document.execCommand('Refresh') window.navigate(location) location.replace(location) document.URL=location.href 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-23
引用 5、加载读取某一个文件的操作(特别是对于数据库的配置文件比较适合): (1)首先声明Properties private static Properties config = new Properties(); (2)通过输入流来读取文件 InputStream in = ConnectionFactory.class.getClassLoader() .getResourceAsStream("jdbc.properties"); (3)通过properties来加载输入流 config.load(in); (4)关闭输入流 in.close(); 在Spring中用 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:*.properties</value> </list> </property> <bean> |
|
返回顶楼 | |
发表时间:2009-09-23
楼主这样的总结值得学习啊.温故而知新
|
|
返回顶楼 | |
发表时间:2009-09-23
sunway00 写道 楼主这样的总结值得学习啊.温故而知新
呵呵,谢谢你这么鼓励,是的,经常由于某个知识被忘记,所以一旦想起来就记下来,还是在入门徘徊 |
|
返回顶楼 | |
发表时间:2009-09-23
基本是常用的知识点,有的时候忘了也挺麻烦的,lz的习惯很好。
|
|
返回顶楼 | |
发表时间:2009-09-24
不错,真的不错!收藏了,好多东东,时间长不用了,就忘了。
|
|
返回顶楼 | |
发表时间:2009-09-25
thinkinperson 写道 2、在HTNL(ps:楼主有错别字)中获得下拉项的值,可以利用一个隐藏域,把取出的数据赋给隐藏域,然后通过js获得下拉单中的
我是直接使用c:foreach把<option></option>输出 for example: <select> <c:foreach var="" items=""> <option>data</option> </c:foreach> </select> 呵呵,谢谢您的指出我的错误,我这个是当时需要把参数传到控制操作层出的下策 |
|
返回顶楼 | |
发表时间:2009-09-25
漫步壁虎 写道 LZ的分享精神值得大家学习,但是我想给LZ提一点建议,也就是既然是拿出来分享,可否将格式调整一下,使可读性增强一些。有时候再好的贴,一旦看上去排版极差,也会让人趣味减半
不好意思,我如果有闲时间的话,一定好好整理编辑一下 |
|
返回顶楼 | |