分享一些在java技术中的心得(持续更新)

mengxue3342 2014-06-12 10:56:56
加精
毕业工作2年,对这个行业感兴趣,一直想走到技术的顶峰,可是在过去的很长一段时间我都处于技术瓶颈期(感觉自己什么都会又觉得什么都不会)觉得自己很迷茫,想象和实际工作的反差让我时时感到自己的渺小(所有自己想的一切都有现成的工具或源代码) 觉得自己一直在技术的门槛上 得其门而不可入 。 如今痛定思痛 觉得该是时候重新梳理一下自己的知识 ,去掉浮躁,静下心来找回原来那份心灵的悸动 向技术的最高峰发起进攻 。 在这里我特将一些学习上的心得向大家分享,同时也希望大家指出我理解上的误差 同时也将以此贴作为对自己的激励 我会一直坚持下去 技术这条路 没有捷径 唯勤而已 ! 加油!(将不定时持续更新)
...全文
13392 109 打赏 收藏 转发到动态 举报
写回复
用AI写文章
109 条回复
切换为时间正序
请发表友善的回复…
发表回复
Golden_Dog 2014-08-20
  • 打赏
  • 举报
回复
引用 108 楼 mengxue3342 的回复:
最近发生一些窝火的事情 和大家分享下 希望大家以我为戒 从原来公司辞职 准备找工作 辞职的时候他们说辞职当月不满20天不给结算工资 我干了15天 交接的时间是不算在20天之内的 好吧忍了 没工资就没吧 交接完成之后 本人开始找工作 结果昨天老板打电话说 原来我搭基础框架那块需要改动 还特别着急 老板当时说了几句好话 我耳根软就去了 结果昨天加班改好 他们就一句 好了你可以走了 连句谢谢都没有 最后他们去聚餐了我只能回来吃泡面 哎 我是不是太天真了 毕竟这个公司呆了很长时间 还是有感情的 可是... ... 哎心情难以一言道尽啊
楼主太善良了,我也常常烦恼这个,要学会索取
mengxue3342 2014-07-20
  • 打赏
  • 举报
回复
最近发生一些窝火的事情 和大家分享下 希望大家以我为戒 从原来公司辞职 准备找工作 辞职的时候他们说辞职当月不满20天不给结算工资 我干了15天 交接的时间是不算在20天之内的 好吧忍了 没工资就没吧 交接完成之后 本人开始找工作 结果昨天老板打电话说 原来我搭基础框架那块需要改动 还特别着急 老板当时说了几句好话 我耳根软就去了 结果昨天加班改好 他们就一句 好了你可以走了 连句谢谢都没有 最后他们去聚餐了我只能回来吃泡面 哎 我是不是太天真了 毕竟这个公司呆了很长时间 还是有感情的 可是... ... 哎心情难以一言道尽啊
mengxue3342 2014-07-20
  • 打赏
  • 举报
回复
mvc模式概述和Struts2粗解 <1.mvc模式概述(mvc:是model,view,controller的缩写) <1.1mvc模式的优点: 1.各司其职互不干涉2.有利于开发过程中的分工3.有利于组件的重用 <1.2 mvc模式的缺点: 1.系统结构实现复杂 2.视图与控制器过于紧密 3.不适用小型或中等规模系统 <1.3 mvc最重要的特点: 把显示与数据分离,增加可重用性 <1.4mvc模式处理过程 首先控制器(controller)接收用户请求,并决定该调用那个模型(model)进行处理。然后模型处理用户请求并返回数据,最后控制器(controller)确定用相应的视图(view)将模型(model)返回的数据呈现给用户。 Struts2粗解 <2.1 : Struts2本质上是对Servlet进行mvc模式的构建。Struts2虽然名字和Struts1很像可是它更多的是借鉴了webwork的思想(主要有拦截器)。 <2.2 Struts2体系结构(重点) web容器接受到一个请求时,它将请求传递给一个标准的过滤器链,包括ActionContentCleanUp(主要用于延长action中属性的生命周期,后面会详细整理)和其他过滤器,接下来需要调用FilterDispather(Action核心控制器,不同的版本的Struts2核心过滤器会有所不同,这个是项目加入Struts2,web.xml必须配置的一个配置节),FilterDispather调用ActionMapper确认请求调用那个Action,ActionMapper返回了一个收集了Action详细信息的ActionMapping对象(必须保存Action的nameSpance和name属性信息)。 接下来,FilterDispather将控制权委派给ActionProxy(详细解释请参看<2.3), ActionProxy调用配置管理器(configuration manager)从配置文件中读取配置信息,然后创建ActionInvocation(Action 拦截器) 对象,ActionInvocation 被创建的同时,填充了所有对象所需的属性和信息,它在调用Action之前会依次调用所有配置的拦截器。 一旦Action返回了结果字符串,ActionInvocation负责查找结果字符串对应的result,然后执行这个result.然后拦截器会被再次执行(拦截器的执行过程是Action利用递归实现Aop的一个特色)最后响应被返回给在Web.xml中配置的那些过滤器(FilterDispather等) <2.3 ActionProxy ActionProxy在Xwork和真正的Action之间充当代理,在执行过程中应用了代理而非直接操纵,所以可以在Action的执行前后执行额外操作(关于代理模式后面会详细整理 他是ssh三大框架以及很多框架和技术都要用到的一种设计模式) <2.4 Action拦截器 Struts2将它的核心功能放到了拦截器中实现而不是在核心控制器中实现,把大部分控制器该完成的工作按功能分开定义,增强了框架的灵活性。 <2.5.Struts2常见的一些配置 <2.5.1 Struts2 Constant元素 constant元素用于配置常量通过常量的配置可以改变Struts2的一些行为。(以下为在网上搜到的一些常用的配置) <!-- 指定Web应用的默认编码集,相当于调用 HttpServletRequest的setCharacterEncoding方法 --> <constant name="struts.i18n.encoding" value="UTF-8" /> <!-- 该 属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即 所有匹配*.action的请求都由Struts 2处理。如 果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开 --> <constant name="struts.action.extension" value="do" /> <!-- 设 置浏览器是否缓存静态内容,默认值为true(生产环境下使用),开发阶段最好 关闭 --> <constant name="struts.serve.static.browserCache " value="false" /> <!-- 当 struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生 产环境下使用),开发阶段最好打开 --> <constant name="struts.configuration.xml.reload" value="true" /> <!-- 开 发模式下使用,这样可以打印出更详细的错误信息 --> <constant name="struts.devMode" value="true" /> <!-- 默 认的视图主题 --> <constant name="struts.ui.theme" value="simple" /> <!-- 该 属性指定Struts 2中的action由Spring容器创 建 --> <constant name="struts.objectFactory" value="spring" /> struts.serve.static.browserCache 该属性设置浏览器是否缓存静态内容。当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为false。 struts.enable.DynamicMethodInvocation 该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。如果需要关闭动态方法调用,则可设置该属性为false。 struts.enable.SlashesInActionNames 该属性设置Struts 2是否允许在Action名中使用斜线,该属性的默认值是false。如果开发者希望允许在Action名中使用斜线,则可设置该属性为true。 struts.tag.altSyntax 该属性指定是否允许在Struts 2标签中使用表达式语法,因为通常都需要在标签中使用表达式语法,故此属性应该设置为true,该属性的默认值是true。 struts.devMode 该属性设置Struts 2应用是否使用开发模式。如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示。该属性只接受true和flase两个值,该属性的 默认值是false。通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,则该属性设置为false。 struts.i18n.reload 该属性设置是否每次HTTP请求到达时,系统都重新加载资源文件。该属性默认值是false。在开发阶段将该属性设置为true会更有利于开发, 但在产品发布阶段应将该属性设置为false。 提示 开发阶段将该属性设置了true,将可以在每次请求时都重新加载国际化资源文件,从而可以让开发者看到实时开发效果;产品发布阶段应该将该属性设置为 false,是为了提供响应性能,每次请求都需要重新加载资源文件会大大降低应用的性能。 struts.ui.theme 该属性指定视图标签默认的视图主题,该属性的默认值是xhtml。 struts.ui.templateDir 该属性指定视图主题所需要模板文件的位置,该属性的默认值是template,即默认加载template路径下的模板文件。 struts.ui.templateSuffix 该属性指定模板文件的后缀,该属性的默认属性值是ftl。该属性还允许使用ftl、vm或jsp,分别对应FreeMarker、 Velocity和JSP模板。 struts.configuration.xml.reload 该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件。该属性的默认值是false。 struts.velocity.configfile 该属性指定Velocity框架所需的velocity.properties文件的位置。该属性的默认值为 velocity.properties。 struts.velocity.contexts 该属性指定Velocity框架的Context位置,如果该框架有多个Context,则多个Context之间以英文逗号(,)隔开。 struts.velocity.toolboxlocation 该属性指定Velocity框架的toolbox的位置。 struts.url.http.port 该属性指定Web应用所在的监听端口。该属性通常没有太大的用户,只是当Struts 2需要生成URL时(例如Url标签),该属性才提供Web应用的默认端口。 struts.url.https.port 该属性类似于struts.url.http.port属性的作用,区别是该属性指定的是Web应用的加密服务端口。 struts.url.includeParams 该属性指定Struts 2生成URL时是否包含请求参数。该属性接受none、get和all三个属性值,分别对应于不包含、仅包含GET类型请求参数和包含全部请求参数。 struts.custom.i18n.resources 该属性指定Struts 2应用所需要的国际化资源文件,如果有多份国际化资源文件,则多个资源文件的文件名以英文逗号(,)隔开。 struts.dispatcher.parametersWorkaround 对于某些Java EE服务器,不支持HttpServlet Request调用getParameterMap()方法,此时可以设置该属性值为true来解决该问题。该属性的默认值是false。对于 WebLogic、Orion和OC4J服务器,通常应该设置该属性为true。 struts.freemarker.manager.classname 该属性指定Struts 2使用的FreeMarker管理器。该属性的默认值是org.apache.struts2.views.freemarker.FreemarkerManager,这是 Struts 2内建的FreeMarker管理器。 struts.freemarker.wrapper.altMap 该属性只支持true和false两个属性值,默认值是true。通常无需修改该属性值。 struts.xslt.nocache 该属性指定XSLT Result是否使用样式表缓存。当应用处于开发阶段时,该属性通常被设置为true;当应用处于产品使用阶段时,该属性通常被设置为false。 struts.configuration.files 该属性指定Struts 2框架默认加载的配置文件,如果需要指定默认加载多个配置文件,则多个配置文件的文件名之间以英文逗号(,)隔开。该属性的默认值为struts- default.xml,struts-plugin.xml,struts.xml,看到该属性值,读者应该明白为什么Struts 2框架默认加载struts.xml文件了。 struts.objectFactory 该属性指定Struts 2中的action由哪个容器创建 <2.5.2 Struts2中Struts.xml的package中的属性 <1.name:必须指定且唯一,用来指定包名 <2.extends:指定要扩展的包 <3.nameSpance:可选属性指定了包的命名空间,Struts2框架用action名称和它所在包的命名空间来标识一个Action 默认命名空间用“”表示 以“/”表示根命名空间 注:Struts2接受请求时框架会将Url分为nameSpace和Acrion name 两部分框架首先会在namespance命名空间查找这个Action若没有找到则在 default namespance查找 <2.6默认的Action和全局Action <2.6.1默认Action 如果没有一个Action匹配请求,那么默认Action将会被执行(可以有效解决开发过程极其发布过程中输错或写错Action名字所带来的404错误)
<struts>
	<default-action-ref="defaultAction">
	<package name="default" extends="struts-default">
		<action name="defaultAction">
			<result>error.jsp</result>
		</action>
	</package>
</struts>
<2.6.2全局Action 全局结果在包中定义,这个包中所有的Action可以共享这个结果(在项目中如果用到了AJAX可以配置一个固定的返回空白页和全局的Action统一配置减少配置文件的冗余) <!-- 定义全局试图 -->
<global-results>  
  <result name="ajaxDone">/WEB-INF/ajaxDone.jsp</result>  
</global-results>
<2.7 Struts1和Struts2线程安全问题 产生原因:由Servlet的工作原理产生,前面整理Servlet提到了Servlet是单例模式,对于一个Servlet在项目运行期间永远只会有一个Servlet对象存在 <2.7.1 struts1 struts1 是对java web Servlet 接口的直接实现所以继承了Servlet单实例的特性 打个比喻如果你在struts1 Action在类里面定义了一个全局变量 那么只要你执行一个Action修改了它的值 下个Action如果也用到这个变量则它的值是修改后的而不是原来的 这样的话一旦程序员粗心就会造成不可知的错误 这里涉及到了程序开发中使可变性最小化的设计思想 其实安全不安全是相对的 只要开发过程遵守规定struts1也可以很安全struts1是单例模式所以理论上性能会更高 struts1 本质上相当于一个Servlet <2.7.2 struts2 struts2在底层封装了Servlet Struts2获取http请求给每个请求实例化一个Action,请求结束后销毁Action对象(多实例)。Struts2 action本质上是一个Java类 注意Spring默认采用了单例模式所以在用Spring管理Struts2 Action时应该在配置文件里将scope设置为prototype 多实例
d594470006d 2014-07-17
  • 打赏
  • 举报
回复
支持
Lee165 2014-07-17
  • 打赏
  • 举报
回复
加油 我会支持楼主的!继续关注
jinwei877811422 2014-07-16
  • 打赏
  • 举报
回复
我是一名今年刚毕业的大学生 参加工作后才发现 学校里自己学的太少了 感谢楼主分享 坐等更新
openweb 2014-07-16
  • 打赏
  • 举报
回复
慢慢来吧,日子就是靠熬的,也许你能成功,也许......或许还会......
qq_15283139 2014-07-15
  • 打赏
  • 举报
回复
hnxw1117 2014-07-15
  • 打赏
  • 举报
回复
大家一起学习啊
业余草 2014-07-14
  • 打赏
  • 举报
回复
我是第100楼了
业余草 2014-07-14
  • 打赏
  • 举报
回复
技术这条路 没有捷径 唯勤而已 ! 加油! 这句话说的很对
  • 打赏
  • 举报
回复
llsshh1985 2014-07-13
  • 打赏
  • 举报
回复
wxl285248064 2014-07-13
  • 打赏
  • 举报
回复
学习,楼主辛苦了!
sleeping_113 2014-07-12
  • 打赏
  • 举报
回复
更新时记得艾特我
Wanted__杰 2014-07-10
  • 打赏
  • 举报
回复
其实嘛,这只是楼主闲暇时间整理的笔记心得,有些人不必那么较真,有不同理解指出来,大家互相学习共同提高就好了。楼主也没必要在意那些不必要的言论
meiyingJay 2014-07-09
  • 打赏
  • 举报
回复
支持下
超级菜鸟 2014-07-09
  • 打赏
  • 举报
回复
mark 学习
xb12369 2014-07-09
  • 打赏
  • 举报
回复
酱油党飘过
聪头 2014-07-08
  • 打赏
  • 举报
回复
持续关注
加载更多回复(87)

23,405

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧