zoukankan      html  css  js  c++  java
  • JAVAEE理论

    开发设计题 二个,一个10分 不写代码
    1. P97国际化 简单描述方案,步骤 第四步,丰富一下描述。第六步,描述部署运行
    2. P107添加学生信息 写步骤 第十步,要写名 如何部署运行 一句话介绍核心步骤
    程序设计题 4个 15分
    1.P79校验框架 5选3 不加注释
    2. P105 多文件上传 写步骤 3分,一句话的介绍 ; index.jsp 4分,不写注释;P106 8分,加注释;
    3. P145批量删除更新 二选一; 两种方法都写 ,7分 8分;
    4.P205 整合 Struts和h二选一; 步骤3分;第九步 P208/P213 第七步 写try catch,第八步
    综合设计题 20分
    1. 模块框架设计 5分 模块划分图,介绍一下
    2.系统开发方案和步骤 7分 P313
    核心类 .java .xml 8分 多,详细,加注释

    1.开发设计 10’  不写代码

    1.国际化

      1.新建web项目,命名为Test

      2.加载Struts2基本类库:

    【Build Path】→【Configure Build Path】【Add External JARs】lib文件夹,选中上面的5个Jar包

      3.修改web.xml

    配置过滤器,让请求能被struts2框架处理。相应请求过滤一遍,过滤是为了实现具体操作

      4.通过配置常量加载全局国际化资源文件:struts.properties

    struts.custom.il8n.resources=messageResource(资源文件名) 语言版本 国家代码

      src文件夹下新建

      

    US:数据以key-value形式显示

    username=DLM(登录名)
    password=KL(口令)
    login=login(登录)

    
    

    中文无法识别非西欧字符,打开dos窗口 cmd cd 项目的class路径(在 WEB-INFclasses目录下)  输入 “native2ascii messageResource_temp.properties messageResource_zh_CN.properties”

    将带有本地 非西欧 编码字符 临时文件转换成带有Unicode编码字符的文件 两文件置于同一目录下。

    5.建立login.jsp

    <s:i18n name="messageResource"></s:i18n>

    <s:il8n> 标签从声明的资源包获得消息。

    在JSP登录页面直接输出国际化消息key值:表单元素(textfield password)里的key属性对应资源文件的key,实现value的显示。

    将value值提交到action中。value="%{getText('login')}"  在类文件中得到 key  OGNL表达式“%{}”,取出key对应的值。

    在Action中访问国际化消息:使用ActionSupport类的getText('key')方法,

    6.运行项目 

    运行jsp文件:右击  login.jsp  run as 选择project和server  run 

    在浏览器输入localhost:8080/Test/login.jsp  

    设置浏览器语言: 工具 Internet选项 语言  

       

    2.添加学生信息

      1.WEB项目:Student    加载Struts2基本类库  修改web.xml 文件

      2.在sql server 中建库建表 建立表对应的JavaBean,生成字段和方法

      3.DBConn类,负责连接数据库

      4.WebRoot文件夹下 建立stu.jsp文件,显示页面,提交用户输入表单。success.jsp文件 显示用户添加成功信息

      配置struts.xml文件 

      5.Action类 SaveAction.java 

      接收处理表单信息

      调用 DBConn类的save方法,将数据插入到数据库中

      插入成功 通过struts.xml文件的映射,跳转到success.jsp 页面。失败,跳转到 stu.jsp页面

    程序设计  4个  15分

    1. 校验框架   5选3 不加注释  

    (1)必填字符串校验器:输入框必填,并且字符串长度>0
      文件名
        验证acion类:用户自定义action类名-validation.xml
        验证acion方法:用户自定义action类名-action属性里的name-validation.xml
      其校验规则定义文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <validators>
      <field name="name"><!- - 需要校验的字段的字段名- - >
        <field-validator type="requiredstring">    <!--验证字符串不能为空,即必填-->    
          <param name="trim">true</param><!--去空格-->
          <message>姓名是必需的!</message><!--错误提示信息-->
        </field-validator>
      </field>    
    </validators>

    (2)必填校验器
      指定的字段必须有值,与必填字符串校验器最大的区别就是可以有空字符串。

    <?xml version="1.0" encoding="UTF-8"?>
    <validators>
      <field name="name">
        <field-validator type="required"><!--验证字符串必填-->
          <message>姓名是必需的!</message>
        </field-validator>
      </field>    
    </validators>

    (3)整数校验器
      字段的整数值必须在指定范围内,故其有min和max参数。
      如果有个age输入框,要求其必须是整数,且输入值必须在18与100之间:

    <validators>
      <field name="age">
        <field-validator type="int">
          <param name="min">18</param><!- -年龄最小值-->
          <param name="max">100</param><!- -年龄最大值-->
          <message>年龄必须在18至100之间</message>
        </field-validator>
      </field>    
    </validators>

    (4)日期校验器
    该校验器的名字是date,该校验器要求字段的日期值必须在指定范围内,故其有min和max参数。其配置格式如下:

    <validators>
        <field name="date"> 
            <field-validator type="date">
                <param name="min">1980-01-01</param><!--日期最小值-->
                <param name="max">2009-12-31</param><!--日期最大值-->
                <message>日期必须在1980-01-01至2009-12-31之间</message>
            </field-validator>
        </field>    
    </validators>

    (5)邮件地址校验器
      字段的字符如果非空,就必须是合法的邮件地址。

    <validators>
        <field name="email">
            <field-validator type="email">
                <message>必须输入有效的电子邮件地址 </message>
            </field-validator>
        </field>    
    </validators>

    2.多文件上传
    文件-输入流 -缓冲buff -输出流 - 指定位置

    将数据暂存到缓冲buff里面,能节省内存的占用。

    供多用户选择的文件框

    <s:form action="upload.action" method="post" enctype="multipart/form-data">
            <!-- 这里上传三个文件,这里可以是任意多个-->
            <s:file name="upload" label="上传的文件一"></s:file>
            <s:file name="upload" label="上传的文件二"></s:file>
            <s:file name="upload" label="上传的文件三"></s:file>
            <s:submit value="上传"></s:submit>
        </s:form>

    名字必须相同,把对应值封装到指定list集合中。

    if(upload!=null){
                for (int i = 0; i < upload.size(); i++) {   //遍历,得到每个文件对他们进行读写操作
                    InputStream is=new FileInputStream(upload.get(i));
                    OutputStream os=new FileOutputStream("d:\upload\"+getUploadFileName().get(i));
                    byte buffer[]=new byte[1024];//开辟缓冲池 指定大小为1024
                    int count=0;
                    while((count=is.read(buffer))>0){
                        os.write(buffer,0,count);//通过输出流将数据写到指定文件夹下
                    }
                    os.close();
                    is.close();
                }
            }

    3.   P145批量删除更新 二选一; 两种方法都写 ,7分 8分;

    (1)由Hibernate直接进行批量更新

    为了使Hibernate的HQL直接支持update/delete的批量更新语法,首先要在Hibernate的配置文件hibernate.cfg.xml中设置HQL/SQL查询翻译器属性hibernate.query.factory_class。
    使用HQL批量更新把课程表中的XS修改为30。由于这里是用Hibernate操作,故HQL要用类对象及其属性。

    Transaction ts=session.beginTransaction();
    //在HQL查询中使用update进行批量更新
    Query query=session.createQuery("update Kcb set xs=30");
    query.executeUpdate();
    ts.commit();

    (2)绕过Hibernate调用JDBC进行批量更新
    由于这里是直接操作数据库,故要操作对应表,而不是类。

    try {
        Statement stmt=conn.createStatement();
        //调用JDBC的update进行批量更新
        stmt.executeUpdate("update KCB set XS=30");
    } catch (SQLException e) {
        e.printStackTrace();
    }

    (1)由Hibernate直接进行批量删除
    使用HQL批量删除课程表中课程号大于200的课程。

    Transaction ts=session.beginTransaction();
    //在HQL查询中使用delete进行批量删除
    Query query=session.createQuery("delete Kcb where kch>200");
    query.executeUpdate();
    ts.commit();

    (2)绕过Hibernate调用JDBC进行批量删除

    try {
        Statement stmt= conn.createStatement();
        //调用JDBC的delete进行批量删除
        stmt.executeUpdate("delete from KCB where KCH>200");    
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

     4.P205 整合 Struts和h二选一; 步骤3分;第九步 P208/P213 第七步 写try catch,第八步

    Spring与Struts 2的整合

    spring核心配置文件,使用bean配置S框架 的action ,配置H框架的SessionFactory.
    ① 创建Web项目Struts_Spring。
    ② 添加Struts 2框架。实现登录页面操作
    添加5个Jar包:struts 2-core-2.0.14.jar,xwork-2.0.4.jar,ognl-2.6.11.ar,common-logging-1.0.4.jar,freemarker-2.3.8.jar。
    配置web.xml,


    ③ 创建login.jsp。
    ④ 创建Action。 LoginAction.java
    配置struts.xml文件
    ⑤ 创建login_success.jsp。

    ⑥ 部署运行。
    部署,测试Struts 2是否正常。运行http://localhost:8080/Struts_Spring/login.jsp,在登录框和密码框中任意输入,单击【登录】按钮,转向登录成功界面,并输出登录名。
    ⑦ 添加Spring框架。
    ⑧ 添加Spring支持包struts2-spring-plugin.jar于Struts 2的lib目录
    ⑨ 修改web.xml内容。
    修改web.xml内容,使得程序增加对Spring的支持。监听客户端的请求,服务器的操作,以激发操作。

      //实现加载核心文件功能
    <
    listener>//实现加载核心配置文件功能 <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param>//监听器获取配置文件的位置 <param-name>contextConfigLocation</param-name> <param-value> //spring配置文件路径 /WEB-INF/classes/applicationContext.xml </param-value> </context-param>

    ⑩ 在src文件夹下创建消息包文件struts.properties。运行时由struts包自动加载。告知Struts用spring框架来整合Struts。
    修改applicationContext.xml。bean设置spring 对象管理

    <beans>
        <bean id="loginAction" class="org.action.LoginAction"></bean>
    <beans>


     修改struts.xml。
    用工厂模式把struts 2的类的生成交给Spring完成。

     //不同拦截器实现不同功能 ,需要配合过滤器使用
    <include file="struts-default.xml"/>//里面有自定义好的拦截器 <package name="default" extends="struts-default"> <!--使用Spring生成的类对象 --> <action name="login" class="loginAction"> <result name="success">/login_success.jsp</result> </action> </package>

    Spring与Hibernate的整合

    ① 在SQL Server 2005中创建数据库表。
    数据库名为XSCJ,表见附录A 的登录表。
    ② 创建Web项目,命名为“Hibernate_Spring”。
    ③ 添加spring和H框架 :选择版本,核心类库,设置配置文件
    右击项目名,选择【MyEclipse】→【Add Spring Capabilities…】菜单项,添加Spring的版本及核心类库文件
    【Next】建立Spring配置文件application Context.xml,存放路径:WEB-INF文件夹下,

    【MyEclipse】→【Add Hibernate Capabilities…】菜单项,选择Hibernate版本及需要的类库。
    【Next】按钮,选择使用Spring的配置文件对Hibernate进行管理。

    填写SessionFactory Id ,为Hibernate注入一个新ID,一般命名为 sessionFactory

    选择数据库连接信息,填写数据源名 Bean Id.

    不需要创建SessionFactory类

    ④生成数据库表对应的Java数据对象和映射。

    window->Open Perspective->Database Exploer Perspective. 选择数据库 ,设置 Hibernate Revers Engineering ,ID generator选择native。

    ⑤ 编写DlDao.java接口。
    在src文件夹下建立包org.dao,在该包先建立接口,命名为“DlDao”,

    //实现类
    public void save(Dlb dl) {//参数:数据库表对应的实体类对象
            try{
                //获得Session对象
                Session session=sessionFactory.openSession();
                Transaction ts=session.beginTransaction();//通过Session创建事务对象
                session.save(dl);//通过session的save()完成对象的只能加操作
                ts.commit();//提交事务
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    applicationContext.xml
    <!--
    用Bean定义数据源 --> <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"> <!-- 定义数据库驱动 --> <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"> </property> <!-- 定义数据库URL --> <property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=XSCJ"> </property> <!-- 定义数据库的用户名 --> <property name="username" value="sa"></property> <!-- 定义数据库密码 --> <property name="password" value="123456"></property> </bean>

    综合设计题 20分
    1. 模块框架设计 5分 模块划分图,介绍一下
    2.系统开发方案和步骤 7分 P313
    核心类 .java .xml 8分 多,详细,加注释

    物流仓储管理系统 
    系统模块功能划分

     

     javaEE三层体系结构:表示层  业务逻辑层 数据持久层

    用Hibernate来完成数据的持久层应用,用Spring的Bean来管理组件(主要是DAO、业务逻辑和Struts的Action),而用Struts来完成页面的控制跳转。

    org.dao:放置DAO(数据访问对象)的接口,接口中的方法用来和数据库进行交互,进行CRUD操作。完成对底层数据库的持久化访问。
    org.damain:放置dao接口的实现类
    org.model:放置表对应的POJO类及映射文件*.hbm.xml。
    org.service:放置业务逻辑接口。是对dao的封装,封装业务逻辑 ,让控制层调用业务逻辑的方法 ,而无需直接访问dao的方法,
    org.service.imp:放置实现业务逻辑接口的类。

    org.action:放置Action类.控制层。处理用户请求,控制跳转。
    org.utils:放置公用的工具类,如分页类。
    struts.properties:实现Struts 2和Spring整合。
    struts.xml:配置Action。

     

    核心类:

     用户表用于登录 

     

     

    j加入事务管理

     

  • 相关阅读:
    七天学会ASP.NET MVC(七)——创建单页应用
    七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递
    七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC
    七天学会ASP.NET MVC (四)——用户授权认证问题
    七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理
    网页倒计时跳转页面的效果
    javascript中最简单Ajax实例
    经典SQL语句大全(绝对的经典)
    .NET中的加密类(可设置密钥)
    非常强大的 jQuery.AsyncBox 弹窗插件
  • 原文地址:https://www.cnblogs.com/laidianjilu/p/11074753.html
Copyright © 2011-2022 走看看