eclipse整合ssh完毕的情况下,启动tomcat时遇见的错误与提交请求所遇见的错误,我总结了下,希望对你们有所帮助
1.ssh使用注解来进行依赖注入的时候,action层总报server层注入的对象为空,显而易见,server层注入失败,从而影响action层的调用为空!通过总结和收查总结有两点
1.1 这是我action的代码
@Controller
public class LoginAction extends ActionSupport {
@Resource(name="userBiz")
private UserBiz userBiz;
private Users u;
private String code;
里@Resource(name="userBiz")的userBiz必须与private UserBiz userBiz;的一致,如果不一致,说明你注解不正确,又可以不用Resource,可以采用spring自带的@Autowired注解,想要知道的,可以网上看
1.2 如果你的注解正确,但还是报错,说明你缺少jar包啦:struts2-spring-plugin-2.5.5.jar
2.在调用session时,sessionFactory报空,这里我是用注解的;配置文件,前提示正确的;
//dao层相关代码
@Repository
public class UserDao extends sf {
//sessionFactory的注入代码
@Resource
protected SessionFactory sessionFactory;
public static final ThreadLocal session =new ThreadLocal(); //用ThreadLocal模式 (线程局部变量模式) 管理Session
public Session getSession()
{
Session s=(Session) session.get();
if(s==null){
s=sessionFactory.getCurrentSession();
}
return s;
}
你可以借鉴下!
3.最后是action的访问上,我用的2.5struts,并且是通配符访问的,配置如下,如果你用的是2.3版本以后的话,你可以借鉴下:
主struts配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- 指定默认编码集 -->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- 指定需要Struts2处理的请求后缀 -->
<constant name="struts.action.extension" value="do,action"></constant>
<!-- 设置浏览器是否缓存静态内容,开发阶段应关闭,生产阶段打开,默认为打开 -->
<constant name="struts.serve.static.browserCache" value="false"></constant>
<!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认为false,开发阶段应打开 -->
<constant name="struts.configuration.xml.reload" value="true"></constant>
<!-- 开发模式下使用,可以打印出更详细的错误信息 -->
<constant name="struts.devMode" value="true"></constant>
<!-- action全部用注解进行配置 -->
<!-- 是否开启动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<include file="com/azj/admin/action/struts.xml"></include>
</struts>
副strtus配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="admin" namespace="/admin" extends="struts-default">
<!--struts2.5增加方法的安全性访问 设置可以访问的方法 -->
<global-allowed-methods>login</global-allowed-methods>//struts2.5特殊的地方,里面是你的访问方法,没有汇报错
<action name="admin_*" class="loginAction" method="{1}">
<result name="{1}">/index.jsp</result>
<result name="{1}_error">/login.jsp</result>
</action>
</package>
</struts>
4.关于实体类在ssh整合里,获取实体类配置信息的方法时,有的人用自动扫描进行写入,有的是手动写入上遇见些问题,我说一下,
如果你比较懒,选用的是自动扫描写入的话必须满足1.实体类是全注解的,没有xx.hbm.xml文件,是单独的实体类注解;2.spring配置上要改一下:
sessionFactory 里的class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
<property name="packagesToScan" value="com.wzj.entity"/>//自动扫秒com.wzj.entity下包的实体类;
第二种方法是:手动写入实体类的配置文件:需要的要求如下:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="mappingResources">
<list>
<value>com/azj/entity/Users.hbm.xml</value>
<!-- 如有更多,可以继续添加 -->
</list>
</property>
手动写入的是实体类的xx.hbm.xml文件;
自动扫描和写入使用区别的!
总体如下:如果你想要eclipse配置的struts2.5,hibernate4.1,spring4.1,tomcat8.0,jdk1.8的demo多项目可以留言!!