java web solr_java:solr
1.solr(数据导入solr自带数据库):
ImportItemController.java:
packagecom.solr.controller;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importcom.solr.service.ItemService;
@RestController
@RequestMapping("/importItem")public classImportItemController {
@AutowiredprivateItemService itemService;
@RequestMapping("/import")publicString importImtems() {//调用service
returnitemService.importItems();
}
}
SearchItemController.java:
packagecom.solr.controller;importjava.util.HashMap;importjava.util.Map;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importcom.solr.service.SearchItemService;importcom.solr.utils.JSONUtil;
@RestController
@RequestMapping("/searchItem")public classSearchItemController {
@AutowiredprivateSearchItemService searchItemService;/*** @description queryCondition就是前端搜索框中用户输入的内容
*@paramparam
*@return
*/@RequestMapping("/byQueryCondition/{q}")public String searchItems(@PathVariable("q") String queryCondition) {
Map resultMap = new HashMap();//第一步:判断用户是否输入了搜索关键字
if (null == queryCondition && "".equals(queryCondition)) {//报错404
resultMap.put(500, "未找到查询条件");
}else{//调用service来从solr中查询出所需要的数据
try{
queryCondition= new String(queryCondition.getBytes("ISO-8859-1"), "UTF-8");
String resultJson=searchItemService.queryItem(queryCondition);
resultMap.put(200, resultJson);
}catch(Exception e) {
e.printStackTrace();
resultMap.put(500, "solr服务器未检索到数据");
}
}returnJSONUtil.toJSONString(resultMap);
}
}
ItemCategoryMapper.java:
packagecom.solr.mapper;importcom.solr.model.ItemCategory;importtk.mybatis.mapper.common.Mapper;public interface ItemCategoryMapper extends Mapper{
}
ItemDescMapper.java:
packagecom.solr.mapper;importcom.solr.model.ItemDesc;importtk.mybatis.mapper.common.Mapper;public interface ItemDescMapper extends Mapper{
}
ItemMapper.java:
packagecom.solr.mapper;importcom.solr.model.Item;importtk.mybatis.mapper.common.Mapper;public interface ItemMapper extends Mapper{
}
Item.java(生成器自动生成):
packagecom.solr.model;importjava.util.Date;import javax.persistence.*;
@Table(name= "ego_item")public classItem {/*** 商品id,同时也是商品编号*/@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)privateLong id;/*** 商品标题*/
privateString title;/*** 商品卖点*/@Column(name= "sell_point")privateString sellPoint;/*** 商品价格,单位为:分*/
privateLong price;/*** 库存数量*/
privateInteger num;/*** 商品条形码*/
privateString barcode;/*** 商品图片*/
privateString image;/*** 所属类目,叶子类目*/
privateLong cid;/*** 商品状态,1-正常,2-下架,3-删除*/
privateByte status;/*** 创建时间*/
privateDate created;/*** 更新时间*/
privateDate updated;/*** 获取商品id,同时也是商品编号
*
*@returnid - 商品id,同时也是商品编号*/
publicLong getId() {returnid;
}/*** 设置商品id,同时也是商品编号
*
*@paramid 商品id,同时也是商品编号*/
public voidsetId(Long id) {this.id =id;
}/*** 获取商品标题
*
*@returntitle - 商品标题*/
publicString getTitle() {returntitle;
}/*** 设置商品标题
*
*@paramtitle 商品标题*/
public voidsetTitle(String title) {this.title = title == null ? null: title.trim();
}/*** 获取商品卖点
*
*@returnsell_point - 商品卖点*/
publicString getSellPoint() {returnsellPoint;
}/*** 设置商品卖点
*
*@paramsellPoint 商品卖点*/
public voidsetSellPoint(String sellPoint) {this.sellPoint = sellPoint == null ? null: sellPoint.trim();
}/*** 获取商品价格,单位为:分
*
*@returnprice - 商品价格,单位为:分*/
publicLong getPrice() {returnprice;
}/*** 设置商品价格,单位为:分
*
*@paramprice 商品价格,单位为:分*/
public voidsetPrice(Long price) {this.price =price;
}/*** 获取库存数量
*
*@returnnum - 库存数量*/
publicInteger getNum() {returnnum;
}/*** 设置库存数量
*
*@paramnum 库存数量*/
public voidsetNum(Integer num) {this.num =num;
}/*** 获取商品条形码
*
*@returnbarcode - 商品条形码*/
publicString getBarcode() {returnbarcode;
}/*** 设置商品条形码
*
*@parambarcode 商品条形码*/
public voidsetBarcode(String barcode) {this.barcode = barcode == null ? null: barcode.trim();
}/*** 获取商品图片
*
*@returnimage - 商品图片*/
publicString getImage() {returnimage;
}/*** 设置商品图片
*
*@paramimage 商品图片*/
public voidsetImage(String image) {this.image = image == null ? null: image.trim();
}/*** 获取所属类目,叶子类目
*
*@returncid - 所属类目,叶子类目*/
publicLong getCid() {returncid;
}/*** 设置所属类目,叶子类目
*
*@paramcid 所属类目,叶子类目*/
public voidsetCid(Long cid) {this.cid =cid;
}/*** 获取商品状态,1-正常,2-下架,3-删除
*
*@returnstatus - 商品状态,1-正常,2-下架,3-删除*/
publicByte getStatus() {returnstatus;
}/*** 设置商品状态,1-正常,2-下架,3-删除
*
*@paramstatus 商品状态,1-正常,2-下架,3-删除*/
public voidsetStatus(Byte status) {this.status =status;
}/*** 获取创建时间
*
*@returncreated - 创建时间*/
publicDate getCreated() {returncreated;
}/*** 设置创建时间
*
*@paramcreated 创建时间*/
public voidsetCreated(Date created) {this.created =created;
}/*** 获取更新时间
*
*@returnupdated - 更新时间*/
publicDate getUpdated() {returnupdated;
}/*** 设置更新时间
*
*@paramupdated 更新时间*/
public voidsetUpdated(Date updated) {this.updated =updated;
}
}
ItemCategory.java:
packagecom.solr.model;importjava.util.Date;import javax.persistence.*;
@Table(name= "ego_item_cat")public classItemCategory {/*** 类目ID*/@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)privateLong id;/*** 父类目ID=0时,代表的是一级的类目*/@Column(name= "parent_id")privateLong parentId;/*** 类目名称*/
privateString name;/*** 状态。可选值:1(正常),2(删除)*/
privateInteger status;/*** 排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数*/@Column(name= "sort_order")privateInteger sortOrder;/*** 该类目是否为父类目,1为true,0为false*/@Column(name= "is_parent")privateBoolean isParent;/*** 创建时间*/
privateDate created;/*** 创建时间*/
privateDate updated;/*** 获取类目ID
*
*@returnid - 类目ID*/
publicLong getId() {returnid;
}/*** 设置类目ID
*
*@paramid 类目ID*/
public voidsetId(Long id) {this.id =id;
}/*** 获取父类目ID=0时,代表的是一级的类目
*
*@returnparent_id - 父类目ID=0时,代表的是一级的类目*/
publicLong getParentId() {returnparentId;
}/*** 设置父类目ID=0时,代表的是一级的类目
*
*@paramparentId 父类目ID=0时,代表的是一级的类目*/
public voidsetParentId(Long parentId) {this.parentId =parentId;
}/*** 获取类目名称
*
*@returnname - 类目名称*/
publicString getName() {returnname;
}/*** 设置类目名称
*
*@paramname 类目名称*/
public voidsetName(String name) {this.name = name == null ? null: name.trim();
}/*** 获取状态。可选值:1(正常),2(删除)
*
*@returnstatus - 状态。可选值:1(正常),2(删除)*/
publicInteger getStatus() {returnstatus;
}/*** 设置状态。可选值:1(正常),2(删除)
*
*@paramstatus 状态。可选值:1(正常),2(删除)*/
public voidsetStatus(Integer status) {this.status =status;
}/*** 获取排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数
*
*@returnsort_order - 排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数*/
publicInteger getSortOrder() {returnsortOrder;
}/*** 设置排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数
*
*@paramsortOrder 排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数*/
public voidsetSortOrder(Integer sortOrder) {this.sortOrder =sortOrder;
}/*** 获取该类目是否为父类目,1为true,0为false
*
*@returnis_parent - 该类目是否为父类目,1为true,0为false*/
publicBoolean getIsParent() {returnisParent;
}/*** 设置该类目是否为父类目,1为true,0为false
*
*@paramisParent 该类目是否为父类目,1为true,0为false*/
public voidsetIsParent(Boolean isParent) {this.isParent =isParent;
}/*** 获取创建时间
*
*@returncreated - 创建时间*/
publicDate getCreated() {returncreated;
}/*** 设置创建时间
*
*@paramcreated 创建时间*/
public voidsetCreated(Date created) {this.created =created;
}/*** 获取创建时间
*
*@returnupdated - 创建时间*/
publicDate getUpdated() {returnupdated;
}/*** 设置创建时间
*
*@paramupdated 创建时间*/
public voidsetUpdated(Date updated) {this.updated =updated;
}
}
ItemDesc.java:
packagecom.solr.model;importjava.util.Date;import javax.persistence.*;
@Table(name= "ego_item_desc")public classItemDesc {/*** 主键*/@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)privateLong id;/*** 商品ID*/@Column(name= "item_id")privateLong itemId;/*** 创建时间*/
privateDate created;/*** 更新时间*/
privateDate updated;/*** 商品描述*/@Column(name= "item_desc")privateString itemDesc;/*** 获取主键
*
*@returnid - 主键*/
publicLong getId() {returnid;
}/*** 设置主键
*
*@paramid 主键*/
public voidsetId(Long id) {this.id =id;
}/*** 获取商品ID
*
*@returnitem_id - 商品ID*/
publicLong getItemId() {returnitemId;
}/*** 设置商品ID
*
*@paramitemId 商品ID*/
public voidsetItemId(Long itemId) {this.itemId =itemId;
}/*** 获取创建时间
*
*@returncreated - 创建时间*/
publicDate getCreated() {returncreated;
}/*** 设置创建时间
*
*@paramcreated 创建时间*/
public voidsetCreated(Date created) {this.created =created;
}/*** 获取更新时间
*
*@returnupdated - 更新时间*/
publicDate getUpdated() {returnupdated;
}/*** 设置更新时间
*
*@paramupdated 更新时间*/
public voidsetUpdated(Date updated) {this.updated =updated;
}/*** 获取商品描述
*
*@returnitem_desc - 商品描述*/
publicString getItemDesc() {returnitemDesc;
}/*** 设置商品描述
*
*@paramitemDesc 商品描述*/
public voidsetItemDesc(String itemDesc) {this.itemDesc = itemDesc == null ? null: itemDesc.trim();
}
}
ItemService.java:
packagecom.solr.service;importjava.io.IOException;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.apache.solr.client.solrj.SolrServer;importorg.apache.solr.client.solrj.SolrServerException;importorg.apache.solr.common.SolrInputDocument;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importcom.solr.mapper.ItemCategoryMapper;importcom.solr.mapper.ItemDescMapper;importcom.solr.mapper.ItemMapper;importcom.solr.model.Item;importcom.solr.model.ItemDesc;importcom.solr.utils.JSONUtil;
@Servicepublic classItemService {
@AutowiredprivateItemMapper itemMapper;
@AutowiredprivateItemCategoryMapper itemCategoryMapper;
@AutowiredprivateItemDescMapper itemDescMapper;
@AutowiredprivateSolrServer solrServer;/*** @description 从数据库中查询出数据导入solr库
*@return
*/
publicString importItems() {
Map resultMap = new HashMap();//第一步:从mysql数据库中查询出商品信息(List),需要ItemMapper
List itemList = itemMapper.selectAll();//从mysql中查询出所有的商品信息//第二步:开始向solr库中进行导入//在solr配置文件(schema.xml)中,只需要item_title,sell_porint,price,image,category,desc,但是从mysql查询出的字段多余
for(Item item : itemList) {//SolrInputDocument
SolrInputDocument solrDocument = newSolrInputDocument();
solrDocument.addField("id", item.getId());
solrDocument.addField("item_title", item.getTitle());
solrDocument.addField("item_sell_point", item.getSellPoint());
solrDocument.addField("item_price", item.getPrice());
solrDocument.addField("item_image", item.getImage());if(item.getCid() != null && item.getCid() > 0L) {//从数据库中通过cid查询出商品类目名称
solrDocument.addField("item_category_name", itemCategoryMapper.selectByPrimaryKey(item.getCid()).getName());
}
ItemDesc itemDesc= newItemDesc();
itemDesc.setItemId(item.getId());
ItemDesc itemDescription=itemDescMapper.selectOne(itemDesc);if(itemDescription != null) {
solrDocument.addField("item_desc", itemDescription.getItemDesc());
}//需要通过某一个class向solr服务器存入数据
try{
solrServer.add(solrDocument);
resultMap.put(200, "数据导入成功");
}catch(SolrServerException e) {
e.printStackTrace();
resultMap.put(500, "数据导入异常");
}catch(IOException e) {
e.printStackTrace();
resultMap.put(500, "数据导入异常");
}
}returnJSONUtil.toJSONString(resultMap);
}
}
SearchItemService.java:
packagecom.solr.service;importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importorg.apache.solr.client.solrj.SolrQuery;importorg.apache.solr.client.solrj.SolrServer;importorg.apache.solr.client.solrj.response.QueryResponse;importorg.apache.solr.common.SolrDocument;importorg.apache.solr.common.SolrDocumentList;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importcom.solr.model.Item;importcom.solr.utils.JSONUtil;
@Servicepublic classSearchItemService {
@AutowiredprivateSolrServer solrServer;public String queryItem(String param) throwsException {//第一步:创建出solr的搜索对象SolrQuery-->solr-solrj,java调用solr提供的查询数据的接口
SolrQuery query = newSolrQuery();//把需要写入的条件传入到SolrQuery对象中
query.setQuery(param);//设置查询的起始条数
query.setStart(0);//每页显示的条数
query.setRows(20);//设置查询关键字
query.set("df", "item_keywords");//设置高亮显示
query.setHighlight(true);//设置需要高亮显示的字段
query.addHighlightField("item_title");//设置需要高亮显示的颜色//用户在搜索框中搜索了"华为"--->华为
query.setHighlightSimplePre("");
query.setHighlightSimplePost("");//首先从solr服务器中查询出所有的匹配结果 并且返回
QueryResponse response =solrServer.query(query);//response-->用户在搜索框中输入的关键字-->点击搜索按钮-->调用controller-->调用service-->到solr服务器中进行查询//-->把查询出的封装成QueryResponse(搜索出的数据)
SolrDocumentList solrDocumentList = response.getResults();//response.getResults();获取的是查询出的所有结果集文档//response.getHighlighting();-->获取存入的高亮信息华为xxxxxx....
Map>> hl =response.getHighlighting();//转换为Java对象的结果集
List itemList = new ArrayList<>();//数据导入的时候,把查询出的实体类集合进行便利-->存入solrDocument//从solr查询数据的时候,首先把查询出的solrDocumentList便利-->存入每一个实体类中-->把存好的实体类再存入list集合中//方便页面通过jstl进行展示
for(SolrDocument doc : solrDocumentList) {//把结果集文档,转换成实体对象-->最终要显示页面上
Item item = newItem();
item.setId(Long.parseLong((String) doc.get("id")));
item.setImage((String) doc.get("item_image"));
item.setPrice((Long) doc.get("item_price"));//因为map比较适合转换为json对象,所以封装到map中比较合适
Map> h = hl.get((String) doc.get("id"));//Map>-->map:key=item_title//List:带有高亮显示的item_title//List:索尼(SONY) KD-55X9000B 55英寸 智能 4K 电视
List l = h.get("item_title");if (l != null && l.size() > 0) {
item.setTitle(l.get(0));//现在item实体类已经拥有了高亮显示的title信息
} else{
item.setTitle((String) doc.get("item_title"));//如果没有获取到数据,就把不是高亮显示的title信息封装到实体对象中
}
itemList.add(item);
}returnJSONUtil.toJSONString(itemList);
}
}
JSONUtil.java:
packagecom.solr.utils;importjava.util.List;importcom.fasterxml.jackson.core.JsonProcessingException;importcom.fasterxml.jackson.databind.JavaType;importcom.fasterxml.jackson.databind.ObjectMapper;public classJSONUtil {//定义jackson对象
private static final ObjectMapper mapper = newObjectMapper();/*** 将对象转换成json字符串
*@paramdata
*@return
*/
public staticString toJSONString(Object data) {try{
String string=mapper.writeValueAsString(data);returnstring;
}catch(JsonProcessingException e) {
e.printStackTrace();
}return null;
}/*** 将json结果集转化为对象
*@paramjsonData
*@parambeanType
*@return
*/
public static T parseObject(String jsonData, ClassbeanType) {try{
T t=mapper.readValue(jsonData, beanType);returnt;
}catch(Exception e) {
e.printStackTrace();
}return null;
}/*** 将json数据转换成list
*@paramjsonData
*@parambeanType
*@return
*/
public static List parseArray(String jsonData, ClassbeanType) {
JavaType javaType= mapper.getTypeFactory().constructParametricType(List.class, beanType);try{
List list =mapper.readValue(jsonData, javaType);returnlist;
}catch(Exception e) {
e.printStackTrace();
}return null;
}
}
ItemCategoryMapper.xml:
ItemDescMapper.xml:
ItemMapper.xml:
mybatis-config.xml:
/p>
"http://mybatis.org/dtd/mybatis-3-config.dtd">
applicationContext-db.xml:
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
mappers=tk.mybatis.mapper.common.Mapper
applicationContext-solr.xml:
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
applicationContext-tx.xml:
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
applicationContext-mvc.xml:
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
application.properties:
#MYSQL jdbc
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
#solr resource
solr.service.url=http\://192.168.1.184\:8080/solr
applicationContext.xml:
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
web.xml:
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0">
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*
solr_demo
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc/applicationContext-mvc.xml
1
solr_demo
/
pom.xml:
4.0.0
com.solr
solr_demo
war
0.0.1-SNAPSHOT
solr_demo Maven Webapp
http://maven.apache.org
4.12
4.3.4.RELEASE
2.8.1
1.2.17
3.0.1
2.0
1.2
5.1.40
1.0.26
3.3.0
1.2.3
1.2.15
3.3.9
2.10.3
4.10.3
junit
junit
${junit.version}
test
org.springframework
spring-context
${spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-test
${spring.version}
test
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
com.fasterxml.jackson.core
jackson-core
${jackson.version}
com.fasterxml.jackson.core
jackson-databind
${jackson.version}
com.fasterxml.jackson.core
jackson-annotations
${jackson.version}
com.alibaba
fastjson
${fastjson.version}
javax.servlet
javax.servlet-api
${servlet-api.version}
provided
javax.servlet
jsp-api
${jsp-api.version}
provided
javax.servlet
jstl
${jstl.version}
runtime
mysql
mysql-connector-java
${mysql.version}
runtime
com.alibaba
druid
${druid.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
${mybatis.spring.version}
tk.mybatis
mapper
${mybatis.mapper.version}
net.sf.ehcache
ehcache
${ehcache.version}
org.apache.solr
solr-solrj
${solrj.version}
solr_demo
java web solr_java:solr相关推荐
- Java Web系列:Spring MVC基础
1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...
- java web总结:servlet
一,Servlet 简介 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间 ...
- java web总结:tomcat使用教程
一.简介 Tomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.因 ...
- java web listener_JavaWeb:Listener
1.ServletContextListener: 1).what:监听 ServletContext 对象被创建或销毁的 Servlet 监听器. 2).how: >创建一个实现了 Serv ...
- 第一个Java web项目:员工管理系统
要求: 做一个登陆页面,实现登录,用户名和密码都是admin,登录成功后,用session记录用户名,登录失败,请提示失败原因. 做一个简单的管理系统,实现注册,修改,查询,删除 员工的功能,注册内容 ...
- Java Web系列:Hibernate 基础
从以下5个方面学习hibernate ORM. (1)配置文件:hibernate.cfg.xml XML文件和hibernate.properties属性文件 (2)实体映射:1对多.多对多 (3) ...
- Java Web篇:导出等比例图片到Excel
这两天帮一朋友做一简单的商品管理的系统,遇到这么一个需求,将想要导出的商品信息及图片导出到Excel中. 起初觉得功能还是比较简单的.做个Excel导入导出的Java开发户都知道,可以利用Apache ...
- java web 服务 构建与运行_Java Web 服务:构建与运行(影印版)
基本详情信息 书名:Java Web 服务:构建与运行 ISBN:9787564119270 作者:卡林(Martin Kalin) 著 出版社:东南大学出版社 出版日期:2010-1-1 其他信息 ...
- Java web 环境搭建-Linux
文章目录 一.初识 Tomcat 二.Java web 环境:Nginx+JDK+Tomcat+MySQL 三.环境部署流程 3.1 安装 JDK(java 解析器) 3.1.1 首先安装 gcc 3 ...
最新文章
- 5月书讯:藏一个愿望等风来
- Flutter事件与手势识别
- 每日一皮:完美的结对编程!
- 从零开始,带你玩转一站式实时数仓Hologres
- C++之invalid initialization of non-const reference of type ‘int’ from an rvalue of type ‘int’
- vba 不等于_EXCEL中VBA基础语句(1)
- strcat在某种特定条件下的优化
- limit offset
- Spring中拦截/和拦截/*的区别
- 【操作系统】—操作系统的概念 目标和功能
- html5 图片热点area,map的用法
- GAN(Generative Adversarial Networks) 初步
- 我爱淘冲刺阶段站立会议2每天任务2
- Linux入门学习 —— 常用的基本命令(下)
- 《数论概论》读书笔记 第三章勾股数组与单位圆
- 4种实现Web前端可视化的常用方法
- 【计算机组成原理】程序,指令,机器指令,微程序,微指令,微命令,微操作的关系
- Android中指纹识别的使用
- Echarts官网展示
- 计算机在服装上的应用研究,图像识别技术在纺织品及服装研究中的应用