javaEE考点

过程考核2

  • 一对多关联关系中po类的编写;

    //po类
    public class Course {
    	private int id;
        private String cnum;//课程编号
       	private String cname;//课程名
       	private int teacherid;//教师编号
       	private int className;//授课班级id
       	private String semester;//授课学期
        private List<StudentClass> studentClasses;//重点
        private List<TeacherBean> teacherBeans;//重点
    
    //注意无参的构造方法
    //注意getter和setter方法
    
        public Course(){
    
       	}
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getCnum() {
            return cnum;
        }
    
        public void setCnum(String cnum) {
            this.cnum = cnum;
        }
    
        public String getCname() {
            return cname;
        }
    
        public void setCname(String cname) {
            this.cname = cname;
        }
    
        public int getTeacherid() {
            return teacherid;
        }
    
        public void setTeacherid(int teacherid) {
            this.teacherid = teacherid;
        }
    
        public int getClassName() {
            return className;
        }
    
        public void setClassName(int className) {
            this.className = className;
        }
    
        public String getSemester() {
            return semester;
        }
    
        public void setSemester(String semester) {
            this.semester = semester;
        }
    
        public List<StudentClass> getStudentClasses() {
            return studentClasses;
        }
    
        public void setStudentClasses(StudentClass studentClasses) {
            this.studentClasses = studentClasses;
        }
    
        public List<TeacherBean> getTeacherBeans() {
            return teacherBeans;
        }
    
        public void setTeacherBeans(TeacherBean teacherBeans) {
            this.teacherBeans = teacherBeans;
        }
    }
    
  • 一对多关联查询映射文件mapper和dao编写;

    <!--mapper映射文件
    省略xml头文件-->
    <!--
    1、注意namespace映射文件所在的位置
    2、按照正常的顺序写select语句
    3、注意resultMap不是resultType
    4、resultMap里面需要把原本的类里面的属性和数据库的table里面的字段对应
    5、使用collection标签;property表示本类里面的属性,ofType表示这个属性属于的那个类
    6、在collection里面写上调用的那个类的里面的属性和数据库table的字段对应
    -->
    <mapper namespace="...">
        <select id="..." parameterType="Integer" resultMap="id1">
        	select o.*,p.id as pid,p.name,p.price
    	    from tb_orders o,tb_product p,tb_ordersitem  oi
    	    WHERE oi.orders_id=o.id 
    	    and oi.product_id=p.id 
    	    and o.id=#{id}
        </select>
        <resultMap id="id1" type="Orders">
            <id property="id" column="id" />
    	    <result property="number" column="number" />
    	    <!-- 多对多关联映射:collection -->
    	    <collection property="productList" ofType="Product"><!--注意ofType,Orders里面的属性productList,类型是Product-->
    	        <id property="id" column="pid" />
    	        <result property="name" column="name" />
    	        <result property="price" column="price" />
    	    </collection>
        </resultMap>
    </mapper>
    
    //dao类的编写
    public class OrderDao {
    	 /**
         * 多对多
         */
        /*使用sqlSession3步走方法*/
        public Orders findOrdersWithPorduct(int orderid){
            // 1、通过工具类生成SqlSession对象
            SqlSession session = MybatisUtils.getSession();//获取sqlSession
            // 2、查询id为1的订单中的商品信息
            Orders orders = session.selectOne("edu.hfuu.javaee.chapter72.mapper."
                                   + "OrdersMapper.findOrdersWithPorduct", orderid);//调用其中的方法;调用sqlSession的方法的时候,前面需要写全路径名
            // 3、关闭SqlSession
            session.close();
            return orders;//查询需要有返回值
        }
    }
    
  • spring中依赖注入的实现;

    public class Class1{
        /*依赖注入的实现*/
        //1、要有一个私有的属性
        //2、给这个属性一个setter方法
        //3、需要对应的在spring的配置里面配置好bean
        private Teacher teacher;
        public void setTeacher(Teacher teacher){
            this.teacher = teacher;
        }
    }
    
    <bean id="teacher" class="Teacher"/>
        <!--具体的类路径还是要根据题目来定-->
    <bean id="class1" class="Class1">
        <property name="teacher" ref="teacher"/>
    </bean>
    <!--1、把需要使用的两个类在spring配置文件里面注册成bean
    	2、在需要调用的类注册的bean里面加上property,表示里面的私有的属性
    	3、property的ref表示之前注册的被调用的class的bean的id
    -->
    
  • 切入点表达式的编写和释义;

    匹配所有目标类的公共方法
    execution("public * *(..)")
    
    匹配com.baobaotao包下所有类的所有方法
    execution(* com.baobaotao.*(..)
        
    匹配com.baobaotao包,子孙包下所有类的所有方法
    execution(* com.baobaotao .. *..)    
    
  • 是servlet作为控制器处理添加表单的请求(接受请求参数,数据类型转换,存储结果数据,跳转到目标页面或目标servlet)。

    public class StudentClassListServlet extends HttpServlet {
        
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}
    
    	
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		//1、 接收请求参数,并进行数据类型转换
    		request.setCharacterEncoding("UTF-8");		
    		String className = request.getParameter("className");
    		String dept = request.getParameter("dept");
    		String classCode = request.getParameter("classCode");		
    		
    		StudentClass cla = new StudentClass();
    		if(className!=null && !"".equals(className.trim()))
    			cla.setClassName(className);
    		if(dept!=null && !"".equals(dept.trim()))
    			cla.setDept(dept);
    		if(classCode!=null && !"".equals(classCode.trim()))
    			cla.setClassCode(classCode);
    		
    		//2、 调用JavaBean实现业务逻辑
    		StudentClassService service = new StudentClassService();
    		List<StudentClass> list = service.query(cla);
    		
    		//3、 将结果数据list存储在request作用域,以便jsp共享
    		request.setAttribute("claList", list);		
    		
    		//4、 跳转到目标资源
    		request.getRequestDispatcher("/WEB-INF/jsp/studentClass/list.jsp").forward(request, response);		
    	}
    
    }
    
  • requset获取数据(勿忘类型转换),String与int,Date类型的互相转换。

    //1、获取数据
    String name = request.getParemeter("name");
    
    //2、String转int
    String id1 = request.getParameter("id");
    int id1 = Integer.parseInt(id1);
    
    //3、String转Date
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String date1 = request.getParameter("date");
    Date date = simpleDateFormat.format(date1)
    

实验考核

  • 1 查询功能servlet+jsp

    <!--jsp-->
    <html>
    <head>
        <title>CourseList</title>
        <style>
            #title{
                font-size: 40px;
                font-family: 华文楷体, serif;
            }
            #select{
                font-size: 20px;
                font-family: 微软雅黑,serif;
            }
            #btn{
                width: 50%;
                text-align: center;
            }
            #list{
                width: 50%;
                text-align: center;
            }
            #list tr{
                height: 30px;
            }
        </style>
        <script>
            function btnQuery() {
                var cnum = document.getElementsByName("cnum")[0].value;
                var cname = document.getElementsByName("cname")[0].value;
                var className = document.getElementsByName("className")[0].value;
                // alert(cnum + cname + className);
                location.href = "CourseListIOC?cnum="+cnum+"&cname="+cname+"&className="+className;
            }
            function btnAdd() {
                location.href = "CourseAddUIIOC";
            }
            function btnEdit() {
                var obj = document.getElementsByName("id");
                var ids = [];
                for (k in obj) {
                    if (obj[k].checked) {
                        ids.push(obj[k].value);
                    }
                }
                if (ids.length == 1) {
                    // alert(ids[0]);
                    location.href = "CourseEditUIIOC?id="+ids[0];
                }else {
                    alert("请选择一条且只能选择一条记录修改");
                }
            }
            function btnDelete() {
                var obj = document.getElementsByName("id");
                var ids = [];
                for (k in obj) {
                    if (obj[k].checked) {
                        ids.push(obj[k].value);
                    }
                }
                if (ids.length == 1) {
                    if (confirm("确认删除本条信息吗!")){
                        location.href = "CourseDeleteIOC?id=" + ids[0];
                    }
                }else {
                    alert("请选择一条且只能选择一条记录删除");
                }
            }
        </script>
    </head>
    <body>
    <div align="center">
        <span id="title">课程信息查询</span>
    </div>
    <%
        String cnum = request.getParameter("cnum");
        String cname = request.getParameter("cname");
        String className = request.getParameter("className");
    %>
    <div align="center">
        <table id="select" align="center">
            <tr>
                <td>课程编号:</td><td><input name="cnum" value="<%=cnum==null?"":cnum%>" type="text" /></td>
                <td>课程名称:</td><td><input name="cname" value="<%=cname==null?"":cname%>" type="text" /></td>
                <td>授课班级id:</td><td><input name="className" value="<%=className==null?"":className%>" type="text" /></td>
                <td><input type="button" value="查询" οnclick="btnQuery()" /></td>
            </tr>
        </table>
        <table id="btn" align="center">
            <tr>
                <td><input type="button" value="删除" οnclick="btnDelete()" /></td>
                <td><input type="button" value="添加" οnclick="btnAdd()" /></td>
                <td><input type="button" value="修改" οnclick="btnEdit()" /></td>
                <td><input type="button" value="返回主页" οnclick="location.href='CourseListIOC'" /></td>
            </tr>
        </table>
    </div>
    <div align="center">
        <table id="list" border="2">
            <tr>
                <td></td>
                <td>课程编号</td>
                <td>课程名称</td>
                <td>授课老师id</td>
                <td>授课班级id</td>
                <td>授课学期</td>
            </tr>
            <%
                request.setCharacterEncoding("utf-8");
                List<Course> CourseList = (List<Course>) request.getAttribute("CourseList");
                for (Course cs :CourseList){
            %>
            <tr>
                <td><input type="checkbox" name="id" value="<%=cs.getId()%>" /></td>
                <td><%=cs.getCnum()%></td>
                <td><%=cs.getCname()%></td>
                <td><%=cs.getTeacherid()%></td>
                <td><%=cs.getClassName()%></td>
                <td><%=cs.getSemester()%></td>
            </tr>
            <%
                }
            %>
        </table>
    </div>
    </body>
    </html>
    
    //servlet
    @WebServlet(name = "CourseListServlet", urlPatterns = "/CourseListServlet")
    public class CourseListServlet extends HttpServlet {
        
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8");
            String cnum = request.getParameter("cnum");
            String cname = request.getParameter("cname");
            String className = request.getParameter("className");
            System.out.println("cnum "+cnum+" cname "+cname+" className "+className);
            Course course = new Course();
            if (cnum != null && !"".equals(cnum)) {
                course.setCnum(cnum);
            }
            if (cname != null && !"".equals(cname)) {
                course.setCname(cname);
            }
            if (className != null && !"".equals(className)) {
                course.setClassName(Integer.parseInt(className));
            }
            WebApplicationContext ctx = (WebApplicationContext) request.getServletContext().getAttribute("org.springframework.web.context.WebApplicationContext.ROOT");
    //        CourseService service = new CourseService();
            CourseService service =  (CourseService) ctx.getBean("courseService");
            List<Course> courseList = service.query(course);
            request.setAttribute("CourseList", courseList);
            request.getRequestDispatcher("/WEB-INF/jsp/course/CourseList_annotation.jsp").forward(request,response);
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request,response);
        }
    }
    

    注意服务器端请求转发和客户端重定向的适用场合

    //服务器请求转发
    response.sendRedirect("CourseListServlet");
    
    //客户端请求重定向
    request.getRequestDispatcher("/WEB-INF/jsp/studentClass/list.jsp").forward(request, response);
    
  • 2 mybatis技术实现一对多双向关联,从po类映射文件dao类以及接口整合开发,掌握元素if、assiociation、collection的用法

    接口的整合:

    1、mapper接口名称和对应的mapper.xml名称一样

    2、mapper接口名称和对应的mapper.xml路径相同,要在同一个包里面

    3、mapper接口里面的方法名要和mapper.xml 里面的id名称相同

    4、mapper接口里面方法的参数类型和mapper.xml里面的parameterType相同

    5、mapper接口里面的返回值要和mapper.xml里面的resultType相同

    //dao类
    public class Course {
        private int id;
        private String cnum;//课程编号
        private String cname;//课程名
        private int teacherid;//教师编号
        private int className;//授课班级id
        private String semester;//授课学期
        private StudentClass studentClasses;
        private TeacherBean teacherBeans;
        
        public Course(){
    
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getCnum() {
            return cnum;
        }
    
        public void setCnum(String cnum) {
            this.cnum = cnum;
        }
    
        public String getCname() {
            return cname;
        }
    
        public void setCname(String cname) {
            this.cname = cname;
        }
    
        public int getTeacherid() {
            return teacherid;
        }
    
        public void setTeacherid(int teacherid) {
            this.teacherid = teacherid;
        }
    
        public int getClassName() {
            return className;
        }
    
        public void setClassName(int className) {
            this.className = className;
        }
    
        public String getSemester() {
            return semester;
        }
    
        public void setSemester(String semester) {
            this.semester = semester;
        }
    
        public StudentClass getStudentClasses() {
            return studentClasses;
        }
    
        public void setStudentClasses(StudentClass studentClasses) {
            this.studentClasses = studentClasses;
        }
    
        public TeacherBean getTeacherBeans() {
            return teacherBeans;
        }
    
        public void setTeacherBeans(TeacherBean teacherBeans) {
            this.teacherBeans = teacherBeans;
        }
    
    }
    
    <mapper namespace="dao.CourseDao_Mybatis_Interface">
        <select id="selectByTwoTables" parameterType="Integer" resultMap="selectTwoTables">
            select c.*, stu.className,t.tnum from course c, studentclass stu, teacher t where c.teacherid=t.id and c.className=stu.id and c.id=#{id}
        </select>
        <resultMap id="selectTwoTables" type="po.Course">
            <id property="id" column="id"/>
            <result property="cnum" column="cnum"/>
            <result property="cname" column="cname"/>
            <result property="semester" column="semester"/>
            <result property="teacherid" column="teacherid"/>
            <result property="className" column="className"/>
            <association property="studentClasses" javaType="po.StudentClass">
                <id property="id" column="className"/>
                <result property="className" column="className"/>
            </association>
            <collection property="teacherBeans" ofType="po.TeacherBean">
                <id property="id" column="teacherid"/>
                <result property="tnum" column="tnum"/>
            </collection>
        </resultMap>
    </mapper>
    
    //接口
    public interface CourseDao_Mybatis_Interface {
        public Course selectByTwoTables(Integer id);
    }
    
    <!--select语句的if标签的使用-->
    <select id="selectAll" parameterType="po.Course" resultType="po.Course">
            select * from course
            <where>
                <if test="cnum!= null and !''.equals(cnum)">
                    and cnum=#{cnum}
                </if>
                <if test="cname != null and !''.equals(cname)">
                    and cname=#{cname}
                </if>
                <if test="className != null and !''.equals(className)">
                    and className=#{className}
                </if>
            </where>
    </select>
    
    <!--assoctiation-->
    <select id="selectByTwoTables" parameterType="Integer" resultMap="selectTwoTables">
            select c.*, stu.className,t.tnum from course c, studentclass stu, teacher t where c.teacherid=t.id and c.className=stu.id and c.id=#{id}
        </select>
        <resultMap id="selectTwoTables" type="po.Course">
            <id property="id" column="id"/>
            <result property="cnum" column="cnum"/>
            <result property="cname" column="cname"/>
            <result property="semester" column="semester"/>
            <result property="teacherid" column="teacherid"/>
            <result property="className" column="className"/>
            <association property="studentClasses" javaType="po.StudentClass">
                <id property="id" column="className"/>
                <result property="className" column="className"/>
            </association>
            <association property="teacherBeans" javaType="po.TeacherBean">
                <id property="id" column="teacherid"/>
                <result property="tnum" column="tnum"/>
            </association>
        </resultMap>
    
    <!--collection见上-->
    
  • 3、使用xml文件和注解两种方式完成切面、切入点和通知的配置
    熟练编写切入点表达式

    <!--配置通知-->
    <bean id="myAspect" class="aspectj.StudentClassAspectj"/><!--切面类-->
        <aop:config>
            <aop:aspect ref="myAspect">
                <aop:pointcut id="myPointCut" expression="execution(* service.StudentClassService.*(..))" /><!--切入点表达式-->
                <aop:before method="myBefore" pointcut-ref="myPointCut" /><!--通知-->
            </aop:aspect>
        </aop:config>
    
    <!--注解的方式-->
    <bean id="myAspect" class="aspectj.course.CourseAspectj"/>
    <aop:aspectj-autoproxy/>
    
    @Component("myAspect")
    @Aspect//标记为切面类
    public class CourseAspectj {
        //后置通知
        /*
        1、配置切入点
        2、在使用切入点注解之后,需要创建一个public方法,名字随便取,作为切入点的名字
        */
        @Pointcut("execution(* service.CourseService.*(..))")
        public void after() {
    
        }
    
        @After(value = "after()")
        public void myAfterReturning(JoinPoint joinpoint) {
    //        System.out.println("后置通知:记录日志......");
            System.out.println("After......");
            String classname = joinpoint.getSignature().getDeclaringTypeName();//获取包名
            String methodname = joinpoint.getSignature().getName();//获取方法名
            Object[] args = joinpoint.getArgs();//获取参数
            Date calltime = new Date();
    //        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String arg="";
            for (Object i : args) {
                arg = arg.concat(","+ i);
            }
            Course_ServiceLog serviceLog = new Course_ServiceLog();
            serviceLog.setClassname(classname);
            serviceLog.setMethodname(methodname);
            serviceLog.setArgs(arg);
            serviceLog.setCalltime(calltime);
    //        serviceLog.setIssuccess();
            serviceLog.setIssuccess(1);
            System.out.println(classname+"  "+methodname+"  "+arg+"  "+calltime+"  "+1);
            CourseService service = new CourseService();
            service.setServiceLog(serviceLog);
        }
    }
    
  • 4、掌握spring的设值注入的必备条件,完成java编码和xml配置

    //设值注入
    public class Course {
    	public String name = "数学";
    }
    
    //Course类很简单只是定义了一个name并赋值了"数学"。
    
    
    public class Student {
    //Student就是注入的目的地,Course是被注入的对象
    //想要在Student中使用Course类
    	private Course course;
    	//如何注入简单类型
    	private int age;
    	private String name;
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    
    	//setter方式注入一定要生成set方法
    	public void setCourse(Course course) {
    		this.course = course;
    	}
    
    	public void shangke (){
    		System.out.println(age+"岁学生"+name+"正在上"+course.name+"课");
    
    	}
    
    }
    
    <bean id="course" class="com.niit.DI.Course"></bean>
    <bean id="student" class="com.niit.DI.Student">
    <!-- 以下代码跟Student类中的set方法相关 -->
    <!-- name就写Student中被注入变量的名称 -->
    <!-- ref代表spring会按照course为模板去new一个course并赋值到course中 -->
    <property name="course" ref="course" ></property>
    <property name="age" value="20"></property>
    <property name="name" value="biu"></property>
    </bean>
    
  • 5、掌握springMVC框架下编写控制器类,掌握简单数据类型、POJO、集合的数据绑定。掌握使用Model存储数据。掌握跳转到jsp页面或控制器类的方法。掌握@RequestMapping的使用

    //springMVC的控制类
    @Controller
    @RequestMapping("/TestA")//这个mapping可加可不加,加了访问的地址就多了一层
    public class CourseList {
        @RequestMapping("/CourseList")//这里标记的是访问的地址
        public String selectCourseList(HttpServletRequest request, Model model) {
            /*
            数据绑定:要求name名称和getParameter里面获取的参数名相同
            */
            String cnum = request.getParameter("cnum");
            String cname = request.getParameter("cname");
            String className1 = request.getParameter("className");
            int className = Integer.parseInt(className1);
            System.out.println("cnum " + cnum + " cname " + cname + " className " + className);
            Course course = new Course();
            if (cnum != null && !"".equals(cnum)) {
                course.setCnum(cnum);
            }
            if (cname != null && !"".equals(cname)) {
                course.setCname(cname);
            }
            if (className != 0) {
                course.setClassName(className);
            }
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("course_applicationContext_Annotation.xml");
            CourseService service = (CourseService) applicationContext.getBean("courseService");
            List<Course> courseList=service.query(course);
            //使用model存储数据
            model.addAttribute("CourseList", courseList);
            //返回某个servlet或者是jsp
            return "CourseList_annotation";
        }
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值