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-INF\classes\目录下)  输入 “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加入事务管理

 

 

 

 

 

 

 

posted @ 2019-06-26 17:08  wana  阅读(168)  评论(0编辑  收藏  举报