SSH整合登录案例
2013-07-13 15:57
267 查看
以前使用的最多的就是Structs,对Spring,Hibernate的没涉及到过,最近做了一个用户登录的小案例,将SSH整合到一起,原先要使用Ajax来处理前台的信息传递,后来时间紧迫就没用,后期改进再发博。自己总结了下SSH的整合步骤,以及在开发案例中遇到的一些情况。
一:如何整合SSH
整合SSH主要是利用配置文件来完成,这部分整合步骤在我下篇转载的SSH整合
《SSH整合步骤》
二:在开发案例中遇到的问题
在将Action整合到Spring时出现了一个问题就是Action总是显示无法实例化,页面总是弹出:
Unable to instantiate Action的错误,查找资料发现有三种可能
1.就是拼写的错误,这个要靠自己仔细的检查
2.配置文件的错误:
开始我的structs.xml文件中的Action
<action name="login" class="com.demo.action.LoginAction">
<exception-mapping exception="java.lang.Exception" result = "error" />
<result name = "success">/admin/index.html</result>
<result name = "error">/admin/error.jsp</result>
</action>
applicationcontext.xml文件中配置:
<bean id="loginAction" class="com.demo.action.LoginAction" scope="prototype">
<property name="userManager" ref="userManager"></property>
</bean>
这里就用错了,既然要将action整合到spring中,就是将action交给了spring的控制器,action中的class应该对应applicationcontext.xml中bean id="loginAction",也就是说要将class="com.demo.action.LoginAction" 换成class="loginAction",action中的class对应bean中的id
3.这种错误对于我们这些初学者很难发现
我在LoginAction中写来这样两句
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
了解webwork中ServletDispatcher原理的人可能知道原因了, 因为ServletDispatcher接受客户端的HTTP请求,将JavaServlet的很多相关对象进行包装,再传给我们的XWork框架,由我们的XWork 框架去解析我们的xwork.xml配置文件,根据配置文件的信息,创建对应的Action,组装并调用相应的拦截器,执行Action,返回执行结果。
因此每次客户端的请求都将调用ServletDispatcher 的 service()方法,
该方法执行顺序如下:
1、通过request请求取得action的命名空间
2、根据servlet请求的Path,解析出要调用该请求的Action的名字(actionName)
3、创建Action上下文(extraContext)
4、根据前面获得的namespace、actionName、extraContext,创建一个ActonProxy
5、执行proxy的execute()方法,根据Action执行返回的值去调用执行相应的Result(返回结果处理)的方法。
现在应该能明白,原来是Action对象实例在ActionContext对象实例之前创建的,所有这样取得ActionContext容器对象就有可能会返回null. (这段话引自于:http://blog.csdn.net/icejadelove/article/details/4764399)
解决的方法,我查找了资料在我转载的《structs2中获得request,response,session的几种方法》
一:如何整合SSH
整合SSH主要是利用配置文件来完成,这部分整合步骤在我下篇转载的SSH整合
《SSH整合步骤》
二:在开发案例中遇到的问题
在将Action整合到Spring时出现了一个问题就是Action总是显示无法实例化,页面总是弹出:
Unable to instantiate Action的错误,查找资料发现有三种可能
1.就是拼写的错误,这个要靠自己仔细的检查
2.配置文件的错误:
开始我的structs.xml文件中的Action
<action name="login" class="com.demo.action.LoginAction">
<exception-mapping exception="java.lang.Exception" result = "error" />
<result name = "success">/admin/index.html</result>
<result name = "error">/admin/error.jsp</result>
</action>
applicationcontext.xml文件中配置:
<bean id="loginAction" class="com.demo.action.LoginAction" scope="prototype">
<property name="userManager" ref="userManager"></property>
</bean>
这里就用错了,既然要将action整合到spring中,就是将action交给了spring的控制器,action中的class应该对应applicationcontext.xml中bean id="loginAction",也就是说要将class="com.demo.action.LoginAction" 换成class="loginAction",action中的class对应bean中的id
3.这种错误对于我们这些初学者很难发现
我在LoginAction中写来这样两句
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
了解webwork中ServletDispatcher原理的人可能知道原因了, 因为ServletDispatcher接受客户端的HTTP请求,将JavaServlet的很多相关对象进行包装,再传给我们的XWork框架,由我们的XWork 框架去解析我们的xwork.xml配置文件,根据配置文件的信息,创建对应的Action,组装并调用相应的拦截器,执行Action,返回执行结果。
因此每次客户端的请求都将调用ServletDispatcher 的 service()方法,
该方法执行顺序如下:
1、通过request请求取得action的命名空间
2、根据servlet请求的Path,解析出要调用该请求的Action的名字(actionName)
3、创建Action上下文(extraContext)
4、根据前面获得的namespace、actionName、extraContext,创建一个ActonProxy
5、执行proxy的execute()方法,根据Action执行返回的值去调用执行相应的Result(返回结果处理)的方法。
现在应该能明白,原来是Action对象实例在ActionContext对象实例之前创建的,所有这样取得ActionContext容器对象就有可能会返回null. (这段话引自于:http://blog.csdn.net/icejadelove/article/details/4764399)
解决的方法,我查找了资料在我转载的《structs2中获得request,response,session的几种方法》
相关文章推荐
- SSH整合登录案例
- MyEclipse整合SSH(Struts+Spring+Hibernate)简单登录范例(一)
- eclipse maven整合SSH项目(实现简单的连接数据库实现登录小例子)
- Struts2+Spring+Hibernate step by step 11 ssh整合之拦截器验证用户是否登录
- SSH整合小案例
- SSH-使用注解整合实现简单的登录功能
- Jimoshi_整合三大框架(一)--创建整合maven项目(SSH项目)、简单的测试示例(登录)、加载数据库模拟数据
- springBoot整合-登录案例《二》
- SSH整合Demo——完成登录注册
- ssh整合web导出excel案例
- SSH整合案例
- ssh整合案例
- 【Struts2+Hibernate3+Spring3】利用SSH整合,完成打印用户表,用户登录、注册、修改密码系统
- 通过案例练习掌握SSH 的整合
- 2.尚硅谷_佟刚_SSH 整合案例_Spring整合Hibernate&生成数据表
- SSH整合案例------使用idea maven搭建 非注解版
- SSH整合过程中中文乱码问题的解决方案(以mysql数据库为简单案例)
- 4.尚硅谷_佟刚_SSH 整合案例_查询所有员工信息
- SSH整合案例
- 中国铁建内网漫游沦陷多个重要部门泄漏大量信息(redis+ssh-keygen免认证登录案例)