2019独角兽企业重金招聘Python工程师标准>>>

今天来总结一下Struts2的知识点,学习编程我的思路一般是这样的:

    ① why ?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?)。

    ②what ? 这个技术是什么玩意?有什么牛逼的地方值得我们学习,这个技术的核心是什么。

    ③How ?  怎么学?基本技术都是自己自学的,我的学习思路就是,看视频,拿例子来学习知识,在敲代码的过程中理解问题。在此期间如果遇到不懂得或者是感觉很模糊的地方,及时的上网找相应的博客进行理解。基本上就是在敲代码中学习技术。并且对技术要及时的进行总结,但是我不推荐一个知识点总结一次,这样根本没有那么多的时间,最好的是看完之后,从全局出发,对整个知识进行积累和总结,在总结的过程中,多看一下其他人的博客,集思广益,收获会很大。

    ④Do !  做!做是什么?是理论到实践的必经之路,是你成为大牛的必经之路,找个项目,认真的做完,对一些常用的技巧和方法进行归纳整理,发布到自己的博客上,在做项目的时候,有很多的途径,我最喜欢 的是看视频了,只要你前面没偷懒,认真的学习了,在这个时候你就会发现都是so easy的事情。在做项目的时候,要注意的是,遇到不会的,或者是有新的理解一定要去探索,这样会知道的越来越多,同时为了防止遗忘,及时的对博客进行更新,或许你遇到的问题也可能是别人遇到的,这样你的人气值就上来了!

  比如对Struts2 的学习。其实大约一周前就学完了,但是懒癌犯了,懒得动,一直拖着没整理。因此提醒大家:当日事,当日毕!当日事,当日毕!当日事,当日毕!因为明天还有很多事情要做......

  在没有进行Struts2 的学习之前,我用jsp+Servlet+javaBean+mysql+Jdbc+(bootStrap/EasyUi/Layui)开发了5个说大不大说小不小的狗屁项目,那tm写的叫一个累啊......但是很爽啊,哈哈哈,因为要实现一个方法比如说分页,那基本上就可以从底干到顶,熟悉整个流程。印象很深的一个功能是文件上传和下载,如果使用Struts那简直简单的.....超级爽啊。但是没学这个之前,我tm累的和狗一样,还是学习了别人的博客,自己加以改造,成功实现了数据库mysql存文件名,服务器存储文件,对文件能够进行上传和下载。虽然累但是对这部分功能还是了解的比较好了。框架确实好,用起来很爽。但是我还是喜欢研究基础的东西,这样在学别的框架那就是轻车熟路了。话不多说我们开始对Struts2进行剥皮抽筋的解剖整理。我接下来将主要从以下几个方面进行总结:

Struts2是什么玩意?核心?主要的功能?
Struts2的核心知识;
Struts2牛逼的拦截器,卧槽这才是最牛的核心!
Struts2的值栈和OGNL牛逼啊!
Struts2的标签三大类是什么?
Struts2的国际化有哪些东西啊?
Struts2的验证框架简单吗?
Struts2文件上传和下载为什么如此简单?
Struts2防止重复提交做的努力?
Struts2的小技巧(持久跟新......
          一  Struts2是什么玩意?核心?主要的功能?

Struts2在用户请求、模块化处理方面、页面展示表现的很牛逼。

  应用基本处理流程:Web容器在接收到HttpServletRequest请求传递给一个过滤器ActionContextCleanUp,之后经过Otherfiters。接下来调用FilterDispatcher核心控制器,其通过调用ActionMapper确认请求的是哪一个Action.ActionMapper返回一个收集Action详细信息的ActionMaping对象。

之后ActionProxy获得FliterDispatcher传递来的控制权,ActionProxy调用配置管理器(Configuration Manager)从配置文件struts.xml读取到配置信息。之后创建ActionInvocation对象,ActionInvocation在调用Action之前依次的调用所用的配置拦截器(Interceptor N),一旦执行结果返回结果字符串ActionInvocation负责查找结果字符串对应的(Result)然后执行Result,同时Result可以调用一些模板(Jsp,FreeMarker,Velocity或者是其他的)来呈现页面。

  在调用拦截器之后,我们进入拦截器(Interceptor N)会被执行(顺序与Action执行之前相反)。之后响应(HttpServletResponse)被返回在web.xml中的配置的那些过滤器和核心控制器(FilterDispatcher)。

  下面我们以一个实际的例子进行讲解。首先我们进行Struts2版本的HelloWorld的实现过程。

一 新建一个Dynamic web Project项目
第一步:File->New->Other->在搜索框里面搜索Dynamic Web Project.

第二步:之后新建一个Web的项目(选择Dynamic web module Version为2.5) 完成之后finish。

二  引入必须的jar包

对于使用Struts2需要引入一些核心的jar包,其中的所需的jar包如图1-1所示:

图1-1 核心jar包(放在lib文件夹中)

三 配置过滤器(web.xml文件中)
  对web.xml进行配置,主要是配置过滤器,将所有的请求全部交给org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter核心控制器处理。配置内容如下;

复制代码
 1 <filter>
 2     <filter-name>Struts2</filter-name>
 3     <filter-class>
 4 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
 5 </filter-class>
 6 </filter>
 7 <filter-mapping>
 8     <filter-name>Struts2</filter-name>
 9     <url-pattern>/*</url-pattern>
10 </filter-mapping>
复制代码

  通过配置拦截器地址(<filter-mapping></filter-mapping),<url-pattern>/*</url-pattern>将所有的HttpServletReqeust请求全部交给了名字叫做Struts2的拦截器(<filter-name>Struts2</filter-name>)进行处理,在前面的<filter></filter>拦截器,定义的名为Struts2拦截器(<filter-name>Struts2</filter-name>)被捕获,进而调用了定义的拦截器类<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>进行处理。

四  配置Struts.xml文件
   struts.xml文件中必须的内容:

1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
将struts.xml文件放在默认的src下。如图1-2所示:

图1-2 struts文件存放

五、创建HelloWorldAction类,并在struts中进行配置。
创建一个HelloWorldAction类,放在yxs.Action包下。在HelloWorldAction类中生成默认的 execute()方法。具体代码如下:

复制代码
 1  public class HelloWorldAction implements Action{
 2           /* (non-Javadoc)
 3            * @see com.opensymphony.xwork2.Action#execute()
 4 */
 5           @Override
 6           public String execute() throws Exception {
 7               // TODO Auto-generated method stub
 8               System.out.println("执行了Action的默认构造方法!");
 9               return SUCCESS;
10          }
11  }
复制代码
该类实现了Action接口,execute方法返回SUCCESS。在struts.xml中进行配置:

复制代码
 1 <struts>
 2 <!-- 默认继承自struts-default包 -->
 3     <package name="helloWorld" extends="struts-default">
 4 <!-- 如果前端访问hello方法,就会调用yxs.Action.HelloWorldAction类 -->
 5         <action name="hello" class="yxs.Action.HelloWorldAction">
 6         <!-- HelloWorldAction类如果返回success参数(SUCCESS就是success),就会调用helloWorld.jsp模板进行显示 -->
 7             <result name="success">helloWorld.jsp</result>
 8         </action>
 9     </package>
10 </struts>
复制代码
六 创建helloWorld.jsp,部署tomcat实现HelloWorld
helloWorld.jsp文件代码如下:
复制代码
 1 </html>

转载于:https://my.oschina.net/u/3386278/blog/3054124

?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?相关推荐

  1. 【20保研】北京邮电大学网络技术研究院2019年优秀大学生夏令营活动通知

    点击文末的阅读原文或者公众号界面左下角的保研夏令营或者公众号回复"夏令营"是计算机/软件等专业的所有保研夏令营信息集合,会一直更新的. ,活动内容主要包括专题讲座.实验室参观.实验 ...

  2. 适合初学者学java技术的书籍推荐!

    想要学会java技术,光靠听课是不够的,看书也是非常重要的一步,以下小编为大家推荐的是适合初学者学java技术的书籍,希望能够给初学者们带来帮助. 适合初学者学java技术的书籍推荐! 1. Java ...

  3. 零基础学python爬虫-零基础如何学爬虫技术?一篇带你入门!(理论+实操+荐书)...

    对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情. 但掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现! 同时,你需要从一开始就有一个具体的目标!只有在目标的驱动下,你的 ...

  4. 20岁没有学历能学计算机,20岁没学历学什么技术怎么办?学什么比较吃香?

    原标题:20岁没学历学什么技术怎么办?学什么比较吃香? 很多20多岁的年轻人一走进社会,会觉得非常迷茫,不知道路该怎么走.尤其是那些没有学历,没有技术的人,不知道自己可以干什么,大好的青春就这样被自己 ...

  5. 赚小钱,靠学一门技术没问题,那想赚大钱该怎么做呢?

    有些人觉得学个律师,学个职业规划师,学个管理做个高管,或者当个程序员等等,这些岗位挣得钱多,可以衣食无忧. 但这都不是赚大钱的方向. 要想赚大钱,非常简单,记住两个字,"合作". ...

  6. 学什么技术比较好呢?IT技术很不错

    学什么技术比较好呢?作为一门IT从业者,我推荐大家学习一门IT技术.21世纪是高科技时代,科技在飞速的进步,年轻人学技术就是应该选择走在时代前沿,而且还要有"钱途",IT行业也是去 ...

  7. 学什么技术专业最有前途?

    2015年学什么技术好,学什么技术好找工作,学什么技术最赚钱,学什么技术最给力?学什么技术有前途?女生学什么技术好?男生又学什么技术好呢? 尤其是在房价居高,物价暴涨,工资稳定的大情势下,对初高中成绩 ...

  8. 高考失利,男生适合学什么技术?

    高考失利,男生适合学什么技术?适合男生学习的技术有很多,开挖掘机.厨师.修车等等,我认为学习IT技术也是一个很好的出路. 高考成绩已经出来了,高考落榜的高中毕业生一般在18岁左右.没有学历和技能,他们 ...

  9. 学Java技术,这些问题要避免

    参加java培训学习java技术不是一朝一夕就能学会的事情,在学习的过程中还要注意学习方式,有一些错误是要避免的,下面我们就为大家详细的介绍一下学java技术要避免哪些问题? Java培训分享:学Ja ...

最新文章

  1. VC++ 添加UNICODE和_UNICODE预处理选项
  2. hadoop streaming部分问题总结
  3. 适合打游戏的计算机内存品牌型号,玩游戏电脑内存要多大合适?不同内存容量玩游戏区别实测...
  4. 【完整可运行源码+GIF动画演示】十大经典排序算法系列——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序
  5. php笔记之echo/print比较
  6. [渝粤教育] 武汉大学 数字图像处理 参考 资料
  7. 【51单片机快速入门指南】6.4:DHT11、DHT22单总线温湿度传感器
  8. 8.深度学习练习:Gradient Checking
  9. UEBA能够检测的七大类安全风险
  10. 49. NAT 服务器
  11. vlan tenant network on ovn based dvr (by quqi99)
  12. ROC False reject rate 和 false alarms
  13. Win7 启用Guest账户,设置登录界面不显示 Guest账户
  14. Vue 中使用Echarts构建3D地球
  15. 微信小程序获取用户信息
  16. js加ajax实现分页
  17. EXCEL:摒弃千篇一律,修改工作表中网络线的颜色
  18. 【转】王阳明:耐住寂寞,守得花开
  19. Leetcode学习网站
  20. 朗润国际期货:去中心化稳定币谁能笑到最后?

热门文章

  1. 分析 linux 日志文件,linux精讲|操作系统常见日志文件分析
  2. python加法怎么写_51NOD 大数加法以及python写法
  3. mysql 时序 存储引擎_MySQL常见的三种存储引擎
  4. nebula加入时间约束条件,查询结果没有输出
  5. 安全行业中的event与incident区别
  6. python中的json注意事项
  7. linux内核与设备驱动,第二章 Linux内核与设备驱动程序
  8. python中的静态方法如何调用_关于Python中如何使用静态、类、抽象方法的权威指南(译)...
  9. 笔记-项目风险管理-风险应对
  10. 笔记-组织级项目管理与大型项目管理-大型及复杂项目