【SSH实战】IntelliJ IDEA环境开发BOS物流项目(五)POI、pinyin4J、combobox

、实现区域导入功能

n OCUpload一键上传插件使用

OCUpload(One Click Upload)

第一步:将js文件引入页面

<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.8.3.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery.ocupload-1.1.2.js"></script>

第二步:在页面提供任意一个元素

 <input id="myButton" type="button" value="上传">

第三步:调用插件的upload方法,动态修改HTML页面元素

<script type="text/javascript">
    $(function () {
        $("#myButton").upload({
            action:'XXX.action',
            name:'myFile'
        });
    });
</script>

将文件上传到Action

在Action中提供一个File类型的属性,名称和上传的文件输入框名称一致regionFile

@Controller
@Scope("prototype")
public class RegionAction extends BaseAction<Region> {

    @Autowired
    private RegionService regionService;
    // 属性驱动后,接收上传文件
    private File regionFile;

    public void setRegionFile(File regionFile) {
        this.regionFile = regionFile;
    }

    /**
     * 区域导入
     */
    public String importXls() {
        System.out.println(regionFile);
        return NONE;
    }
}

n POI简介

POI使用:

在项目中引入POI的依赖

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.11</version>
		</dependency>

使用POI解析Excel文件

public class POITest {

    // 使用POI解析Excel文件
    //@Test
    public void test1() throws IOException {
        String filePath = "E:\\编程学习\\北京黑马32期\\就业班\\【阶段09】物流BOS系统综合项目\\BOS-day05\\BOS-day05\\BOS-day05\\资料\\区域导入测试数据.xls";
        // 包装一个Excel文件对象
        HSSFWorkbook Workbook = new HSSFWorkbook(new FileInputStream(new File(filePath)));
        // 读取文件中第一个Sheet标签页
        HSSFSheet hssfSheet = Workbook.getSheetAt(0);
        // 遍历标签页中所有的行
        for (Row row:hssfSheet) {
            int rowNum = row.getRowNum();
            if(rowNum == 0){
                continue;
            }
            for (Cell cell:row) {
                String value = cell.getStringCellValue();
                System.out.println(value);
            }
        }
    }
}

n 完成数据库操作

使用pinyin4J生成简码和城市编码

引入pinyin4J的依赖

		<!-- 引入pinyin4J的依赖 -->
		<dependency>
			<groupId>com.belerweb</groupId>
			<artifactId>pinyin4j</artifactId>
			<version>2.5.0</version>
		</dependency>
public class Pinyin4JTest {
    @Test
    public void test1(){
        // 河北省 石家庄市 桥西区
        String province = "河北省";
        String city = "石家庄市";
        String district = "桥西区";
        // 简码 ------ HBSJZQX

        // 将最后一个汉字截取掉
        province = province.substring(0,province.length()-1);
        city = city.substring(0,city.length()-1);
        district = district.substring(0,district.length()-1);
        String info = province+city+district;
        String[] headByString = PinYin4jUtils.getHeadByString(info);
        String shortCode = StringUtils.join(headByString);
        System.out.println(shortCode);
        // 城市编码
        String cityCode = PinYin4jUtils.hanziToPinyin(city,"");
        System.out.println(cityCode);
    }
}

、区域分页查询

n 页面调整

n 服务端实现

、重构分页代码

n BaseAction

第一步:将重复部分代码统一抽取到BaseAction中 

	protected PageBean pageBean = new PageBean();
	DetachedCriteria detachedCriteria = null;
	public void setPage(int page) { pageBean.setCurrentPage(page); }
	public void setRows(int rows) { pageBean.setPageSize(rows); }

第二步:设置离线查询对象


第三步:创建统一方法-java对象转json并响应到客户端

	/**
	 * 将制定java对象转化为json,并响应到客户端页面
	 * @param o
	 * @param exclueds
	 */
	public void java2Json(Object o,String[] exclueds){
		JsonConfig jsonConfig = new JsonConfig();
		// 指定哪些属性不需要转json
		jsonConfig.setExcludes(exclueds);
		// 使用json-lib将pageBean对象转为json,通过输出流写回页面中
		// JSONObject -- 将单一对象转为json
		// JSONArray -- 将数组或者集合对象转为json
		String json = JSONObject.fromObject(o,jsonConfig).toString();
		ServletActionContext.getResponse().setContentType("text/json;charset=utf-8");
		try {
			ServletActionContext.getResponse().getWriter().write(json);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

子类Action


、分区添加功能

n 什么是分区

页面调整(combobox使用)

第一步:修改页面中的combobox


n 服务端实现

第二步:在ReginAction中提供listAjax方法


第三步:在RegionDao中扩展方法


第四步:为添加窗口中保存按钮绑定事件

			<a id="save" icon="icon-save" href="#" class="easyui-linkbutton" plain="true" >保存</a>
			<script type="text/javascript">
                $(function(){
                    $("#save").click(function(){
                        //表单校验
                        var r = $("#addSubareaForm").form('validate');
                        if(r){
                            $("#addSubareaForm").submit();
                        }
                    });
                });
			</script>

五、解决分页死循环问题

Java对象转为json过程中,因为对象之间有相互引用关系,会发生死循环问题,解决方式,排除其中属性


猜你喜欢

转载自blog.csdn.net/a911711054/article/details/79932860