简介 目录 评价 推荐
  • Mr菠萝汁 2021-02-06
    hibernate 5.4.27 导入包更换:org.hibernate.boot.registry.StandardServiceRegistryBuilder; ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config .getProperties()).build();
    截图
    0赞 · 0采集
  • 慕婉清9153070 2019-10-20

    Hibernate 实体类关系映射 配置文件

    截图
    0赞 · 0采集
  • Arvinda 2019-06-24
    Struts2与Hibernate整合:    
    1. 创建struts2和hibernate用户类库   
    2. 导入struts2与hibernate的jar包    
    3. 配置web.xml文件(加入struts2的过滤器)
      <filter>        
       <filter-name>struts2</filter-name>        
       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> // struts2过滤器    
       </filter>    
       <filter-mapping>        
          <filter-name>struts2</filter-name>        
          <url-pattern>/*</url-pattern>  // 过滤所有请求    
       </filter-mapping>    
    4. 创建struts.xml     
        WEB-INF/classes/struts.xml --> src/struts.xml     
        <package name="default" namespace="/" extends="struts-default"></package>    
    5. 配置hibernate.cfg.xml(hibernate的主配置文档)    
        src/hibernate.cfg.xml  
        <hibernate-configuration>   
          <session-factory>    
           <property name="connection.username">root</property>    
           <property name="connection.password"></property>    
           <property name="connection.driver_class">com.mysql.jbdc.Driver</property>    
           <property name="connection.url">jdbc:mysql:///test?useUnicode=true&amp;characterEncoding=UTF-8</property>
           <property name="dialect">org.hibernate.dialet.MySQLDialect</property>    
           <property name="show_sql">true</property>    
           <property name="format_sql">true</property>    
           <property name="hbm2dd1.auto">update</property>    
           <property name="hibernate.current_session_context_class">thread</property>// 使用getCurrentSession方式打开会话   
          </session-factory>  
        </hibernate-configuration>
    0赞 · 1采集
  • 慕虎7014704 2019-06-22

    重点   重点

    0赞 · 0采集
  • 大鹏111 2019-05-13

    实现修改学生资料action和页面调用

    业务逻辑代码:

    public boolean updateStudent(Student stu) {

    Transaction transaction=null;

    try{

    Session session=MyHibernateSessionFactory.getSessionFactory().getCurrentSession();

    transaction=session.beginTransaction();

    session.update(stu);;

    transaction.commit();

    return true;

    }catch(Exception e){

    e.printStackTrace();

    return false;

    }finally{

    if(transaction!=null){

    transaction=null;

    }

    }

    }

    action代码:

    public String save() throws ParseException{

    Student stu=new Student();

    stu.setSid(request.getParameter("sid"));

    stu.setSname(request.getParameter("sname"));

    stu.setGender(request.getParameter("gender"));

    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

    stu.setBirthday(sdf.parse(request.getParameter("birthday")));

    stu.setAddress(request.getParameter("address"));

    StudentDao sd=new StudentDaoImpl();

    sd.updateStudent(stu);

    return "save_success";

    }



    0赞 · 0采集
  • 大鹏111 2019-05-13

    编写修改学生的业务代码:

    动作1——页面显示学生资料的动作

    逻辑查询:

    public Student queryStudentById(String sid) {

    Transaction transaction=null;

    Student s=null;

    try{

    Session session=MyHibernateSessionFactory.getSessionFactory().getCurrentSession();

    transaction=session.beginTransaction();

    s=session.get(Student.class, sid);

    transaction.commit();

    return s;

    }catch(Exception e){

    e.printStackTrace();

    return s;

    }finally{

    if(transaction!=null){

    transaction=null;

    }

    }

    }

    Action动作:

    public String modify(){

    String sid=request.getParameter("sid");

    StudentDao sd=new StudentDaoImpl();

    Student s=sd.queryStudentById("sid");

    session.setAttribute("student_modify", s);

    return "student_modify_success";

    }

    页面显示学生资料:

    <form name="modifyForm" action="<%=path%>/students/Students_save.action" method="post">

    <table width="400" >

      <tr>

        <td width="30%">学号:</td>

        <td><input type="text" name="sid" value='<s:property value="#session.student_modify.sid"/>'  readonly="readonly"/></td>

      </tr>

      <tr>

        <td width="30%">姓名:</td>

        <td><input type="text" name="sname" value='<s:property value="#session.student_modify.sname"/>'/></td>

      </tr>

      <tr>

        <td>性别:</td>

        <td>

          <s:if test='%{#session.student_modify.gender=="男"}'>

             <input type="radio" name="gender" value="男" checked="checked"/>男

             <input type="radio" name="gender" value="女"/>女

          </s:if>

          <s:else>

             <input type="radio" name="gender" value="男" />男

             <input type="radio" name="gender" value="女" checked="checked"/>女

          </s:else>

          </td>

      </tr>

      <tr>

        <td>出生日期:</td>

        <td><input name="birthday" type="text" id="control_date" size="20"

          maxlength="10" onclick="new Calendar().show(this);" readonly="readonly" 

          value="<s:date name="#session.student_modify.birthday" format="yyyy-MM-dd"/>"

          />

        </td>

      </tr>

      <tr>

        <td>地址:</td>

        <td><input type="text" name="address" value='<s:property value="#session.student_modify.address"/>'/></td>

      </tr>

      <tr>

        <td colspan="2" align="center"><input class="button" type="submit" value="修改"></td>

      </tr>

    </table>

    </form>




    动作2——保存修改后的学生资料的动作



    0赞 · 0采集
  • 大鹏111 2019-05-13

    修改学生资料

    介绍:通过点击学生姓名,跳转到需改页面,涉及技术(信息回显),注意:学生学号不能修改,回显的信息是从数据库中查出来的

    1、界面原型演示

    2、编写修改学生业务逻辑代码

    3、编写修改action

    4、页面调用

    0赞 · 0采集
  • 大鹏111 2019-05-13

    添加学生的方法

    提交事物:是为了下次开启事物,可以正常执行。

    public boolean addStudent(Student stu) {

    Transaction transaction=null;

    try{

    Session session=MyHibernateSessionFactory.getSessionFactory().getCurrentSession();

    transaction=session.beginTransaction();

    stu.setSid(this.getNewSid());

    session.save(stu);

    transaction.commit();

    return true;

    }catch(Exception e){

    e.printStackTrace();

    return false;

    }finally{

    if(transaction!=null){

    transaction=null;

    }

    }

    }


    0赞 · 0采集
  • 大鹏111 2019-05-13

    添加学生信息

    1、学生主键生成策略:学生sid是字符串类型,每次由系统自动生成。

    额外编写生成学生学号的方法:该方法功能——是去掉学号前的S,剩下转换为数字,转换成数字之后+1,之后再还原拼成8位的学生编号。

    //获得学生主键最大值,并且进行加1操作。

    public String getNewSid(){

    Transaction transaction=null;

    String hql="";

    String sid=null;

    try{

    Session session=MyHibernateSessionFactory.getSessionFactory().getCurrentSession();

    transaction=session.beginTransaction();

    hql="select max(sid) from Student";

    Query query=session.createQuery(hql);

    sid=(String)query.uniqueResult();  

    if(sid==null||"".equals(sid)){

    sid="S00000001";

    }else{

    int i=Integer.parseInt(sid.substring(1));

    i++;

    String temp=String.valueOf(i);

    int length=temp.length();

    for(int j=0;j<=7-length;j++){

    temp="0"+temp;

    }

    sid="S"+temp;

    }

    return sid;

    }catch(Exception e){

    e.printStackTrace();

    return null;

    }finally{

    if(transaction!=null){

    transaction=null;

    }

    }

    }

    2、编写添加学生业务逻辑代码

    0赞 · 0采集
  • 大鹏111 2019-05-12

    添加学生资料——实现步骤和界面原型设计

    1、界面原型设计

    2、编写添加学生业务逻辑代码

    3、编写添加action

    4、页面调用


    0赞 · 0采集
  • 大鹏111 2019-05-11

    删除学生资料

    一:界面调用


    <td><a href="<%=path %>/students/Student_delete?sid=<s:property value="#stu.sid"/>" onclick="javascript: return confirm('确认删除吗?');">删除</a></td>


    二:编写业务逻辑代码


    public boolean deleteStudent(String sid) {

    // TODO Auto-generated method stub

    Transaction transaction=null;

    try{

    Session session=MyHibernateSessionFactory.getSessionFactory().getCurrentSession();

    Student stu=(Student)session.get(Student.class, sid);

    session.delete(stu);

    transaction.commit();

    return true;

    }catch(Exception e){

    e.printStackTrace();

    return false;

    }finally{

    if(transaction!=null){

    transaction=null;


    }

    }

    }



    三:编写删除action

    public String delete(){

    String sid=request.getParameter("sid");

    sd.deleteStudent(sid);

    return "student_delete_success";

    }



    四:测试

        <result name="student_delete_success" type="chain">Student_query</result>



    0赞 · 0采集
  • 大鹏111 2019-05-11

    页面调用与数据展示

    步骤1修改tree.jsp访问action的路径由于树形菜单打开方式,通过框架方式来打开。

    步骤2:Students_query_success.jsp中添加struts标签<%@ taglib prefix="s" uri="/struts-tags"%>,因为用到<s:iterator>标签来遍历学生,其中该标签用到两个属性,value属性:从哪里获得要遍历的集合,这里采用ognl表达式,struts的值栈分为对象栈和上下文栈,我们放到session中,其实是放到上下文栈中,从上下文栈中获取数据必须以#开头例如:value="#session.student_list"另外一个属性var:表示集合中取出每一个对象的名字。

    每一个对象的属性用<s:property value="#stu.sid">来表示,(说明:

    每次遍历,将session中的list的值取出一个放到对象stu中,然后从stu中取出Student类的信息。)

    出生日期:用中文格式显示,可以用struts格式化日期标签<s:date name

    ="#stu.birthday" format="yyyy年MM月dd日/>(format等同于SimpleDateFormat)

    0赞 · 0采集
  • 大鹏111 2019-05-10

    设计学生Action类(action包中创建StudentAction类并编写action方法来执行查询所有学生的方法)

    action方法:

    public String query(){

    StudentDao sd=new StudentDaoImpl();

    List<Student> list=sd.queryAllStudent();

    if(list!=null&&list.size()>0){

    session.setAttribute("student_list", list);

    }

    return "student_query_success";

    }

    struts.xml:业务分层原理,所以重新创建package,登陆是登陆,学生管理是学生管理的package。

     <package name="student_manage" namespace="/users" extends="struts-default">

        <action name="*_*" method="{2}" class="action.{1}Action">

        <result name="student_query_success">/students/Students_query_success.jsp</result>

        </action>

        </package>



    0赞 · 0采集
  • 大鹏111 2019-05-10

    学生业务逻辑接口实现

    查询所有学生方法

    public List<Student> queryAllStudent() {

    Transaction transaction=null;

    String hql="";

    List<Student> list=null;

    try{

    Session session=MyHibernateSessionFactory.getSessionFactory().getCurrentSession();

    transaction=session.beginTransaction();

    hql="from Student";

    Query query=session.createQuery(hql);

    list=query.list();

    transaction.commit();

    return list;

    }catch(Exception e){

    e.printStackTrace();

    return list;

    }finally{

    if(transaction!=null){

    transaction=null;

    }

    }

    }

    test方法

    @Test

    public void testAddAllStudent(){

    StudentDao sd=new StudentDaoImpl();

    List<Student> studentList=sd.queryAllStudent();

    for(int i=0;i<studentList.size();i++){

    System.out.println(studentList.get(i));

    }

    }



    0赞 · 0采集
  • 大鹏111 2019-05-10

    设计学生业务逻辑接口(包括学生的增删改查的抽象方法)

    添加学生:

    public abstract boolean addStudent(Student s);

    删除学生:

    public abstract boolean deleteStudent(String sid)

    修改学生:

    public abstract boolean updateStudent(Student stu);

    查询学生:
    public abstract List<Student> queryAllStudent();

    public abstract Student queryStudentById(String sid);



    0赞 · 0采集
  • 大鹏111 2019-05-10

    学生管理模块

    一、显示学生资料

    实现步骤:1、添加测试数据(TestStudent类中添加测试方法TestSaveStudent)

    目的:在该方法中添加几条数据,查看是否能插入数据库,从而验证我们创建生成的student表是否可以进行操作。


                     2、设计学生业务逻辑接口

                     3、设计学生业务逻辑接口实现类

                     4、设计学生Action类

                     5、页面调用

                     6、显示数据

    2、删除学生资料

    3、学生主键生成策略

    4、添加学生资料

    5、修改学生资料


    0赞 · 0采集
  • 大鹏111 2019-05-09

    表单验证功能(登陆表单上显示报错信息)

    方式一:客户端(前端界面JavaScript)完成。

    方式二:服务器端(后端struts的验证框架)完成。

    如果出错,则返回登陆界面,并在表单上提示出错信息。

    步骤1:重写从Actionsupport继承的validate()方法。

    addFieldError(key名,错误提示信息):提示错误信息的方法。

    注意:validate()方法会对Action中所有方法进行验证,只对登陆进行验证,注销不需要进行表单验证,所以在注销方法上加@SkipValidation注解,保证执行注销方法时不对表单进行验证。

    public void validate() {

    if("".equals(user.getUsername().trim())){

    addFieldError("usernameError", "用户名不能为空");//错误字段提示信息

    }

    if((user.getPassword()).length()<6){

    addFieldError("passwordError","密码不能小于6位");

    }

    }

    步骤2:

    加入struts核心标签库<%@ taglib prefix="s" uri="/struts-tags"%>

    加入

    <div>

     <s:fielderror/> <!-- 显示表单验证的出错信息 -->

    </div>


    0赞 · 0采集
  • 大鹏111 2019-05-09

    完成显示登陆成功显示用户名:

    1、返回登陆成功页面前,在session中保存登陆成功的用过户名。

    Action中login方法:session.getAttribute("loginUserName",user.getUsername());

    前端页面获取方式:

    JSPsession获取方式:<%=session.getAttribute("loginUserName"%>

    EL表达式获取方式:${sessionScope.loginUserName}

    注销功能:编写注销方法(判断session中是否保存了用户登录成功的用户名,如果有则清空,然后返回一个字符串注销标识,紧接着配置struts.xml)

    session的removeAttribute(""):移除指定key的value。


    0赞 · 0采集
  • 大鹏111 2019-05-09

    设计所有Action父类:

    1、继承ActionSupport:内置很多struts拦截器,方便以后使用。

    2、获得常用的内置对采用偶合IOC方式注入属性,以至于与前端进行联系,

    实现ServletRequestAware、ServletResponseAware、ServletContext、并通过方法为request、response、application、session(通过request.getSession())赋值。

    0赞 · 0采集
  • 蜜蜂仔 2019-05-02

    struts2的三种接收表单数据的方式

    截图
    0赞 · 0采集
  • 慕UI6149097 2019-03-15

    对象关系映射文件

    0赞 · 0采集
  • HappySimon 2018-12-01

    最新API方法:

    Configuration configuration = new Configuration().configure(); ServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build(); SessionFactory sessionfactory = configuration.buildSessionFactory(registry); Session session = sessionfactory.getCurrentSession(); MetadataImplementor metadata = (MetadataImplementor) new MetadataSources(registry).buildMetadata(); SchemaExport export = new SchemaExport(registry,metadata); export.create(true,true);



    1赞 · 0采集
  • HappySimon 2018-12-01

    生成表结构:// 创建配置对象Configuration config = new Configuration().configue();// 创建服务注册对象ServiceReqistry serviceReqistry = new ServiceRegistryBuilder().applySetting(config);// 创建sessionFactorySessionFactory sessionFactory = config.buildeSessionFactory(serviceReqistry);// 创建session对象Session session = sessionFactory.getCurrentSession();// 创建schemaExport对象SchemaExport export = new SchemaExport(config); export.create(true, true); // 第一个true表示生成表结构,第二个表示输出SQL语句

    1赞 · 0采集
  • 慕粉2214578875 2018-11-19

    静态方法不能获取非静态属性

    0赞 · 0采集
  • 慕粉3289534 2018-09-11
    private static SessionFactory sessionFactory;  // 会话工厂属性
    // 构造方法私有化,保证单例模式
    private MyHibernateSessionFactory(){}
    // 公有的静态方法,获得会话工厂对象
    public static SessionFactory getSessionFactory(){
        if(sessionFactory==null){
            Configuration config = new Configuration().configure();
            ServiceReqistry serviceReqistry = new ServiceReqistryBuilder().applySettings(config.getProperties()).buildServiceReqistry();
            sessionFactory = config.buildSessionFactory(serviceReqistry);
            return sessionFactory;
        } else{
            return sessionFactory;
        }
    }


    1赞 · 0采集
  • 慕粉3289534 2018-09-11
    生成表结构:
    // 创建配置对象
    Configuration config = new Configuration().configue();
    // 创建服务注册对象
    ServiceReqistry serviceReqistry = new ServiceRegistryBuilder().applySetting(config);
    // 创建sessionFactory
    SessionFactory sessionFactory = config.buildeSessionFactory(serviceReqistry);
    // 创建session对象
    Session session = sessionFactory.getCurrentSession();
    // 创建schemaExport对象
    SchemaExport export = new SchemaExport(config);
    
    export.create(true, true); // 第一个true表示生成表结构,第二个表示输出SQL语句


    2赞 · 3采集
  • 慕粉3289534 2018-09-11

    实体类的映射文件

    https://img2.mukewang.com/5b9733990001c75e19201080.jpg

    0赞 · 0采集
  • 慕粉3289534 2018-09-11
    Struts2与Hibernate整合:
        1. 创建struts2和hibernate用户类库
        2. 导入struts2与hibernate的jar包
        3. 配置web.xml文件(加入struts2的过滤器)
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> // struts2过滤器
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>  // 过滤所有请求
        </filter-mapping>
        4. 创建struts.xml
         WEB-INF/classes/struts.xml --> src/struts.xml
         <package name="default" namespace="/" extends="struts-default">
        
         </package>
        5. 配置hibernate.cfg.xml(hibernate的主配置文档)
        src/hibernate.cfg.xml
      <hibernate-configuration>
       <session-factory>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <property name="connection.driver_class">com.mysql.jbdc.Driver</property>
        <property
            name="connection.url">jdbc:mysql:///test?useUnicode=true&amp;characterEncoding=UTF-8</property>
        <property name="dialect">org.hibernate.dialet.MySQLDialect</property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hbm2dd1.auto">update</property>
        <property name="hibernate.current_session_context_class">thread</property>// 使用getCurrentSession方式打开会话
       </session-factory>
      </hibernate-configuration>


    4赞 · 2采集
  • 慕圣6698645 2018-08-25

    修改学生资料

    注意:学号不能修改

    截图
    0赞 · 0采集
  • 慕圣6698645 2018-08-25

    说明:每次遍历。将session中的list的值取出一个放到对象stu中,然后从stu中取出Student类的信息。

    截图
    0赞 · 0采集
数据加载中...
开始学习 免费