项目结构图
地址:http://www.blogjava.net/xiaoyi/articles/xiaoyi_ssh.html
包 com.yz.dao.impl

package com.yz.dao.impl;

import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Order;
import org.hibernate.type.DateType;
import org.hibernate.type.FloatType;
import org.hibernate.type.IntegerType;
import org.hibernate.type.StringType;
import org.hibernate.type.Type;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.yz.dao.intf.IBaseDao;
public class IBaseDaoImpl<T> extends HibernateDaoSupport implements IBaseDao<T> {

public T add(T ob) {
boolean add = false;
this.getHibernateTemplate().save(ob);
return ob;
}

public boolean update(T ob) {
this.getHibernateTemplate().update(ob);
return true;
}

public boolean delete(T ob) {
this.getHibernateTemplate().delete(ob);
return true;
}

public boolean deleteById(final Class cl,final Serializable id) {
Object obj =this.getHibernateTemplate().get(cl, id);
this.getHibernateTemplate().delete(obj);
return true;
}

public T getById(Class cl,Serializable id) {
return (T) this.getHibernateTemplate().get(cl, id);
}

public List getAllObject(final Class cl) {
List lst = this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria cr = session.createCriteria(cl);
return cr.list();
}
});
return lst;
}

public List<T> getObjectsByMap(final Class cl,final Map map) {
List lst = this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria cr = session.createCriteria(cl);
cr.add(Expression.allEq(map));
return cr.list();
}
});
return lst;
}

public T getUniqueObjectByMap(final Class cl,final Map map) {
Object obj = this.getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
Criteria cr = session.createCriteria(cl);
cr.add(Expression.allEq(map));
return cr.uniqueResult();
}
});
return (T)obj;
}

public List<T> getOrderObjects(final Class cl,final Map map, final String orderstr,
final Integer beginpos, final Integer count) {
List lst =this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session){
Criteria cri = session.createCriteria(cl);
if (!(map == null)) {
Set keyset = map.keySet();
for (Object key : keyset) {
if (key == null || map.get(key) == null)
continue;
if (key.getClass() == String.class)
cri.add(Expression.like(key.toString(), map.get(key)));
else
cri.add(Expression.eq(key.toString(), map.get(key)));
}
}
if (orderstr != null)
cri.addOrder(Order.desc(orderstr));
if (beginpos != null)
cri.setFirstResult(beginpos);
else
cri.setFirstResult(0);
if (count != null)
cri.setMaxResults(count.intValue());
return cri.list();
}
});

return lst;
}

public List pageQuery(final String hql, final Integer currentPage,final Integer pageSize,final ObjectbindValue) {
List result = this.getHibernateTemplate().executeFind(
new HibernateCallback(){
public Object doInHibernate(Session session){
Query query = session.createQuery(hql);
if (bindValue != null && bindValue.length >= 1) {
//得到传入参数的对应到hibernate的类型
Type[] types = typesFactory(bindValue);
//设置query对象的参数
query.setParameters(bindValue, types);
}
if (currentPage != null && currentPage.intValue() >= 0) {
query.setFirstResult((currentPage-1)*pageSize);
if (pageSize != null && pageSize.intValue() >= 0)
query.setMaxResults(pageSize);
}
return query.list();
}
}
);

return result;
}

// 获取数组对象对应的类型。
private final Type[] typesFactory(ObjectbindValue) {
int count = bindValue.length;
Type[] types = new Type[count];
for (int i = 0; i < count; i++) {
if (bindValue[i].getClass().getName().endsWith("String")) {
types[i] = new StringType();
} else if (bindValue[i].getClass().getName().endsWith("Integer")) {
types[i] = new IntegerType();
} else if (bindValue[i].getClass().getName().endsWith("Float")) {
types[i] = new FloatType();
} else if (bindValue[i].getClass().getName().endsWith("Date")) {
types[i] = new DateType();
}
}
return types;
}

public Integer getPageCount(final Class c, final Integer pageSize) {

final String hql ="select count(*) from "+c.getName()+"";
Object count =this.getHibernateTemplate().execute(
new HibernateCallback(){
public Object doInHibernate(Session session){
return session.createQuery(hql).uniqueResult().toString();
}
}
);
Integer recordCount = Integer.parseInt(count.toString());
//表的总记录数
Integer pageCount = (recordCount+pageSize)/pageSize;
return pageCount;
}

}package com.yz.dao.impl;

import java.util.List;
import com.yz.dao.intf.IDeptDao;
import com.yz.hbm.Dept;

public class IDeptDaoImpl extends IBaseDaoImpl<Dept> implements IDeptDao<Dept> {

public List<Dept> getAllDepts() {
List<Dept> lst = super.getAllObject(Dept.class);
return lst;
}

public Dept getDeptById(Integer id) {
return super.getById(Dept.class, id);
}
}
package com.yz.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.yz.dao.intf.IUserDao;
import com.yz.hbm.Users;

public class IUserDaoImpl extends IBaseDaoImpl<Users> implements IUserDao<Users> {

public Users addUsers(Users u) {

return super.add(u);
}

public boolean checkLogin(Users u) {
Map<String,String> map = new HashMap<String,String>();
map.put("uname", u.getUname());
map.put("pwd",u.getPwd());
return super.getObjectsByMap(Users.class, map).size()>0;
}

public List<Users> getAllUsers(Integer currentPage,Integer pageSize) {
return super.pageQuery("from Users", currentPage, pageSize, null);
}

public Users getUsersById( int uid) {
return super.getById(Users.class,uid);
}

public boolean updateUsers(Users u) {
return super.update(u);
}

public List<Users> getAllUsers() {
return super.getAllObject(Users.class);
}
}

包 com.yz.dao.intf
package com.yz.dao.intf;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public interface IBaseDao<T> {

/** *//**
* 添加POJO对象
*/
public T add(T ob);
/** *//**
* 更新POJO对象
*/
public abstract boolean update(T ob);
/** *//**
* 删除POJO对象
*/
public abstract boolean delete(T ob);

/** *//**
* 根据主键删除POJO对象
*/
public abstract boolean deleteById(Class cl, Serializable id);
/** *//**
* 根据主键查询POJO对象
*/

public abstract T getById(Class cl, Serializable id);

/** *//**
* 查询所有POJO对象
*/
public abstract List getAllObject(Class cl);

// 根据类型和查询条件(相等的条件)来得到响应对象
/** *//**
* map。put("属性名","属性值")
* map.put("username","1111");
* map.put("pwd","1111");
* Map map=new HashMap();
* map.put("key","");
*/
public abstract List<T> getObjectsByMap(Class cl, final Map map);

public abstract T getUniqueObjectByMap(Class cl, final Map map);

// 根据一个hql语句和一个map集合进行查询,并且可以培训和分页。
/** *//**根据一个hql语句和一个map集合进行查询,并且可以培训和分页。
* 例子:在子类中间 String hql="from Users as u where u.uname = ? and u.upwd = ?";
* Map map=new HashMap(); map.put("uname",users.getUname()); //注意键为类中间的属性名
* map.put("upwd",users.getUname()); List list =
* super.getOrderObjects(map,null, null, null);
*/
public abstract List<T> getOrderObjects(Class cl, final Map map,
final String orderstr, final Integer beginpos, final Integer count);

// 根据一个hql语句和一个对象进行分页的查询
/** *//**根据一个hql语句和一个对象进行分页的查询
* 例子:在子类中间 String hql="from Users as u where u.uname = ? and u.upwd = ?";
* Object[] params=new String[]{users.getUname(),users.getUpwd()}; List list =
* super.pageQuery(hql,params, null, null);
*/
public abstract List pageQuery(String hql,
Integer currentPage, Integer pageSize,ObjectbindValue);
/** *//**
* 根据类去找到表从而查询出总记录数,再根据页大小计算出总页数
* @param c
* @return
*/
public Integer getPageCount(Class c,Integer pageSize);

}package com.yz.dao.intf;

import java.util.List;

import com.yz.hbm.Dept;

public interface IDeptDao<T> extends IBaseDao<T> {

public List<Dept> getAllDepts();
public T getDeptById(Integer id);
}
package com.yz.dao.intf;

import java.util.List;

import com.yz.hbm.Users;

public interface IUserDao<T> extends IBaseDao<T> {
public abstract Users addUsers(Users u);
public abstract boolean checkLogin(Users u);
public abstract List<T> getAllUsers();
public abstract T getUsersById(int uid);
public abstract boolean updateUsers(Users u);
public abstract List<T> getAllUsers(Integer currentPage,Integer pageSize);
}
包com.yz.hbm
package com.yz.hbm;

import java.util.HashSet;
import java.util.Set;

public class Dept implements java.io.Serializable {

private Integer deptId;
private String deptName;

private Set userses = new HashSet(0);

public Dept() {
}

public Dept(String deptName) {
this.deptName = deptName;
}

public Dept(String deptName, Set userses) {
this.deptName = deptName;
this.userses = userses;
}

public Integer getDeptId() {
return this.deptId;
}

public void setDeptId(Integer deptId) {
this.deptId = deptId;
}

public String getDeptName() {
return this.deptName;
}

public void setDeptName(String deptName) {
this.deptName = deptName;
}

public Set getUserses() {
return this.userses;
}

public void setUserses(Set userses) {
this.userses = userses;
}

}package com.yz.hbm;

import java.util.Date;

public class Users implements java.io.Serializable {

private Integer uid;
private Dept dept;
private String uname;
private String pwd;
private Date birth;
private String aihao;

public Users() {
}

public Users(Dept dept, String uname, String pwd, Date birth) {
this.dept = dept;
this.uname = uname;
this.pwd = pwd;
this.birth = birth;
}

public Users(Dept dept, String uname, String pwd, Date birth, String aihao) {
this.dept = dept;
this.uname = uname;
this.pwd = pwd;
this.birth = birth;
this.aihao = aihao;
}

public Integer getUid() {
return this.uid;
}

public void setUid(Integer uid) {
this.uid = uid;
}

public Dept getDept() {
return this.dept;
}

public void setDept(Dept dept) {
this.dept = dept;
}

public String getUname() {
return this.uname;
}

public void setUname(String uname) {
this.uname = uname;
}

public String getPwd() {
return this.pwd;
}

public void setPwd(String pwd) {
this.pwd = pwd;
}

public Date getBirth() {
return this.birth;
}

public void setBirth(Date birth) {
this.birth = birth;
}

public String getAihao() {
return this.aihao;
}

public void setAihao(String aihao) {
this.aihao = aihao;
}

}<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.yz.hbm.Dept" table="dept" catalog="ssh">
<id name="deptId" type="java.lang.Integer">
<column name="deptId" />
<generator class="native" />
</id>
<property name="deptName" type="java.lang.String">
<column name="deptName" length="32" not-null="true">
<comment>部门名称</comment>
</column>
</property>
<set name="userses" inverse="true">
<key>
<column name="deptId" not-null="true">
<comment>属于该部门用户</comment>
</column>
</key>
<one-to-many class="com.yz.hbm.Users" />
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="com.yz.hbm.Users" table="users">
<id name="uid" type="java.lang.Integer">
<column name="uid" />
<generator class="native" />
</id>
<many-to-one name="dept" class="com.yz.hbm.Dept" fetch="select">
<column name="deptId" not-null="true">
<comment>部门编号</comment>
</column>
</many-to-one>
<property name="uname" type="java.lang.String">
<column name="uname" length="32" not-null="true">
<comment>用户名</comment>
</column>
</property>
<property name="pwd" type="java.lang.String">
<column name="pwd" length="16" not-null="true">
<comment>密码</comment>
</column>
</property>
<property name="birth" type="java.util.Date">
<column name="birth" length="10" not-null="true">
<comment>生日</comment>
</column>
</property>
<property name="aihao" type="java.lang.String">
<column name="aihao" length="50">
<comment>爱好</comment>
</column>
</property>
</class>
</hibernate-mapping>

包com.yz.services.intf package com.yz.serveces.intf;

import java.util.List;

import com.yz.hbm.Dept;

public interface IDeptService {
public abstract List<Dept> getAllDept();
public abstract Dept getDeptById(Integer id);
}package com.yz.serveces.intf;

import java.util.List;

import com.yz.hbm.Users;

public interface IUserService {

public abstract Users addUsers(Users u);
public abstract boolean checkLogin(Users u);
public abstract List<Users> getAllUsers();
public abstract List<Users> getAllUsers(int currentPage, int pageSize);
public abstract boolean delUsersById(int uid);
public abstract Users getUsersById(int uid);
public abstract boolean updateUsers(Users u);
public abstract Integer getPageCount(int pageSize);
}
包com.yz.services.impl package com.yz.services.impl;

import java.util.List;

import com.yz.dao.impl.IDeptDaoImpl;
import com.yz.dao.intf.IDeptDao;
import com.yz.hbm.Dept;
import com.yz.serveces.intf.IDeptService;

public class DeptServices implements IDeptService {
IDeptDao<Dept> dept;

public IDeptDao<Dept> getDept() {
return dept;
}
public void setDept(IDeptDao<Dept> dept) {
this.dept = dept;
}
public List<Dept> getAllDept(){
return dept.getAllDepts();
}
public Dept getDeptById(Integer id){
return dept.getDeptById(id);
}
}package com.yz.services.impl;

import java.util.HashMap;
import java.util.List;

import com.yz.dao.impl.IUserDaoImpl;
import com.yz.dao.intf.IUserDao;
import com.yz.hbm.Users;
import com.yz.serveces.intf.IUserService;

public class UserServices implements IUserService {

IUserDao<Users> ud;

public IUserDao<Users> getUd() {
return ud;
}

public void setUd(IUserDao<Users> ud) {
this.ud = ud;
}

public Users addUsers(Users u) {

return (Users) ud.add(u);
}

public boolean checkLogin(Users u) {
return ud.checkLogin(u);
}

public List<Users> getAllUsers(){
return ud.getAllUsers();
}

public List<Users> getAllUsers(int currentPage,int pageSize){
return ud.getAllUsers(currentPage, pageSize);
}

public boolean delUsersById(int uid) {
return ud.deleteById(Users.class,uid );
}

public Users getUsersById(int uid) {

return (Users) ud.getUsersById(uid);
}

public boolean updateUsers(Users u) {
return ud.updateUsers(u);
}

public Integer getPageCount(int pageSize){
return ud.getPageCount(Users.class, pageSize);
}

}
包com.yz.sturts 放struts的资源文件ApplicationResources.properties 不要也没关系,本例子没用到属性文件
包com.yz.actions package com.yz.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

public class DeptAction extends DispatchAction {

public ActionForward getAllDept(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
return mapping.findForward("");
}
}package com.yz.struts.action;

import java.text.SimpleDateFormat;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.yz.hbm.Users;
import com.yz.serveces.intf.IDeptService;
import com.yz.serveces.intf.IUserService;
import com.yz.services.impl.DeptServices;
import com.yz.services.impl.UserServices;
import com.yz.struts.form.UserForm;

public class UserAction extends DispatchAction {
IUserService us ;
IDeptService ds ;

public IDeptService getDs() {
return ds;
}

public void setDs(IDeptService ds) {
this.ds = ds;
}

public IUserService getUs() {
return us;
}

public void setUs(IUserService us) {
this.us = us;
}

public ActionForward regist(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
UserForm uf = (UserForm) form;
Users u = new Users();
u.setUname(uf.getUname());
u.setBirth(new SimpleDateFormat("yyyy-MM-dd").parse(uf.getBirth()));
u.setPwd(uf.getPwd());
String aihao ="";
for (int i = 0; i < uf.getAihaos().length; i++) {
if(i<uf.getAihaos().length-1){
aihao+=uf.getAihaos()[i]+",";
}else{
aihao+=uf.getAihaos()[i];
}
}
u.setAihao(aihao);
u.setDept(ds.getDeptById(uf.getDeptId()));
//添加用户
Users add =us.addUsers(u);
if(add!=null){
//添加成功
request.setAttribute("msg","恭喜你,用户添加成功!");
request.setAttribute("go","login.jsp");
request.setAttribute("goinfo", " 登 录 ");
}else{
//添加失败
request.setAttribute("msg","对不起,添加失败");
}
return mapping.findForward("tips");
}

public ActionForward checkLogin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
UserForm uf = (UserForm) form;
Users u = new Users();
u.setUname(uf.getUname());
u.setPwd(uf.getPwd());
boolean login=us.checkLogin(u);
if(login){
request.setAttribute("msg", "恭喜你,登录成功!");
request.setAttribute("go","/yz-ssh/users.do?actions=queryAll");
request.setAttribute("goinfo", "进入管理页面。o O");
}else{
request.setAttribute("msg", "对不起,登录失败!");
}
return mapping.findForward("tips");
}
public ActionForward queryAll(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
//页大小--->每页显示的记录条数
int pageSize = 5;
//总页数
int pageCount = us.getPageCount(pageSize);
//当前页
String cpage =request.getParameter("currentPage")==null?"":request.getParameter("currentPage").toString();
int currentPage = request.getParameter("currentPage")==null?1:Integer.parseInt(cpage);
List<Users> lst = us.getAllUsers(currentPage, pageSize);
request.setAttribute("allUsers", lst);
request.setAttribute("pageCount",pageCount);
request.setAttribute("currentPage", currentPage);
return mapping.findForward("admin");
}
public ActionForward modify(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
Users u = us.getUsersById(Integer.parseInt(request.getParameter("uid")));
UserForm uf = (UserForm) form;
uf.setUid(u.getUid());
uf.setUname(u.getUname());
uf.setPwd(u.getPwd());
uf.setBirth(new SimpleDateFormat("yyyy-MM-dd").format(u.getBirth()));
uf.setAihaos(u.getAihao().split(","));
uf.setDeptId(u.getDept().getDeptId());
return mapping.findForward("modify");
}
public ActionForward del(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
String uid = request.getParameter("uid");
boolean del =us.delUsersById(Integer.parseInt(uid));
if(del){
request.setAttribute("msg", "恭喜您,删除成功!");
}else{
request.setAttribute("msg", "对不起,删除失败!");
}
return mapping.findForward("tips");
}
public ActionForward finishModify(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
UserForm uf = (UserForm) form;
Users u = new Users();
u.setUname(uf.getUname());
u.setBirth(new SimpleDateFormat("yyyy-MM-dd").parse(uf.getBirth()));
u.setPwd(uf.getPwd());
u.setUid(uf.getUid());
String aihao ="";
for (int i = 0; i < uf.getAihaos().length; i++) {
if(i<uf.getAihaos().length-1){
aihao+=uf.getAihaos()[i]+",";
}else{
aihao+=uf.getAihaos()[i];
}
}
u.setAihao(aihao);
u.setDept(ds.getDeptById(uf.getDeptId()));
//修改用户
boolean update =us.updateUsers(u);
if(update){
request.setAttribute("msg", "恭喜您,修改成功!");
request.setAttribute("go","/yz-ssh/users.do?actions=queryAll");
request.setAttribute("goinfo", "进入管理页面。o O");
}else{
request.setAttribute("msg", "对不起,修改失败!");
}
return mapping.findForward("tips");
}

}

包com.yz.struts.forms package com.yz.struts.form;

import java.text.ParseException;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.WebApplicationContext;

import com.yz.hbm.Dept;
import com.yz.serveces.intf.IDeptService;
import com.yz.services.impl.DeptServices;

public class UserForm extends ActionForm{
private Integer uid;
private Integer deptId;
private String uname;
private String pwd;
private String birth;
private String[] aihaos;
private Integer currentPage;
private Integer pageSize;
private Integer pageCount;
public Integer getPageCount() {
return pageCount;
}
public void setPageCount(Integer pageCount) {
this.pageCount = pageCount;
}
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String[] getAihaos() {
return aihaos;
}
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
if(request.getSession().getAttribute("allDept")==null){
//查询处所有部门
String key = WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE;
ApplicationContext appctx =(ApplicationContext) servlet.getServletContext().getAttribute(key);
IDeptService ds = (IDeptService) appctx.getBean("deptService");
List<Dept> depts = ds.getAllDept();
System.out.println(depts.get(0).getDeptId());
//保存到session范围
request.getSession().setAttribute("allDept",depts );
}
}

public void setAihaos(String[] aihaos) {
this.aihaos = aihaos;
}

public String getBirth() {
return birth;
}

public void setBirth(String birth) {
this.birth = birth;
}

public Integer getDeptId() {
return deptId;
}

public void setDeptId(Integer deptId) {
this.deptId = deptId;
}

public String getPwd() {
return pwd;
}

public void setPwd(String pwd) {
this.pwd = pwd;
}

public Integer getUid() {
return uid;
}

public void setUid(Integer uid) {
this.uid = uid;
}

public String getUname() {
return uname;
}

public void setUname(String uname) {
this.uname = uname;
}
}

log4j.properties配置 #to console#
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
#to file#
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=ssh.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
#error/warn/info/debug#
log4j.rootLogger=info, stdout, file
applicationContext.xml <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

<!-- 数据源,保存数据库连接信息 -->
<bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/ssh"></property>
<property name="username" value="root"></property>
<property name="password" value="admin"></property>
</bean>
<!--session工厂,用session工厂获得session会话连接-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="ds"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<!-- 指定 POJO类的映射文件路径
还有一种写法
<property name="mappingDirectoryLocations">
<list>
<value>classpath:/com/yz/hbm</value>
</list>
</property>
-->
<property name="mappingResources">
<list>
<value>com/yz/hbm/Users.hbm.xml</value>
<value>com/yz/hbm/Dept.hbm.xml</value>
</list>
</property>
</bean>
<!-- spring容器创建了一个hibernateTemplate对象 -->
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<!-- 事务管理器 apring2.0中间事务的配置和处理-->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<!-- 事务属性:通知/处理/横切关注点
<tx:method name="add*" propagation="REQUIRED" isolation="DEFAULT" />
以add开头 事务传播属性(没有事务就创建) 事务隔离级别(数据库默认)
-->
<tx:advice id="mytx">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT"/>
<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 织入 -->
<aop:config>
<aop:advisor advice-ref="mytx" pointcut="execution(* com.yz.services.impl.*.*(..))"/>
</aop:config>
</beans>
actionbean.xml <?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<!-- 具体的action对象 -->
<bean name="/users" class="com.yz.struts.action.UserAction">
<property name="us" ref="userService"></property>
<property name="ds" ref="deptService"></property>
</bean>
</beans>
bean.xml <?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<!-- 具体的dao对象 -->
<bean id="userDao" class="com.yz.dao.impl.IUserDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate">
</property>
</bean>
<bean id="deptDao" class="com.yz.dao.impl.IDeptDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate">
</property>
</bean>
<!-- 具体的service对象 -->
<bean id="userService" class="com.yz.services.impl.UserServices">
<property name="ud" ref="userDao"></property>
</bean>
<bean id="deptService" class="com.yz.services.impl.DeptServices">
<property name="dept" ref="deptDao"></property>
</bean>
</beans>
struts.cfg.xml <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans>
<form-bean name="userForm" type="com.yz.struts.form.UserForm"></form-bean>
</form-beans>
<global-exceptions />
<global-forwards>
<forward name="tips" path="/msg.jsp"></forward>
<forward name="admin" path="/manage.jsp"></forward>
<forward name="modify" path="/modify.jsp"></forward>
</global-forwards>
<action-mappings>
<action
path="/users"
name="userForm"
attribute="userForm"
type="com.yz.struts.actions.UserAction"
scope="request"
parameter="actions">
</action>
</action-mappings>
<!-- 替换掉struts中的请求处理器 -->
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
<message-resources parameter="com.yz.struts.ApplicationResources" />
</struts-config>

web.xml <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 使用监听器来加载spring容器: 支持多配置文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml,/WEB-INF/bean.xml,/WEB-INF/actionbean.xml
</param-value>
</context-param>
<!-- 改监听器用来读取spring配置文件,启动spring容器 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

<!-- 加载spring过滤器处理中文 -->
<filter>
<filter-name>ChineseFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>ChineseFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 何时关闭session -->
<filter>
<filter-name>sessionFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>sessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

index.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<jsp:directive.page import="com.yz.hbm.Dept"/>
<%@taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>用户注册</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">
-->
</head>
<center>
<table>
<caption><h1>用户注册</h1></caption>
<html:form action="/users?actions=regist">
<tr>
<td>用户名:</td>
<td><html:text property="uname" ></html:text></td>
</tr>
<tr>
<td>密码:</td>
<td><html:password property="pwd" ></html:password></td>
</tr>
<tr>
<td>生日::</td>
<td><html:text property="birth" ></html:text></td>
</tr>
<tr>
<td>爱好:</td>
<td>
<html:multibox property="aihaos" value="电影"></html:multibox>电影
<html:multibox property="aihaos" value="游戏"></html:multibox>游戏
<html:multibox property="aihaos" value="音乐"></html:multibox>音乐
<html:multibox property="aihaos" value="泡妞"></html:multibox>泡妞
<html:multibox property="aihaos" value="美女"></html:multibox>美女
<html:multibox property="aihaos" value="帅哥"></html:multibox>帅哥
<html:multibox property="aihaos" value="旅行"></html:multibox>旅行
<html:multibox property="aihaos" value="无聊"></html:multibox>无聊
<html:multibox property="aihaos" value="感伤"></html:multibox>感伤
<html:multibox property="aihaos" value="做白日梦"></html:multibox>做白日梦
</td>
</tr>
<tr>
<td>部门:</td>
<td><html:select property="deptId">
<html:optionsCollection name="allDept" label="deptName" value="deptId"/>
</html:select>

</td>
</tr>

<tr>

<td><html:submit value=" 注 册 "></html:submit></td>
<td><html:reset value=" 重 置 "></html:reset></td>
</tr>
</html:form>
</table>
</center>
<body>

</body>
</html>

login.jsp <%@ page language="java" pageEncoding="utf-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />

<title>用户登录</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">
-->

</head>

<body>
<center>
<html:form method="post" action="/users?actions=checkLogin" focus="uname">
<table>
<caption style="font-weight:bold;"> 用 户 登 录</caption>
<tr>
<td>用户名:</td>
<td><html:text property="uname"></html:text> </td>
</tr>
<tr>
<td>密 码:</td>
<td><html:password property="pwd"></html:password></td>
</tr>
<tr>
<td><html:submit value=" 登 录 "></html:submit></td>
<td><html:reset value=" 重 置 "></html:reset></td>
</tr>
</table>
</html:form>
</center>
</body>
</html:html>

manage.jsp <%@ page language="java" pageEncoding="utf-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />

<title>用户管理</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">
-->
<%
Integer currentPage=request.getAttribute("currentPage")==null?1:Integer.parseInt(request.getAttribute("currentPage").toString());
Integer pageCount=request.getAttribute("pageCount")==null?1:Integer.parseInt(request.getAttribute("pageCount").toString());
%>
<script type="text/javascript">

</script>
</head>

<body>
<center>
<table>
<caption style="font-weight:bold;font-size:30px;">用户管理</caption>
<th>序号</th><th>用户编号</th><th>用户名</th><th>密码</th><th>生日</th><th>爱好</th><th>部门</th>
<logic:iterate id="u" name="allUsers" indexId="i">
<tr>
<td>${i+1}<br><br></td>
<td><bean:write name="u" property="uid"/></td>
<td><bean:write name="u" property="uname"/></td>
<td><bean:write name="u" property="pwd"/></td>
<td><bean:write name="u" property="birth"/></td>
<td><bean:write name="u" property="aihao"></bean:write></td>
<td>${u.dept.deptName}</td>
<td><html:link style="color:red;font-weight:bold;" action="/users?actions=modify" paramId="uid" paramName="u" paramProperty="uid" >修改</html:link></td>
<td><html:link style="color:red;font-weight:bold;" action="/users?actions=del" paramId="uid" paramName="u" paramProperty="uid" οnclick="return(confirm('你确定要删除吗?'))">删除</html:link></td>
</tr>
</logic:iterate>
</table>
<div style="color:red;fontsize:20px;">
<a href="/yz-ssh/users.do?actions=queryAll&currentPage=1">首页</a>
<a href="/yz-ssh/users.do?actions=queryAll&currentPage=<%=currentPage-1 %>" οnclick="return <%=currentPage>1%>"<%=currentPage==1?"disabled":"" %> >上一页</a>
<a href="/yz-ssh/users.do?actions=queryAll&currentPage=<%=currentPage+1 %>" οnclick="return <%=currentPage<pageCount%>" <%=currentPage==pageCount?"disabled":"" %>>下一页</a>
<a href="/yz-ssh/users.do?actions=queryAll&currentPage=<%=pageCount%>">尾页</a>
当前页${currentPage==null?1:currentPage}
<b style="color:blue;font-weight:bold;font-size:50px;">/
</b>总页数:${pageCount}
</div>

</center>
</body>
</html:html>

modify.jsp <%@ page language="java" pageEncoding="utf-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />

<title>用户修改</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">

</head>

<body>
<center>
<table>
<caption><h1>用户注册</h1></caption>
<html:form action="/users?actions=finishModify">
<tr>
<html:hidden property="uid"/>
<td>用户名:</td>
<td><html:text property="uname" ></html:text></td>
</tr>
<tr>
<td>密码:</td>
<td><html:password property="pwd" ></html:password></td>
</tr>
<tr>
<td>生日::</td>
<td><html:text property="birth" ></html:text></td>
</tr>
<tr>
<td>爱好:</td>
<td>
<html:multibox property="aihaos" value="电影"></html:multibox>电影
<html:multibox property="aihaos" value="游戏"></html:multibox>游戏
<html:multibox property="aihaos" value="音乐"></html:multibox>音乐
<html:multibox property="aihaos" value="泡妞"></html:multibox>泡妞
<html:multibox property="aihaos" value="美女"></html:multibox>美女
<html:multibox property="aihaos" value="帅哥"></html:multibox>帅哥
<html:multibox property="aihaos" value="旅行"></html:multibox>旅行
<html:multibox property="aihaos" value="无聊"></html:multibox>无聊
<html:multibox property="aihaos" value="感伤"></html:multibox>感伤
<html:multibox property="aihaos" value="做白日梦"></html:multibox>做白日梦
</td>
</tr>
<tr>
<td>部门:</td>
<td><html:select property="deptId">
<html:optionsCollection name="allDept" label="deptName" value="deptId"/>
</html:select>

</td>
</tr>

<tr>

<td><html:submit value=" 注 册 "></html:submit></td>
<td><html:reset value=" 重 置 "></html:reset></td>
</tr>
</html:form>
</table>
</center>
</body>
</html:html>

msg.jsp <%@ page language="java" pageEncoding="utf-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />

<title>小毅温馨提示您o(∩_∩)o</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">
-->

</head>

<body>
<h1 style="color:red;">${msg}</h1><br>
<h3 style="color:blue;"><a href="javascript:history.back();"> 返 回 </a></h3><br>
<h3 style="color:red;"><a href="${go}"> ${goinfo} </a></h3>
</body>
</html:html>
数据库创建脚本.sql drop database if exists ssh;
create database ssh;
use ssh;

-- 用户表
drop table if exists users;
create table users(
uid int PRIMARY key auto_increment comment '用户编号',
uname varchar(32) not NULL comment '用户名',
pwd char(16) not null comment '密码',
birth date not null comment '出生日期',
aihao varchar(50) comment '爱好',
deptId int not null comment'所在部门编号'
);
-- 部门表
drop table if exists dept;
create table dept(
deptId int primary key auto_increment comment '部门编号',
deptName varchar(32) not NULL comment '部门名称'
);

-- 添加约束

alter table users add constraint fk_users_deptId foreign key(deptId) references dept(deptId);

-- 插入测试数据
insert into dept values(default,'技术部');
insert into dept values(default,'无聊部');
insert into dept values(default,'美女部');
insert into dept values(default,'帅哥部');
insert into users values(default,'小毅','yizhi','1989-01-25 01:01:01','无聊,游戏',1);

struts+spring+hibernate整合小例子相关推荐

  1. Struts+Spring+Hibernate整合入门详解

    标签: strutshibernatespringbeanactionimport 2007-08-12 16:05 36280人阅读 评论(13) 收藏 举报 分类: STRUTS&SPRI ...

  2. JSF Struts Spring Hibernate 整合

    JSF1.1+Struts2.1+Spring2.0+Hibernate3.1 图示: JSF1.1 Jar包: MyFaces1.1 Jar包:  Struts2.1 Jar包:  Spring2. ...

  3. ssh(Struts+spring+Hibernate)三大框架整合-简述

    ssh(Struts+spring+Hibernate)三大框架配合使用来开发项目,是目前javaee最流行的开发方式,必须掌握: 注意: 为了稳健起见,每加入一个框架,我们就需要测试一下,必须通过才 ...

  4. struts+spring+hibernate总结

    简单的说: struts 控制用的 hibernate 操作数据库的 spring 用解耦的 详细的说: struts 在 ssh 框架中起控制的作用 , 其核心是 Controller, 即 Act ...

  5. java ssh框架 struts spring hibernate 简介

    目录 什么是SSH框架 浅谈Struts 什么是Struts Struts的核心构成 为什么使用Struts 浅谈Hibernate 什么是Hibernate Hibernate的核心构成 浅谈Spr ...

  6. flex3+blazeds+spring+hibernate整合小结

    近来flex盛行,因此这两天也借了本书看了两天,发觉作为非页面设计人员,flex 还是很好的,flex builder很好用,拖拉就 有很COOL的界面了,而且flex总的来说基本东西不难学,有编程基 ...

  7. Java程序员从笨鸟到菜鸟之(七十九)细谈Spring(八)spring+hibernate整合基本详解

    由于spring和hibernate处于不同的层次,Spring关心的是业务逻辑之间的组合关系,Spring提供了对他们的强大的管理能力, 而Hibernate完成了OR的映射,使开发人员不用再去关心 ...

  8. SSH框架(Struts+Spring+Hibernate)

    在SSH 的组合框架模式中,三者各自的作用? Struts 是一个很好的MVC框架,主要技术是Servlet和Jsp.Struts的MVC设计模式可以使我们的逻辑变得很清晰,让我们写的程序层次分明.基 ...

  9. 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

    Long Long ago.就听说过SSH.起初还以为是一个东东,详细内容更是不详,总认为高端大气上档次,经过学习之后才发现,不不过高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基本 ...

最新文章

  1. UI培训分享:UI设计师要掌握哪些知识点
  2. 读取手柄_中高端游戏手柄比选,北通宙斯才是游戏的最佳拍档
  3. Java中 volatile 关键字的最全总结,快给自己查缺补漏吧!
  4. .net之workFlow4.0学习
  5. Ansible 快速入门
  6. [原]NYOJ-开灯问题-77
  7. 欢乐纪中某B组赛【2019.1.26】
  8. Linux系统:软链接与硬链接的原理分析
  9. python所有实验_python列表的小实验
  10. 转:PHP中实现非阻塞模式
  11. 集群类型以及提高服务器性能的技术概述
  12. 合作︱2018CCF青年精英大会首设科技创业竞赛,快来报名吧!
  13. 与技术无关,犯错了,希望大家帮下
  14. prototype.js学习(3)函数绑定
  15. jquery 操作表格实例
  16. 【测试】史上最详细的测试用例设计方法讲解
  17. OutMan——面向对象的三大特性、对象和对象之间的关系以及动态类型检测方法
  18. AR游戏觉醒,或将成为手游未来独角兽
  19. C语言编程--根据麦克劳林公式计算任意角的正弦余弦
  20. LDPC编码原理概述

热门文章

  1. 翻翻git之---低内存损耗,简单易用的汉字-拼音转换库 TinyPinyin
  2. 软件需求工程 高校教学平台 工程部署计划
  3. 解决阿里云RDS mysql5.7数据库不能存储微信昵称含特殊表情或字符的问题
  4. 物联网在我们生活中的应用,主要聚焦在哪些领域
  5. PTA Basic 1003 我要通过
  6. 不知如何选股?不知哪种指标策略可靠?量化分析比较VRSI、BBIBOLL、WR、BIAS、RSI指标策略收益情况
  7. 中国大学MOOC-翁恺-C语言程序设计PAT习题集(第五章)
  8. 基于FPGA的图像均衡处理
  9. 速达开发版增值报表-非财务资产负债利润表
  10. 2023“汇臻心 赋新能”,人大金仓百城巡展再启航