为了账号安全,请及时绑定邮箱和手机立即绑定

使用Struts2+Hibernate开发学生信息管理功能

  • hibernate 5.4.27 导入包更换:org.hibernate.boot.registry.StandardServiceRegistryBuilder; ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(config .getProperties()).build();
    查看全部
    0 采集 收起 来源:生成表结构

    2021-02-06

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

    查看全部
  • 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>
    查看全部
  • 重点   重点

    查看全部
  • 实现修改学生资料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";

    }



    查看全部
  • 编写修改学生的业务代码:

    动作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——保存修改后的学生资料的动作



    查看全部
  • 修改学生资料

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

    1、界面原型演示

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

    3、编写修改action

    4、页面调用

    查看全部
  • 添加学生的方法

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

    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;

    }

    }

    }


    查看全部
  • 添加学生信息

    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、编写添加学生业务逻辑代码

    查看全部
  • 添加学生资料——实现步骤和界面原型设计

    1、界面原型设计

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

    3、编写添加action

    4、页面调用


    查看全部
  • 删除学生资料

    一:界面调用


    <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 采集 收起 来源:删除学生资料

    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)

    查看全部
  • 设计学生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>



    查看全部
  • 学生业务逻辑接口实现

    查询所有学生方法

    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));

    }

    }



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

    添加学生:

    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);



    查看全部
  • 学生管理模块

    一、显示学生资料

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

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


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

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

                     4、设计学生Action类

                     5、页面调用

                     6、显示数据

    2、删除学生资料

    3、学生主键生成策略

    4、添加学生资料

    5、修改学生资料


    查看全部
  • 表单验证功能(登陆表单上显示报错信息)

    方式一:客户端(前端界面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>


    查看全部
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
各位小伙伴,学习本课程前需要对 Struts2和Hibernate的基础知识有所了解。
老师告诉你能学到什么?
1、掌握Struts2和Hibernate的整合开发 2、能够使用Struts2+Hibernate独立开发信息管理类的项目,进行数据的增删改查。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!