黑马程序员技术交流社区

标题: 【广州校区】+【原创】strust2文件上传 [打印本页]

作者: Mylo    时间: 2020-5-21 15:19
标题: 【广州校区】+【原创】strust2文件上传
新增客户==数据字典==创建BaseDict对象"BaseDict.class"
public class BaseDict {
    private String dict_id;
    private String dict_type_code;
    private String dict_type_name;
    private String dict_item_name;
    private String dict_item_code;
    private String dict_memo;
    private Integer dict_sort;
    private Character dict_enable
   
    "set and get method"
}<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.domain" >
    <class name="BaseDict" table="base_dict" >
        <id name="dict_id"  >
            <generator class="assigned"></generator>
        </id>
        <property name="dict_type_code" ></property>
        <property name="dict_type_name" ></property>
        <property name="dict_item_name" ></property>
        <property name="dict_item_code" ></property>
        <property name="dict_memo" ></property>
        <property name="dict_sort" ></property>
        <property name="dict_enable" ></property>
    </class>
</hibernate-mapping><!-- 多对一 -->
<many-to-one name="cust_source" column="cust_source" class="BaseDict" ></many-to-one>
<many-to-one name="cust_industry" column="cust_industry" class="BaseDict" ></many-to-one>
<many-to-one name="cust_level" column="cust_level" class="BaseDict" ></many-to-one>ajax加载数据字典下拉选@Override
public String execute() throws Exception {
    DetachedCriteria detachedCriteria = DetachedCriteria.forClass(BaseDict.class);
    detachedCriteria.add(Restrictions.eq("dict_type_code", dict_type_code));
    List<BaseDict> list = baseDictService.getListByDictTypeCode(detachedCriteria);
    Gson gson = new Gson();
    String json = gson.toJson(list);
    HttpServletResponse response = ServletActionContext.getResponse();
    response.setContentType("text/json;charset=utf-8");
    response.getWriter().write(json);
    return null;
}"service直接调用BaseDaoImpl的方法"
@Override
public List<BaseDict> getListByDictTypeCode(DetachedCriteria detachedCriteria) {
    List<BaseDict> list = baseDictDao.getList(detachedCriteria);
    return list;
}ajax加载数据字典下拉选前台js部分//使用ajax加载数据字典,生成select
//参数1: 数据字典类型 (dict_type_code)
//参数2: 将下啦选放入的标签id
//参数3: 生成下拉选时,select标签的name属性值
//参数4: 需要回显时,选中哪个option
function loadSelect(typecode,positionId,selectname,selectedId){
    //1 创建select对象,将name属性指定
    var $select =  $("<select name="+selectname+" ></select>");
    //2 添加提示选项
    $select.append($("<option value='' >---请选择---</option>"));
    //3 使用jquery 的ajax 方法,访问后台Action
    $.post("${pageContext.request.contextPath}/BaseDictAction", { dict_type_code:typecode},
    function(data){
        //遍历
        //4 返回json数组对象,对其遍历
        $.each( data, function(i, json){
        // 每次遍历创建一个option对象
        var $option = $("<option value='"+json['dict_id']+"' >"+json["dict_item_name"]+"</option>");
            
        if(json['dict_id'] == selectedId){
        //判断是否需要回显 ,如果需要使其被选中
            $option.attr("selected","selected");
        }
        //并添加到select对象
        $select.append($option);
    });
    },"json");
        
    //5 将组装好的select对象放入页面指定位置
    $("#"+positionId).append($select);
}保存客户后台逻辑public String add() throws Exception {
    //1 调用Service,保存Customer对象
    cs.save(customer);
    //2 重定向到客户列表Action
    return "toList";
}@Override
public void save(Customer customer) {
    "1 维护Customer与数据字典对象的关系,由于struts2参数封装,会将参数封装到数据字典的id属性."
    "那么我们无需手动维护关系"
    "2 调用Dao保存客户"
    cd.saveOrUpdate(customer);
}扩展-struts2文件上传"上传的文件会自动封装到File对象"
"在后台提供一个与前台input type=file组件 name相同的属性"
private File photo;
"在提交键名后加上固定后缀FileName,文件名称会自动封装到属性中"
private String photoFileName;
"在提交键名后加上固定后缀ContentType,文件MIME类型会自动封装到属性中 "
private String photoContentType;

public String add() throws Exception {
    if(photo!=null){
        System.out.println("文件名称:"+photoFileName);
        System.out.println("文件类型:"+photoContentType);
        //将上传文件保存到指定位置
        photo.renameTo(new File("E:/upload/haha.jpg"));
    }
   
    //---------------------------------------------------------------------
    //1 调用Service,保存Customer对象
    cs.save(customer);
    //2 重定向到客户列表Action
    return "toList";
}

"set和get方法"扩展-struts2文件上传原理客户修改public String toEdit() throws Exception {
    //1调用Service根据id获得客户对象
    Customer c = cs.getById(customer.getCust_id());
    //2 将客户对象放置到request域,并转发到编辑页面
    ActionContext.getContext().put("customer", c);
    return "edit";
}<s:property value="#customer==null?'添加':'修改'" />客户





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2