getSession().delete(entity);
return entity;
}
@SuppressWarnings(“unchecked”)
public T get(Serializable id) {
Assert.notNull(id);
return (T) getSession().get(getPersistentClass(), id);
}
@SuppressWarnings(“unchecked”)
public T load(Serializable id, boolean lock) {
Assert.notNull(id);
T entity = null;
if (lock) {
entity = (T) getSession().load(getPersistentClass(), id,
LockMode.UPGRADE);
} else {
entity = (T) getSession().load(getPersistentClass(), id);
}
return entity;
}
public List<T> findAll() {
return findByCriteria();
}
@SuppressWarnings(“unchecked”)
public List<T> findAll(OrderBy… orders) {
Criteria crit = createCriteria();
if (orders != null) {
for (OrderBy order : orders) {
crit.addOrder(order.getOrder());
}
}
return crit.list();
}
public Pagination findAll(int pageNo, int pageSize, OrderBy… orders) {
Criteria crit = createCriteria();
return findByCriteria(crit, pageNo, pageSize, null, OrderBy
.asOrders(orders));
}
在IMPL类:加:@Repository
在Action中:加:@Repository
目前对jeecms的事务还有点不知道,因为jeecms用了长期的注解:
@Service
@Transactional
publicclass FunctionMngImpl
@Autowired 是手动生成set方式:
@Autowired
private ContextPvd contextPvd;
则不用写set了,但get还要写。
<struts>
<include file=“com/jeecms/cms/struts-default.xml” />
<include file=“com/jeecms/cms/struts-core-admin.xml” />
<include file=“com/jeecms/cms/struts-core-ajax.xml” />
<include file=“com/jeecms/cms/struts-core-front.xml” />
</struts>
//struts-login.xml 登录
<package name=“cms.login” namespace=“/login” extends=“core-default”>
<global-results>
<result name=“logout” type=“redirectAction”>
<param name=“namespace”>/login</param>

<param name=“actionName”>Jeecms</param>
</result>
<result name=“loginInput”>/WEB-INF/cms_sys/login.html</result>
</global-results>
<action name=“Jeecms” method=“loginInput” class=“cms.adminLoginAct”/>
<action name=“CmsLogout” method=“logout” class=“cms.adminLoginAct”/>
用使用annotation 自动注册bean spring整合Struts2的一种:
1, spring xml
<!– 使用annotation 自动登录bean,并检查@Required,@Autowired的属性已被注入 –>
<context:component-scan base-package=“com.lch.spring.auto” />
2, 在Struts2里面:
<action name=“auto” class=“into.autoSpringAction” method=“autoMethod” >
3,写一个接口,和一个实现类
publicinterface InterfaceTest {
@Repository
publicclass AutoImpl implements InterfaceTest{
3, 在Struts2中用@Controller @Autowrited
@Scope(“prototype”)
@Controller(“into.autoSpringAction”)
publicclass AutoSpringAction extends ActionSupport{
@Autowired
private InterfaceTest ift;
public String autoMethod(){
ift.sayHelloAuto();
returnSUCCESS;
}
如下面连set 都不用写,且spring后面没有Bean的配置用注解将接口和推动类装配进了。
以后台登陆为例:
:8080/jeecms/login/Jeecms.do //从后面可以知道是cms.adminLoginAct
这时Jeecms用注释来跳转的。如下
@Scope(“prototype”)
@Controller(“cms.adminLoginAct”)
publicclass AdminLoginAct extends JeeCoreAction {
<global-results>
<result name=“loginInput”>/WEB-INF/cms_sys/login.html</result>
</global-results>
Next:<action name=“CmsSubmit” method=“login” class=“cms.adminLoginAct”>
下面是登录设计:good
public String login() {
boolean isHuman = imageCaptchaService.validateResponseForID(contextPvd
.getSessionId(false), checkCode);
if (!isHuman) {
addActionError(“验证码错误!“);
return loginInput();
}
User user = userMng.authenticate(loginName, password);
if (user == null) {
addActionError(“用户名不存在或密码错误!“);
return loginInput();
}
Admin admin = adminMng.getByUserId(getWebId(), user.getId());
if (admin == null) {
addActionError(“您没有本站的管理权限!“);
return loginInput();
} elseif (admin.getAdminDisabled()) {
addActionError(“您的帐号已经被允许!“);
return loginInput();
}
// 清除以前登录信息
contextPvd.logout();
// 保存当前登录信息
contextPvd.setSessionAttr(User.USER_KEY, user.getId());
contextPvd.setSessionAttr(Admin.ADMIN_KEY, admin.getId());
userMng.updateLoginInfo(user);
// 将权限集放入session
Set<String> fiSet = functionMng.getFunctionItems(admin.getId());
contextPvd.setSessionAttr(Admin.RIGHTS_KEY, fiSet);
// 处理次级域名单点登录
Website web = getWeb();
if (!StringUtils.isBlank(web.getBaseDomain())) {
Cookie c = new Cookie(JSESSION_COOKIE, contextPvd
.getSessionId(false));
c.setPath(“/”);
c.setDomain(web.getTopDomain(true));
contextPvd.addCookie(c);
}
returnSUCCESS;
}
上面清除Session方法:
publicvoid logout() {
HttpSession session = ServletActionContext.getRequest().getSession(
false);
if (session != null) {
session.invalidate();
}
}
登录成功以后的跳转:这个很高:将开启另外一个namespace
<result name=“success” type=“redirectAction”>
<param name=“actionName”>Com_index</param>
<param name=“namespace”>/admin/cms</param>
</result>
进入这里
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-121307-3.html
千千爱你