spring在ssh中的作用Action类的命名

ssh中Action类的命名-中国学网-中国IT综合门户网站
> ssh中Action类的命名
ssh中Action类的命名
转载 编辑:李强
为了帮助网友解决“ssh中Action类的命名”相关的问题,中国学网通过互联网对“ssh中Action类的命名”相关的解决方案进行了整理,用户详细问题包括:。能不能不以action结尾。比如UserAction.java。。。。ssh中Action类的命名一定要以action结尾么。可以的话,具体解决方案如下:解决方案1:不一定非要以Action结尾;规定以Action或者其他字符串结尾是为了表明该类的作用,是自定义的一种规范解决方案2:如果我改成其他名字结尾的话。需要改struts2里面的配置么。还是直接就能用解决方案3:struts2 配置文件是要改的,因为你的类名变了,你的配置中关于引用的类是要改成你新的类名称解决方案4:struts2引用的配置我知道。。。我意思是struts一些默认配置要改么,不懂有没有用到action这些关键字来识别是否是action类解决方案5:不用通过对数据库的索引,我们还为您准备了:问:ssh中Action类的命名一定要以action结尾么。。。比如UserAction.java。...答:不一定非要以Action结尾;规定以Action或者其他字符串结尾是为了表明该类的作用,是自定义的一种规范===========================================问:用struts2,spring,hibernate做一个项目,主要分了action,service,dao,en...答:一般来说一个表一个dao,在有连接情况下,看那个表是主要的 service对应的是业务逻辑,公用性比较强 action对应的是页面模块,一个页面模块一个action 所以照你这个例子,建议你这么取名 UserDAO UserService UserAction 正如wangyu1221所说,既...===========================================问:SSH框架中bean、session、action翻译的含义?答:bean 是java类session可以是hibernate的数据连接也有可能是 jsp的内置对象,不知道你说哪个action可以说是个表单===========================================问:&s:iterator value="#session.list" id="score" status="st"& &tr &s:if...答:楼上回答正确,struts是将用户请求和响应Action之间的对应关系进行管理,以及配置Action中可能用到的参数,以及处理结果的返回页面。还包括各种拦截器的配置等。 xxx.do?mtype=方法名&id=页面传值 你好好看下自己的struts.xml的配置。===========================================问:新手,搭建一个ssh项目,jsp访问怎么调用action中继承了actionsupport中...答:额 如果要动态访问的话 直接在 struts.xml 里面的 action的 name值 配置一个 通配符就好了。比如 *号 表示你要访问 action类中方法的方法名 比如你要访问 某个类中的 login方法 表单提交的action就写成 strlogin.action 就可以了。===========================================问:用户的是myeclipse,导入了别人的一个项目,能运行起来。但是自己想加点...答:就照这个做呗。 每个package都拷贝user的类,然后改改名字就ok了===========================================问:你好我看到说你有问过关于SSH框架,jsp页面传值到action中,对象属性为N...答:表示不名真相。也不知道你想怎么个传法。jsp传个数据给action,常用的有两种方式,一中是通过form标点传给action,注意from里面input的name属性值的命名要和action中接收参数的成员变量要一只。比如,有个form表单数据,因为input的name命名是ag...===========================================问:关于ssh2中spring注解不懂 我有个业务层类AddChickenAction.java 有一行...答:表示实例化这个类,并将这个类加入到spring的bean容器中。并且这个bean的名字是addChickenAction。 在其它的地方就可以调用这个bean对象了。 @controllerpublic class TestController{ @autowire private AddChickenAction addChickenA//...===========================================问:如果我有20个action类每个类中有20个方法的话,我岂不是要在struts.xml...答:你是ssh2还是ssh 他们都分别有方法指定form提交到哪个action的某个方法 例如ssh2 action="supervise!searchListInform.action“ 就可以指定到supervise的searchListInform方法中 而 ssh action 需要继承DispatchAction 在struts文件中对每个actio...===========================================1、form封装 2、放到request,pagecontext,session,cookie等中=========================================== org.springframework.orm.hibernate3.HibernateTemplate 里面的getSessionFactory().openSession()方法就能拿到了===========================================但是考虑到速度(访问的都是生成好的静态页面,不用查数据库,所以速度快),安全等原因,需要把动态生成的页面转换成静态的,页面名称根据自己的设定的规则去命名,就是你说的...===========================================你设定namespace=&login&后,调用action时跳转到的路径是&... #47;",个人不推荐这样做;可以不要设置namespace,或者把jsp页面放在所命名的namesp...===========================================方法, 该方法执行顺序如下: 1、通过request请求取得action的命名空间 2、根据servlet请求的Path,解析出要调用该请求的Action的名字(actionName) 3、创建Action上下文(e...===========================================DAO类命名: 应用hibernate自动生成的类即可 Action类命名: 命名规则:Action的命名以P... 业务逻辑出现类命名: 命名规则:业务逻辑接口出现类的命名以POJO名称来制定 例如: 一...===========================================中的字符串相等,如果相等,返回邮箱已经被注册 这个具体实现起来也不难,hibernate的model添加email字段以及get,set方法。 spring处理业务逻辑, struts2中的action获取emai...=========================================== 2.4 编写Action类,无需继承任何类和实现任何接口 2.5 在struts.xml中加入对action的配... Xxxx.hbm.xml 将该文件以需要映射的类的类名.hbm.xml命名放在跟映射类同包中=========================================== Action类命名: 命名规则:Action的命名以POJO名称来制定,POJO名称Action 例如: ... 业务逻辑出现类命名: 命名规则:业务逻辑接口出现类的命名以POJO名称来制定 例...===========================================的 service()方法, 该方法执行顺序如下: 1、通过request请求取得action的命名空间 2、根据servlet请求的Path,解析出要调用该请求的Action的名字(actionName) 3、创建Action上...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助ssh开发的小结[一]:&Struts2
废话 start
从学习ssh以来,忙碌了那么久,做了那么多实践开发项目,一直想总结一下,一直没时间和心思写,现在趁着上班打酱油的时间简单的总结一下吧!
他们说,跨的太大了就容易扯蛋!
一,&&&&&&&&&&&&&struts.xml配置最简化
&namespace:是指访问路径的命名空间,默认情况是项目根路径。例如项目名称为news
& &配置如下:
&package name="default"namespace="/pages"
extends="struts-default"&
&!-- 通过URL访问的路径是 /namesapce/Entity/method.do
&action name="addNew"
method="addNew"class="cn.ipanel.itime.action.NewAction"&
&result&/jsp/list.jsp&/result&
&/package&
则访问URL为:
亦如配置:
&package name="default"namespace="/pages/news"
extends="struts-default"&
&!-- 通过URL访问的路径是 /namesapce/Entity/method.do
&action name="addNew"
method="addNew"class="cn.ipanel.itime.action.NewAction"&
&result&/jsp/list.jsp&/result&
&/package&
则访问URL为:
虽然访问路径不一样但是请求的方法其实是一样的
&&通配符使用:使用通配符*可以使得配置十分简化
&& 如配置:
name="default"namespace="/pages "
extends="struts-default"&
&!-- 通过URL访问的路径是 /namesapce/Entity/method.do
&action name="add_*"
method="add{1}"class="cn.ipanel.itime.action.{1}Action"&
&result&/jsp/list_{1}.jsp&/result&
&/package&
“*”代表所有,{1}代表第一个“*”,这样就可以节省配置,但是必须约定好命名规则。
视图结果定义到Action中:
无论是在编写代码的时候还是在读代码的时候总会又到这样的烦恼,在action和strut文件之间来回切换,影响思维连贯性。所有试图将strut.xml的配置如下:
&package name="default"
namespace="/pages" extends="struts-default"&
&!-- 通过URL访问的路径是 /namesapce/Entity/method.do
&action name="*/*"
method="{2}"class="cn.ipanel.itime.action.{1}Action"&
&result&${result}&/result&
&/package&
${result}是action实例成员变量
Action学增加成员变量& result 并提供get和set方法
public String result = "success";
public String getResult(){
public void setResult(String result) {
this.result =
public String addNews()
throws Exception {
result = “/jsp/list_news.jsp”;
return super.execute();
这样struts.xml只需一次性配置好,以后只要按照规范命名就可以把注意力放在actionz中而不用不再理strut.xml了,也不会影响项目的可读性
二,&&&&&&&&&&&&&参数接受及类型转换
Struts2剪掉了struts1的actionForm,剪掉了actionForm与Pojo的冗余
其实不论是struts1的actionForm封装参数还是Struts2的直接用属性提供set方法接受参数都需要对参数进行类型转换,一般用的BeanUtils,而通常情况先Struts2模式是使用ognl进行类型转换的,定义在action中的非复合类型参数还可以,可是遇到复合类型接受参数的时候就容易出现问题,比如时间类型。如果你做个ssh的开发你应该都会在lib中看到这样的一个jar:
<img ALT="" src="/blog7style/images/common/sg_trans.gif" real_src ="http://hi.csdn.net/attachment//0_Dm.gif" WIDTH="138" HEIGHT="48"
TITLE="ssh开发的小结[一]:&Struts2" />
是apache下面的一个包,是一个常用的在对象之间复制数据和数据类型转换的工具类,
struts就是依赖于它进行ActionForm的创建和类型的转换的。无论是struts1的actionform还是struts2的pojo接收参数,大概都会有这样的一个过程,
mons.beanutils.BeanUtils和mons.beanutils.converters包中有一系列converter类是最用的,BeanUtils主要用于对象属性之间的复制,依赖于其对类型的识别,和转换。无论是struts1的actionForm的还是Struts2的pojo接收参数,大概都有这样的一个过程:1解析request获取参数,2
创建 actionForm或者pojo对象,3
mons.beanutils.converters对参数进行类型识别和抓获,4
属性复制。前提是我们提前对类型转换器进行注册。
&&类型转换器的注册:
在可以再服务器启动时进行注册,注册之后,类型转换器就存在内存中,等待需要的时候调用
ConvertUtils.register(new
StringConverter(), String.class);
ConvertUtils.register(new
StringConverter(),String.class);
ConvertUtils.register(new
DateConverter(null),java.util.Date.class);
ConvertUtils.register(newSqlDateConverter(null),java.sql.Date.class);
ConvertUtils.register(new
SqlTimeConverter(null),Time.class);
ConvertUtils.register(newSqlTimestampConverter(null),Timestamp.class);
ConvertUtils.register(new
BooleanConverter(null),
Boolean.class);
ConvertUtils.register(new
ShortConverter(null),
Short.class);
ConvertUtils.register(new
IntegerConverter(null),
Integer.class);
ConvertUtils.register(new
LongConverter(null),
Long.class);
ConvertUtils.register(new
FloatConverter(null),
Float.class);
ConvertUtils.register(new
DoubleConverter(null),
Double.class);
ConvertUtils.register(newBigDecimalConverter(null),
BigDecimal.class);
ConvertUtils.register(newBigIntegerConverter(null),BigInteger.class);
三,&&&&&&&&&&&&&关于requestAware、sessionAware、applicationAware
Aware,意识的意思,request意识,session意识…
requestAware、sessionAware、applicationAware是封装在strut2的核心包里面的几个接口,
Struts2解除了与actionServlet的耦合,但很多时候我们还是会用的request,session这几个对象的,为此根据需要我们可以选择性的实现requestAware、sessionAware、applicationAware这几个接口,当然我们用的最多的还是requestAware接口;例如:
public abstract class
BaseStruts2Action extends ActionSupport
implementsRequestAware {
protected Map requestMap =
public String result = "success";
//注册converters
ConvertRegisterHelper.registerConverters();
//实现requestAware的方法
public void setRequest(Map request) {
this.requestMap =
public String delete(){
request.put("message", "删除成功");
return "/commons/message.jsp";
Action中实现RequestAware,SessionAware,ApplicationAware接口,
实现这些接口,都会有相对应的setXXX()方法.就是说谁来执行这个action中的相应方法,谁就对这些个对象进行初始化(Spring中的注入).也就是Struts2为我们进行了初始化,所以这三个值都不需要自己初始化.
通过request.put("message",
"删除成功")就相当于办消息存到了request的Attribut里面了,在message.jsp里面可以通过${message}取到值。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。trackbacks-0
&& &通过之前的系列文章,我们已经成功将这三种框架整合到了一起,这次大象将在此基础上用一个小实例来说明,怎么利用Struts2的拦截器特性实现登录验证,以及超时后的跳转问题。
&& &大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了。那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证。
&& &修改数据库
&& &在user表中增加password字段,将初始密码都设为123,因为是示例所以采用明码,实际开发中,当然不能这样做,需要进行加密处理。再将name改为username,其实name字段可以不用改名,我这样做是为了命名规范,请注意,如果字段改为username,User类中的对应属性也要进行相应变化(如果你加注释写法可以不用改),还有Test与TestHibernateDao中的getName()都要改为getUsername()。
&& &修改index.jsp
&& &将hello.action改为login!welcome.action
&& &增加登录类
&& &在web包下创建LoginAction类,在其中添加welcome与login方法,前者为index.jsp的跳转方法,它将转向到login.jsp页面。而后者则用来处理登录事件,如果成功将进入到主页面,失败则返回到登录页面。最后面有源码下载,这里省略。
&& &增加拦截器
&& &要实现登录拦截的功能,最关键的就是要实现拦截类了,在common包下面再增加一个interceptor包,创建AuthorityInterceptor类,并继承MethodFilterInterceptor,为什么继承它呢?因为它是对方法进行拦截,而在这个应用中,我们是对绝大部分的方法进行拦截,而对个别例外的方法排除。
&& &从session中取得当前登录用户,如果存在,就继续执行后面的拦截器;否则,就跳转到登录页面。所以这样实现了代码后,还要在struts.xml中进行相应的设置。
&& &增加拦截器配置
&& &做好这一步之后,那么登录验证拦截器将会对除了welcome与login之外的所有方法进行拦截了。另外我想说下,拦截器的实现还有一种注解的方式,它不需要实现拦截器类,只需要指定一个注解类型和一个拦截方法就可以了,具体的请自己去查相关资料。这里我没采取注解方式是因为它只能应用到方法级别,不能进行代码复用,如果有多个Action都需要执行拦截操作,那么就得把同样的注解方法复制到不同的Action中,这无疑是很糟糕的。而使用拦截器类就简单多了,只需要在配置文件中指定它,并引用它,就可以在任意的Action中生效,也没有侵入式代码,这就是常说的AOP切面,struts2的拦截器就是AOP的一个具体实现。
& &&增加全局转向配置
&& &还记得拦截器里面的return Action.LOGIN&这句吧,当程序执行完这一行后,就会到struts.xml文件中去找name为login全局转向配置,因此这里我设置为一个jsp页面,而没有定义成/login!welcome.action就是因为如果按这样做了,那么转向后,登录页面将显示在iframe框架中,这肯定不是我们希望看到的。解决这个问题,网上有很多方法,我查了一下,再结合实际,其实没那么复杂,一句话就可以搞定。如果使用frameset这种做法也有效,大象同样测试过,只不过例子中的代码没有这样写而已。
&& &增加jump.jsp
&& &增加login.jsp
& &&登录页面,输入用户名与密码,因为是例子,所以我没加验证码,在正式开发中应该加上。
&& &增加login-index.jsp
&& &这是登录成功后转向的页面,在这里,我用iframe框架来显示内容。
&& &到这里,所有工作都已经完成,已经可以登录登出了,并且拦截器也可以正常工作,超时登出也没问题,大家下载例子运行看看吧!
&& &源码下载:&
& &&本文为菠萝大象原创,如要转载请注明出处。
阅读(22125)
&re: 基于SSH2框架Struts2拦截器的登录验证实现
大象好久没有更新博客了!!!!!&&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
水印图案让人看起来很不舒服,可以将字变大,少点.&&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
&#64;bryan
这已经是很大的字号了,再大,会很丑,我试过,图片的显示只是帮助文章进行说明,具体的请看源代码,另外你说看起来很不舒服?我感觉还好吧,可能是你没习惯而已,不要太计较图片水印,关键是我的东西对你有没有用,看个开头就知道是否要继续看下去,如果不适合你,请立马关掉网页,不要对水印这些无关紧要的东西纠结来纠结去了,只要不影响阅读就行,如果你实在不爽,那不看总可以吧&&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
很好&&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
&interceptor-ref name=&authority&&
&param name=&excludeMethods&&welcome,login&/param&
&/interceptor-ref&
为什么我执行longin这样的action还是会被拦截呢 我把他们配置在一个struts.xml里面的。。。有个login的action。 怎么才拦截这个呢?&&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
&#64;gameover
这个excludeMethods表示不拦截welcome与login方法&&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
&#64;菠萝大象
这个意思我是明白, 我是这样配置的
&package name=&hrms& extends=&struts-default&&
&interceptors&
&!-- 登录验证拦截器 --&
&interceptor name=&authority& class=&com.mon.interceptor.AuthorityInterceptor& /&
&interceptor-stack name=&boloStack&&
&!-- 将登录验证拦截器加入默认的拦截器栈中 --&
&interceptor-ref name=&authority&&
&param name=&excludeMethods&&welcome,login&/param&
&/interceptor-ref&
&interceptor-ref name=&paramsPrepareParamsStack& /&
&/interceptor-stack&
&/interceptors&
&default-interceptor-ref name=&boloStack& /&
&global-results&
&result name=&login&&/jump.jsp&/result&
&/global-results&
&action name=&login& class=&com.qieryee.ssi.struts.action.login&&
&result name=&success&&/index.jsp&/result&
&result name=&input&&/login.jsp&/result&
&action name=&loginout& class=&com.qieryee.ssi.struts.action.login&
method=&loginout&&
&result name=&success&&/index.jsp&/result&
&result name=&input&&/login.jsp&/result&
我不知道所谓的方法是&method& 还是action 如login.action
我前面就没有像你前面那些声明
如果我除开login.action外所有action都要被拦截器拦截 这个该怎么配置呢?
我这样有什么不对么
&/action& &&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
请问怎么在ssh框架中实现一个简单的页面跳转,这个需不需要拦截器?&&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
&#64;搬个菠萝晒太阳页面跳转要通过Action来执行转向,拦截器是需要实现某种功能才会用到的&&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
&#64;gameover例如:welcome!login.action这里的excludeMethods里的method指的是login,而不是welcome。& 如果我除开login.action外所有action都要被拦截器拦截 这个该怎么配置呢? 如果要做到这部的话,就需要从Interceptor或AbstractInterceptor继承,然后去除actionName做判断。&&&&&&
&re: 基于SSH2框架Struts2拦截器的登录验证实现
thankyou&&&&&&
252627282930311234567891011121314151617181920212223242526272930311234
随笔分类(65)
随笔档案(65)
积分与排名
阅读排行榜
评论排行榜新手使用SSH框架,发现表单提交的数据在action类中全部为null解决方案
编辑:www.fx114.net
本篇文章主要介绍了"新手使用SSH框架,发现表单提交的数据在action类中全部为null解决方案",主要涉及到新手使用SSH框架,发现表单提交的数据在action类中全部为null解决方案方面的内容,对于新手使用SSH框架,发现表单提交的数据在action类中全部为null解决方案感兴趣的同学可以参考一下。
新手使用SSH框架,发现表单提交的数据在action类中全部为null解决方案新手使用SSH框架,发现表单提交的数据在action类中全部为null本人是新手绝对的新手 不是计算机专业出身,完全自学了SSH,第一次将自己的所学集中起来凭着自己的感觉做一个小demo来玩,但是发现一个问题那就是,jsp表单中提交的一些数据,到了相应的action中全部为null,百思不得其解,我本人不在软件公司上班,从事的行业也不是软件行业所以找不到大牛帮我解决问题,现在求助各位论坛高手帮忙。不罗嗦上代码:HTML code
&%@ page language=&java& import=&java.util.*& pageEncoding=&GBK&%&
String path = request.getContextPath();
String basePath = request.getScheme()+&://&+request.getServerName()+&:&+request.getServerPort()+path+&/&;
&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
&base href=&&%=basePath%&&&
&title&My JSP 'addNewBasicUser.jsp' starting page&/title&
&meta http-equiv=&pragma& content=&no-cache&&
&meta http-equiv=&cache-control& content=&no-cache&&
&meta http-equiv=&expires& content=&0&&
&meta http-equiv=&keywords& content=&keyword1,keyword2,keyword3&&
&meta http-equiv=&description& content=&This is my page&&
&link rel=&stylesheet& type=&text/css& href=&styles.css&&
&form action=&rootuser/addOneNewBranch& method=&post&&
用户名:&input type=&text& name=&username&/&&br/&
密码:&input type=&text& name=&password&/&&br/&
支行名称:&input type=&text& name=&branchbankname&/&&br/&
&input type=&submit& value=&提交&/&
这是对应的action类Java code
package com.
import javax.annotation.R
import com.dao.interfaceImp.BasicUserDaoI
import com.xu.model.BasicU
import com.xu.utils.MD5;
public class AddNewBranchBank {
private BasicUserDaoI
public BasicUserDaoImp getBudi() {
@Resource(name=&BasicUserDaoImp&)
public void setBudi(BasicUserDaoImp budi) {
this.budi =
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getPassword() {
public void setPassword(String password) {
this.password =
public String getBranchbankname() {
public void setBranchbankname(String branchbankname) {
this.branchbankname =
public String execute(){
System.out.println(branchbankname+&:&+username+&:&+password);
BasicUser bu = new BasicUser();
bu.setBranchBankName(branchbankname);
bu.setUsername(username);
bu.setPassword(MD5.encrypeMd5(password));
budi.addNewBasicUser(bu);
} catch(Exception e){
e.printStackTrace();
return &input&;
return &success&;
这是相关的struts配置HTML code
&package name=&rootuser& namespace=&/rootuser& extends=&struts-default&&
&interceptors&
&interceptor name=&rootUserTypeCheck& class=&com.xu.interceptors.RootUserCheck&/&
&interceptor-stack name=&rootUserCheck&&
&interceptor-ref name=&rootUserTypeCheck&/&
&interceptor-ref name=&defaultStack&/&
&/interceptor-stack&
&/interceptors&
&global-results&
&result name=&input&&/RootLogin/rootlogin.jsp&/result&
&/global-results&
&action name=&login& class=&com.actions.RootLogin&&
&result name=&success&&/WEB-INF/jsps/RootUser/desktop.jsp&/result&
&action name=&addNewBasicUser&&
&interceptor-ref name=&rootUserTypeCheck&/&
&result&/WEB-INF/jsps/RootUser/addNewBasicUser.jsp&/result&
&action name=&addOneNewBranch& class=&com.actions.AddNewBranchBank&&
&interceptor-ref name=&rootUserTypeCheck&/&
&result name=&success&&/WEB-INF/jsps/RootUser/desktop.jsp&/result&
&/package&
本文标题:
本页链接:

我要回帖

更多关于 spring在ssh中的作用 的文章

 

随机推荐