struts2框架编写web的基本方法

来源:互联网 发布:大数据算法 王宏志 编辑:程序博客网 时间:2024/05/21 18:46

struts框架配置这里不多说,网上有很多相关教程。

1.目录介绍

struts项目的目录结构
上面是我写的一个web项目的结构。其中你在编写代码时所需的目录有java Resources/src,

1)java Resources/src

java Resources/src目录下用来存放.java代码,可以是类包,也可以是action包,也可以是service包,如果你比较严谨,可以多建几个包,分别存放上述三个项目,我这里都丢到一个包中了。在java Resources/src目录下有一个struts.xml这个文件,通过对这个文件的编写和理解,会使你对struts框架立即有一个比较简单直观的理解,下面会单独来讲。

2)build/WebContent

build/WebContent目录下用来存放前端所需要的文件,如.jsp文件等前端代码,还有你在.jsp文件中所调用的各种资源(比如图片),WebContent目录下又分为META-INF文件和WEB-INF文件,如果你把你的.jsp文件放入WEB-INF文件夹中那么你是没有办法通过浏览器浏览到它的(比如当你把项目部署到本地时无法通过localhost:8080:/aaa/WEB-INF/NewFile.jsp来访问NewFIle.jsp文件),也就是说把.jsp文件放到WEB-INF文件下会增加你的web项目的安全性。
WEB-INF目录下分为cotent,lib,和web.xml文件,cotent用来存放前端文件,lib存放struts项目所需要的.jar文件,web.xml是struts的配置文件,基本不用更改web.xml文件,web.xml文件代码中有一个标签,你在这个标签中添加你web项目首页的.jsp文件,这样你在访问部署后的项目时可以通过localhost:8080:/aaa(aaa为项目名)可以直接访问你添加的首页,并且如果不增加首页,部署到云端的时候可能会出现404。

2.struts2项目机制以及编写方法

1)action机制

action可以说是struts2项目中最关键的部分,与前端.jsp页面的变量传递,与后端数据库的交互,以及在后台进行的计算处理,都是通过action来完成的。
每个action中都会有一些private变量,每个变量都会有一个set和get方法。如果你想从前端获取用户在前端输入的变量a的值,那么在action中a就是获取到的值,如果你想把值传到前端,也只需改变a的值即可(也就是说struts框架通过set和get方法,自动的实现了action和前端的变量交互)。
每个action中有一个默认方法,即excute()方法,这个方法是默认调用的方法,当然你也可以写别的方法,但是在struts.xml文件中的action标签下需要指定你写的method。

2)拦截器机制(struts.xml)

这里就要用到java Resources/src目录下的struts.xml文件这个文件可以说是所有你编写的action的调度中心,下面是我的java项目中的struts.xml文件的一部分(由于太长,我只截取了前面的action)

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="true" />    <constant name="struts.devMode" value="true" />    <package name="default" namespace="/" extends="struts-default">        <action name="Showauthor" class = "packagea.ShowAll" method = "Showauthor">            <result name = "success" >/WEB-INF/content/Showauthor.jsp </result>        </action>        <action name="Showbook" class = "packagea.ShowAll">            <result name = "success" >/WEB-INF/content/Showbook.jsp </result>        </action>        <action name="Update" class = "packagea.Update">            <result name = "success" >/WEB-INF/content/Update.jsp </result>        </action>        <action name="JtUpdate" class = "packagea.Update" method = "Jump">            <result name = "success" >/WEB-INF/content/Update.jsp </result>        </action>       </package></struts>
package标签下的action标签是我们要填写的部分,如:
<action name="Showauthor" class = "packagea.ShowAll" method = "Showauthor"><result name = "success" >/WEB-INF/content/Showauthor.jsp </result></action>

在这个action标签中有name,这个name是随意填写的,只要你在前端中写的action name和这里的name相同就可以在前端调用这个action,class填写你的actoin的包名.action名,上面的class = “packagea.ShowAll”就是packagea中的ShowALL这个action,也就是将name和真正的action联系起来,method如果不指定就是默认方法,也可以指定你所编写的方法。
action标签下还有result标签,你在action中返回不同结果时跳到不同页面,一般用success或error,其实根据你action返回的东西,对应上即可。

3)关于前端

前端水还是比较深的,弄清struts机制并不难,但是如果写出一个炫酷的前端就不是一件简单的事情,这里简单的介绍前端与struts2 action交互的一些方法。
从我个人来讲,用的最多的就是表单,其次是超级链接,更深奥的还需要学习。下面是一个简单的表单:

 <form id="form1" name="form1" method="post" action="Searcha">      <p>        <input type="text" name="authora.name" value="请输入作者名字" />        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        <input type="submit" value = "search"/>      </p> </form>

可以看到,指定表单method为post,然后再指定一个action(这个action对应上面struts.xml中的action 标签中的name属性),当点击一个下面提交表单的button时,这个表单就会以post的方法,传送数据到struts.xml中action name为Searcha的action中,当然你在该action中一定要有一个相同的变量来接受,这就完成了前端->action的数据传递。
如果你想把变量显示到前端上,就比较简单了用el表达式即可,比如你的action中有变量a,那么在前端网页上找到你想要显示的位置,插入${a},前端就会显示出a的值,相同的,你也要让这个网页调用你的action并配置在struts.xml文件中。
当然有时候我们还需要网页间的跳转和数据传递,这时候就要用到超级链接,如下:

<a href="ShowInf.action?books.isbn=${aa.isbn}">${aa.title}</a>

这里href可以仅仅是页面跳转,如“csdn.net”也可以像我这样,调用ShowInf action同时将aa.isbn的值传给ShowInf action中的book.isbn。

0 0
原创粉丝点击