SSH框架学习之Struts2(1):Hello World

来源:互联网 发布:akg k309 知乎 编辑:程序博客网 时间:2024/05/20 01:09

参考视频:尚学堂

Action入门:由hello world介绍struts

先应用,再理论

  1. 打开myEclipse
  2. 右键new – Project – MyEclipse – Java Enterprise Project – Web Project
    这里写图片描述
  3. 写项目名称,选就Java EE 5.0 , finish
    这里写图片描述
  4. 有几个地方要设置,这里要小心:
    Window – Preferences – MyEclipse – Servers – Tomcat的位置,选enable
    这里写图片描述
    window – Preferences – java – Installed jres,不放心的话就选自己的jdk
    这里写图片描述
  5. 用准备好的Struts2软件,解压之后观察一下目录
    这里写图片描述
    src: 源码
    lib: 类库
    docs: 文档
    apps: 示例程序
    用的是apps,里面有五个war文件,可以用WinRAR直接打开并且解压。
    解压blank文件,打开WEB-INF,classes下,找到配置文件,拷Struts.xml,到src目录下。
    拷类库:lib下,到lib下
    这个视图下是看不到的,打开window – show view – other – Navigator
    这里写图片描述
    这里写图片描述
    配置web.xml:配置filter
    这里写图片描述

  6. struts.xml中,struts标签里的东西都注释掉(方便仿照),package标签中拷贝过来,更改
    这里写图片描述

  7. 部署到服务器,测试。

    出现的问题:
    1.java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    引入javassist-3.11.GA.jar包解决
    2.java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
    引入commons-lang3-3.1.jar包解决
    后来重新测试时删掉这两个包也没有出错,不知道为什么
    3.测试时因为配置里有namespace,地址栏写法要注意。
    结果:这里写图片描述

小知识点:

  1. struts标签中里有一个配置:

    <constant name="struts.devMode" value="true" />

    重新启动部署之后,更改action的name属性之后,可以不用重启直接访问,否则得重启服务器

  2. 查看源码:找到jar包class之后,右键properties,java Source Attachment,External Folder,struts文件目录所在,src–core–src–main–java,ok

  3. 查看javadoc文档:struts-2-core.jar包,右键properties,javadoc location,browse,struts文件下,docs–core–api,ok。好处在于可以再eclipse里面观察javadocs的操作:当我们选中某个类的名字之后按F1,会给你显示出java doc ,点击之后可以直接显示出这个类的API。
  4. 创建xml文件给提示:
    window – properties –搜索catalog –XML Catalog – add –struts文件下lib中struts-core文件 – 解压 –找到dtd文件 –add中key type选URI,key:http://struts.apache.org/dtds/struts-2.3.dtd, location:刚刚解压dtd文件的路径。这样xml中敲内容时候就可以给提示了。

struts背后的运行机制

URL地址–http协议–tomcat–web application–web.xml–filter过滤所有的地址–被org…接收到–查struts.xml的namespace–查action name属性

核心: 把请求和展现分开。

namespace

namespace决定了action的访问路径,默认为”“,可以接收所有路径的action

namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action,
/xxx/index.action,或者/xxx/yyy/index.action.

namespace最好也用模块来进行命名,比如用户管理模块,就起名叫/user

struts.xml中,package标签用于解决重名情况
result标签name默认为success

Copy项目

copy之后要改一个东东:
右键properties–myeclipse – web–web Context root改路径

引入别人的项目

import – general –existing projects into workspace – 选择路径 –Copy project选中 – 部署
jre – remove掉 重新配置 – build path – library – 重新加进来

原创粉丝点击