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相关推荐

  1. Java Web系列:Spring MVC基础

    1.Web MVC基础 MVC的本质是表现层模式,我们以视图模型为中心,将视图和控制器分离出来.就如同分层模式一样,我们以业务逻辑为中心,把表现层和数据访问层代码分离出来是一样的方法.框架只能在技术层 ...

  2. java web总结:servlet

    一,Servlet 简介 Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间 ...

  3. java web总结:tomcat使用教程

    一.简介 Tomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache.Sun 和其他一些公司及个人共同开发而成.因 ...

  4. java web listener_JavaWeb:Listener

    1.ServletContextListener: 1).what:监听 ServletContext  对象被创建或销毁的 Servlet 监听器. 2).how: >创建一个实现了 Serv ...

  5. 第一个Java web项目:员工管理系统

    要求: 做一个登陆页面,实现登录,用户名和密码都是admin,登录成功后,用session记录用户名,登录失败,请提示失败原因. 做一个简单的管理系统,实现注册,修改,查询,删除 员工的功能,注册内容 ...

  6. Java Web系列:Hibernate 基础

    从以下5个方面学习hibernate ORM. (1)配置文件:hibernate.cfg.xml XML文件和hibernate.properties属性文件 (2)实体映射:1对多.多对多 (3) ...

  7. Java Web篇:导出等比例图片到Excel

    这两天帮一朋友做一简单的商品管理的系统,遇到这么一个需求,将想要导出的商品信息及图片导出到Excel中. 起初觉得功能还是比较简单的.做个Excel导入导出的Java开发户都知道,可以利用Apache ...

  8. java web 服务 构建与运行_Java Web 服务:构建与运行(影印版)

    基本详情信息 书名:Java Web 服务:构建与运行 ISBN:9787564119270 作者:卡林(Martin Kalin) 著 出版社:东南大学出版社 出版日期:2010-1-1 其他信息 ...

  9. Java web 环境搭建-Linux

    文章目录 一.初识 Tomcat 二.Java web 环境:Nginx+JDK+Tomcat+MySQL 三.环境部署流程 3.1 安装 JDK(java 解析器) 3.1.1 首先安装 gcc 3 ...

最新文章

  1. 5月书讯:藏一个愿望等风来
  2. Flutter事件与手势识别
  3. 每日一皮:完美的结对编程!
  4. 从零开始,带你玩转一站式实时数仓Hologres
  5. C++之invalid initialization of non-const reference of type ‘int’ from an rvalue of type ‘int’
  6. vba 不等于_EXCEL中VBA基础语句(1)
  7. strcat在某种特定条件下的优化
  8. limit offset
  9. Spring中拦截/和拦截/*的区别
  10. 【操作系统】—操作系统的概念 目标和功能
  11. html5 图片热点area,map的用法
  12. GAN(Generative Adversarial Networks) 初步
  13. 我爱淘冲刺阶段站立会议2每天任务2
  14. Linux入门学习 —— 常用的基本命令(下)
  15. 《数论概论》读书笔记 第三章勾股数组与单位圆
  16. 4种实现Web前端可视化的常用方法
  17. 【计算机组成原理】程序,指令,机器指令,微程序,微指令,微命令,微操作的关系
  18. Android中指纹识别的使用
  19. Echarts官网展示
  20. 计算机在服装上的应用研究,图像识别技术在纺织品及服装研究中的应用

热门文章

  1. idea如何配置jdk环境_idea配置jdk环境变量
  2. Flink进行POJO报错
  3. 两台计算机是怎么“连接”在一起的
  4. 30个源码网站的网址
  5. confluence工具
  6. 天猫精灵 python 控制_天猫精灵的高阶玩法-控制我的电脑
  7. mac无法使用80端口问题
  8. PyQt5_Demo5
  9. 百万级用户量的站内信设计
  10. 笔试面试题目:三点共线的判断