springMVC+struts2(传值,取值) +hibernate
来源:互联网 发布:cs1.5和1.6知乎 编辑:程序博客网 时间:2024/06/06 09:52
springMVC+struts2(传值,取值) +hibernate
=========================================================
=========================================================
hibernate 流程:
连接数据库:配置(hibernate-cxg.xml)
连接数据库:配置(hibernate-cxg.xml)
1.建pojo类(注解或配置)
1) 注解:
例如:
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Basic
private String username;
@Basic
private String password;
/.省略 : toString ,get set, 有参构造器,无参构造器./
}
2)配置文件:逆向生成
}
2)配置文件:逆向生成
==========hibernate分页=====================
1)建立一个pager类
2)实现分页public Pager pagerff(Pager p, Map<String, Object> pram) (p:分页数据,pram:分页条件)
public Pager pagerff(Pager p, Map<String, Object> pram) {
Session session = null;
Transaction tx = null;
try {
session=HibernateUtils.getSessionFactory().openSession();
tx=session.beginTransaction();
String hql=p.getHql();//获取查询语句
Query query= session.createQuery(hql).setCacheable(true);
//设置参数
query.setProperties(pram);
//查询具体数据
int count=query.list().size();
p.setRowsTotal(count);
int nowPage=1;
if(p.getPage()>0){
nowPage=p.getPage();
}
//指定从那个对象开始查询,参数的索引位置是从0开始的,
query.setFirstResult((p.getPage()-1)*p.getRows());
//分页时,一次最多产寻的对象数
query.setMaxResults(p.getRows());
List<?> list1=query.list();
p.setList(list1);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
return p;
}
1)建立一个pager类
2)实现分页public Pager pagerff(Pager p, Map<String, Object> pram) (p:分页数据,pram:分页条件)
public Pager pagerff(Pager p, Map<String, Object> pram) {
Session session = null;
Transaction tx = null;
try {
session=HibernateUtils.getSessionFactory().openSession();
tx=session.beginTransaction();
String hql=p.getHql();//获取查询语句
Query query= session.createQuery(hql).setCacheable(true);
//设置参数
query.setProperties(pram);
//查询具体数据
int count=query.list().size();
p.setRowsTotal(count);
int nowPage=1;
if(p.getPage()>0){
nowPage=p.getPage();
}
//指定从那个对象开始查询,参数的索引位置是从0开始的,
query.setFirstResult((p.getPage()-1)*p.getRows());
//分页时,一次最多产寻的对象数
query.setMaxResults(p.getRows());
List<?> list1=query.list();
p.setList(list1);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
return p;
}
===========(1)hibernate:根据id查询==================
public UserBean getUser(Class<?> cls, Serializable pk) {
Session session = null;//获得session
Transaction tx = null;//事务
UserBean user=null; //对象
try {
session=HibernateUtils.getSessionFactory().openSession();
tx=session.beginTransaction();//开启事务
user=(UserBean)session.get(cls, pk);//查询 这里的pk指的就是id
tx.commit();//提交事务
} catch (Exception e) {
e.printStackTrace();
tx.rollback();//回滚事务
}finally{
session.close();//关闭session
}
return user;
}
===========(2)hibernate:HQL查询==================
public List<?> findUser(String sql, Map<String, Object> pram) {
Session session = null;
Transaction tx = null;
List<?> list=null;
try {
session=HibernateUtils.getSessionFactory().openSession();
tx=session.beginTransaction();
Query query= session.createQuery(sql).setCacheable(true);
// ========获取查询参数,设置查询参数======
String userName=pram.get("userName").toString();
String password=pram.get("password").toString();
query.setString("userName", '%'+userName+'%');
query.setString("password",password);
list=query.list();
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
return list;
}
------------------------------------------------
调用HQl查询
---------方式一-----------
@Override
public List<?> findUser(Map<String,Object>pram) {
//模糊查询
String hql="from UserBean where userName like :userName and password =:password";
return iusUserDao.findUser(hql, pram);
}
---------方式二-----------
String hql="from UserBean as user where user.userName='kitty2'";
Query query=session.createQuery(hql);
List userList=query.list();
================(3)通过创建Criteria方式 =========================
@Override
public List<?> findUser(Class<?> cls, String userName) {
Session session = null;
Transaction tx = null;
List<?> list=null;
try {
session=HibernateUtils.getSessionFactory().openSession();
tx=session.beginTransaction();
//通过session的createCriteria()方法创建Criteria对象
Criteria criteria = session.createCriteria(cls);
//设定查询条件
//(String propertyName, String value, MatchMode matchMode)
/* MatchMode.START:字符串在最前面的位置.相当于"like 'value%'"
MatchMode.END:字符串在最后面的位置.相当于"like '%value'"
MatchMode.ANYWHERE:字符串在中间匹配.相当于"like '%value%'"
MatchMode.EXACT:字符串精确匹配.相当于"like 'value'" */
criteria.add(Restrictions.like("userName", userName, MatchMode.ANYWHERE));
//调用Criteria类的list()方法执行查询
list = criteria.list();
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
return list;
}
==============SpringMVC传值取值 ========================
public UserBean getUser(Class<?> cls, Serializable pk) {
Session session = null;//获得session
Transaction tx = null;//事务
UserBean user=null; //对象
try {
session=HibernateUtils.getSessionFactory().openSession();
tx=session.beginTransaction();//开启事务
user=(UserBean)session.get(cls, pk);//查询 这里的pk指的就是id
tx.commit();//提交事务
} catch (Exception e) {
e.printStackTrace();
tx.rollback();//回滚事务
}finally{
session.close();//关闭session
}
return user;
}
===========(2)hibernate:HQL查询==================
public List<?> findUser(String sql, Map<String, Object> pram) {
Session session = null;
Transaction tx = null;
List<?> list=null;
try {
session=HibernateUtils.getSessionFactory().openSession();
tx=session.beginTransaction();
Query query= session.createQuery(sql).setCacheable(true);
// ========获取查询参数,设置查询参数======
String userName=pram.get("userName").toString();
String password=pram.get("password").toString();
query.setString("userName", '%'+userName+'%');
query.setString("password",password);
list=query.list();
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
return list;
}
------------------------------------------------
调用HQl查询
---------方式一-----------
@Override
public List<?> findUser(Map<String,Object>pram) {
//模糊查询
String hql="from UserBean where userName like :userName and password =:password";
return iusUserDao.findUser(hql, pram);
}
---------方式二-----------
String hql="from UserBean as user where user.userName='kitty2'";
Query query=session.createQuery(hql);
List userList=query.list();
================(3)通过创建Criteria方式 =========================
@Override
public List<?> findUser(Class<?> cls, String userName) {
Session session = null;
Transaction tx = null;
List<?> list=null;
try {
session=HibernateUtils.getSessionFactory().openSession();
tx=session.beginTransaction();
//通过session的createCriteria()方法创建Criteria对象
Criteria criteria = session.createCriteria(cls);
//设定查询条件
//(String propertyName, String value, MatchMode matchMode)
/* MatchMode.START:字符串在最前面的位置.相当于"like 'value%'"
MatchMode.END:字符串在最后面的位置.相当于"like '%value'"
MatchMode.ANYWHERE:字符串在中间匹配.相当于"like '%value%'"
MatchMode.EXACT:字符串精确匹配.相当于"like 'value'" */
criteria.add(Restrictions.like("userName", userName, MatchMode.ANYWHERE));
//调用Criteria类的list()方法执行查询
list = criteria.list();
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
return list;
}
==============SpringMVC传值取值 ========================
Spring取值:http://blog.csdn.net/pangliang_csdn/article/details/52486787
常用的:
方法一:通过值传播:通过在controller方法中:定义和表单中相同的数据参数!
方法二:通过对象传播:只需将对象的属性名和input的name值一一匹配即可
方法三:public String login(HttpServletRequest request,
String name,
@RequestParam("pass")String password) // 表单属性是pass,用变量password接收
。。。
通过获取request ,response方法
直接在参数中定义:public String test(Model model,User user,HttpServletRequest request,HttpServletResponse response,HttpSession session)
常用的:
方法一:通过值传播:通过在controller方法中:定义和表单中相同的数据参数!
方法二:通过对象传播:只需将对象的属性名和input的name值一一匹配即可
方法三:public String login(HttpServletRequest request,
String name,
@RequestParam("pass")String password) // 表单属性是pass,用变量password接收
。。。
通过获取request ,response方法
直接在参数中定义:public String test(Model model,User user,HttpServletRequest request,HttpServletResponse response,HttpSession session)
spring存值的方式:
方法一:直接在参数中定义:model :
@RequestMapping("/login.do")
public String login(String name,String pass ,ModelMap model){
User user = userService.login(name,pwd);
model.addAttribute("user",user);
model.put("name",name);
return "success";
}
方法二:将值存入map中返回一个modelAndView
@RequestMapping("/login.do")
public ModelAndView login(String name,String pass){
User user = userService.login(name,pwd);
Map<String,Object> data = new HashMap<String,Object>();
data.put("user",user);
return new ModelAndView("success",data);
}
方法三:利用注解如: 使用@ModelAttribute示例
,使用@ModelAttribute注解
在Controller方法的参数部分或Bean属性方法上使用
@ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do")
public String login(@ModelAttribute("user") User user){
//TODO
return "success";
}
@ModelAttribute("name")
public String getName(){
return name;
}
方法四:利用request session等
方法一:直接在参数中定义:model :
@RequestMapping("/login.do")
public String login(String name,String pass ,ModelMap model){
User user = userService.login(name,pwd);
model.addAttribute("user",user);
model.put("name",name);
return "success";
}
方法二:将值存入map中返回一个modelAndView
@RequestMapping("/login.do")
public ModelAndView login(String name,String pass){
User user = userService.login(name,pwd);
Map<String,Object> data = new HashMap<String,Object>();
data.put("user",user);
return new ModelAndView("success",data);
}
方法三:利用注解如: 使用@ModelAttribute示例
,使用@ModelAttribute注解
在Controller方法的参数部分或Bean属性方法上使用
@ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中
@RequestMapping("/login.do")
public String login(@ModelAttribute("user") User user){
//TODO
return "success";
}
@ModelAttribute("name")
public String getName(){
return name;
}
方法四:利用request session等
==============Struts2的传值和取值 =================
struts2取值:http://blog.csdn.net/lsh6688/article/details/7863322
方法一:获取request ,session,response
如:
(1) private static HttpServletRequest request;
request = ServletActionContext.getRequest();
(2)实现 ServletRequestAware,ServletResponseAware接口
struts2取值:http://blog.csdn.net/lsh6688/article/details/7863322
方法一:获取request ,session,response
如:
(1) private static HttpServletRequest request;
request = ServletActionContext.getRequest();
(2)实现 ServletRequestAware,ServletResponseAware接口
方法二:通过属性驱动方式
通过提供get 和set方法
通过提供get 和set方法
方法三:模型驱动方式,必须要实现ModelDriven<T>接口。对于要传入多个model第二种方式不方便
方法四:第三种方式可以完全不实现ModelDriven<T>,也可使用多个model对象的属性。
表单:
<form action="sys/login.action" method="post">
<input type="text" name="user.username">
<input type="text" name="teacher.level">
<input type="submit" value="submit">
</form>
后台:(注意提供set方法)
public class sysAction extends ActionSupport{
private User user;
private Teacher teacher;
public String login() throws Exception {
System.out.println(user.getUsername());
System.out.println(teacher.getLevel());
return SUCCESS;
}
public void setUser(User user) {
this.user = user;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
}
方法四:第三种方式可以完全不实现ModelDriven<T>,也可使用多个model对象的属性。
表单:
<form action="sys/login.action" method="post">
<input type="text" name="user.username">
<input type="text" name="teacher.level">
<input type="submit" value="submit">
</form>
后台:(注意提供set方法)
public class sysAction extends ActionSupport{
private User user;
private Teacher teacher;
public String login() throws Exception {
System.out.println(user.getUsername());
System.out.println(teacher.getLevel());
return SUCCESS;
}
public void setUser(User user) {
this.user = user;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
}
struts2存值:
方法一:利用actionContext方法
通过ActionContext方法:
public class LoginAction{
public string execute(){
SomeBean value=new SomeBean();
value.setName("sfsfjsfje");
ActionContext context=ActionContext.getContext();
//往request里放attribute
context.put("value",value);
//往session里放
context.getSession().put("value",value);
return SUCCESS;
}
}
方法一:利用actionContext方法
通过ActionContext方法:
public class LoginAction{
public string execute(){
SomeBean value=new SomeBean();
value.setName("sfsfjsfje");
ActionContext context=ActionContext.getContext();
//往request里放attribute
context.put("value",value);
//往session里放
context.getSession().put("value",value);
return SUCCESS;
}
}
0 0
- springMVC+struts2(传值,取值) +hibernate
- SpringMVC+Hibernate+Struts2开发环境
- Spring struts2 hibernate MyBatis SpringMVC 原理
- javaweb,spring,springmvc,struts2,hibernate,mybatis录像
- Struts2 checkbox复选框 传值/取值
- struts2 取值备忘
- struts2 标签 取值
- struts2取值
- Struts2页面取值
- Struts2取值方式
- struts2中的取值
- Struts2页面取值:
- struts2对象取值
- struts2取值
- struts2标签#、%、$取值
- struts2取值
- struts2页面取值
- struts2取值方法
- Android 异步消息处理机制(Handler 、 Looper 、MessageQueue)源码解析
- malloc,realloc,calloc的介绍与区别
- 有关启动
- 方便学习用的
- JUnit4,SVN版本控制工具--24
- springMVC+struts2(传值,取值) +hibernate
- Python学习总结笔记(1)--Dom XML操作
- python与C#的互相调用
- ACM JiLi Number
- gdb的基本使用
- 用微信小程序开发的Canvas绘制可配置的转盘抽奖
- 文件编程
- 编程实践8—升级 Elasticsearch5.0 之 License
- Linux下的C语言编程——文件存储链表实现的通讯录