java在controller层怎么返回json数据给前台

/**
*
* @param request
* @return
*/
@RequestMapping(value = "linkCity", method = RequestMethod.POST)

@ResponseBody

public String linkCity(HttpServletRequest request){

String msg="";
try {

String privnce=request.getParameter("privnce");
List> msgList=new ArrayList>();
//根据省份获取市
List cityList = areaService.selectCity(privnce);
if(cityList.size()>0){

for (int i = 0; i < cityList.size(); i++) {

Area area=cityList.get(i);

Map msgMap=new HashMap();

msgMap.put("mcyCity", area.getCityname());

msgList.add(msgMap);

}

}

} catch (Exception e) {

e.printStackTrace();

}
return ;
}

要return什么回去..求指教

3个回答

@ResponseBody 的作用就是直接把返回的结果转成json格式
你可以直接返回msgList,@ResponseBody注解会自动转成json,把方法的返回类型改成List

mlc1218559742
小草mlc 回复niyidusk: 下面有红线,代表你代码编译不通过,报错了。原因是找不到msgList 这个变量,你在定义msgList 时是在try{}块里面定义的,msgList 变量的作用域就在try{}里面,下面的return找不到变量,就报错了。你把定义msgList 变量的代码放到try{}上面就行了
3 年多之前 回复
niyidusk
niyidusk 我运行了一下,编译是可以的,程序运行的时候不行,return msgList这里msgList下面会有红线,显示的就是msgList cannot be resolved to a variable
3 年多之前 回复
mlc1218559742
小草mlc 回复niyidusk: 是在编译的时候报错,还是程序运行的时候报错?
3 年多之前 回复
niyidusk
niyidusk 回复小草mlc: 还是报一样的错误
3 年多之前 回复
mlc1218559742
小草mlc 回复niyidusk: msgList 不能转换为一个变量,应该是类型不匹配导致的,在定义msgMap和msgList 加上泛型试试,确定一下变量的存储类型
3 年多之前 回复
niyidusk
niyidusk 麻烦看看怎么解决
3 年多之前 回复
niyidusk
niyidusk 我直接返回会报错msgList cannot be resolved to a variable
3 年多之前 回复

试试用jsonObject把msgList的数据转化一下,然后就能return了

niyidusk
niyidusk 好的,我试试看
3 年多之前 回复

在方法的参数列表中增加参数HttpServletResponse response;
然后

 PrintWriter out = response.getWriter();
 out.println(area.getCityname());
niyidusk
niyidusk PrintWriter out = response.getWriter(); out.println(area.getCityname());这个两个是要加在for循环里面?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Map转换成json传到前台
在程序中我把一个有序的map放进resultDto中,然后传到controller层转成json对象返回给前台,但是转成json的时候map中的顺序会打乱,这是因为什么?
前后台数据传输方式及解析
java前台页面与后台controller传输数据的方式一般除了JSON,XML,别的还有什么,最常用的是哪几种方式?都是怎么传值和解析的呢?谁给介绍一下
为什么我这个map没有序列化成json,前台一直返回错误
在后台都能正确输出map,我猜是map没有正确序列化成json,求高人指点 ``` package com.lhw.action; import com.lhw.service.news.GetNewsTitleIndexService; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.json.annotations.JSON; import org.springframework.stereotype.Controller; import javax.annotation.Resource; import java.util.HashMap; import java.util.Map; /** * Created by lhw on 2016/10/27. */ @Controller("getNewsTitle") public class GetNewsTitleAction extends ActionSupport{ private Map<String,String> map = new HashMap<>(); private transient GetNewsTitleIndexService getNewsTitleIndexService; @Override public String execute() throws Exception { //调用service读取数据放到map中 map = getNewsTitleIndexService.getNewsTitleIndex(0,5); System.out.println(map); return SUCCESS; } public GetNewsTitleIndexService getNewsTitleIndexService() { return getNewsTitleIndexService; } @Resource(name = "getNewsTitleIndexService") public void setGetNewsTitleIndexService(GetNewsTitleIndexService getNewsTitleIndexService) { this.getNewsTitleIndexService = getNewsTitleIndexService; } public Map<String, String> getMap() { return map; } public void setMap(Map<String, String> map) { this.map = map; } } ```
java后台向页面传输json的时候异常
页面请求数据,后台向页面传输请求到的数据,单独请求没问题。但是如果我请求的过程中另外一个用户请求则我会报异常,而后来的用户可以取到数据。。。。。。 在后台打印数据,数据从库里请求到了。前台页面是用的ajax 但是传输报错 使用的是: String msg= JSONObject.fromObject(r).toString(); response.getWriter().print(msg); 异常: 2017-06-20 15:23:11,825 [http-bio-8081-exec-2] DEBUG [org.springframework.web.servlet.DispatcherServlet] - Could not complete request java.lang.NullPointerException at org.apache.coyote.http11.InternalOutputBuffer.realWriteBytes(InternalOutputBuffer.java:215) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366) at org.apache.coyote.http11.InternalOutputBuffer$OutputStreamOutputBuffer.doWrite(InternalOutputBuffer.java:240) at org.apache.coyote.http11.filters.IdentityOutputFilter.doWrite(IdentityOutputFilter.java:93) at org.apache.coyote.http11.AbstractOutputBuffer.doWrite(AbstractOutputBuffer.java:192) at org.apache.coyote.Response.doWrite(Response.java:499) at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:402) at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480) at org.apache.catalina.connector.OutputBuffer.realWriteChars(OutputBuffer.java:485) at org.apache.tomcat.util.buf.CharChunk.flushBuffer(CharChunk.java:464) at org.apache.tomcat.util.buf.CharChunk.append(CharChunk.java:384) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:548) at org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:174) at org.apache.catalina.connector.CoyoteWriter.write(CoyoteWriter.java:184) at org.apache.catalina.connector.CoyoteWriter.print(CoyoteWriter.java:242) at com.ruifight.custom.controller.ScreenController.indoor(ScreenController.java:155) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:178) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:442) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:430) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
SPRING3MVC接收JSON参数的问题 JSON解析为空
我想把前台页面里一个JSON结构的数据传到controller,尝试了数十次,由map到list到string都无法识别。 JSON的数据结构如下[code="java"]{"info":{"templateName":$("#templateName").val(),"templateNo":"tmp156464"}}[/code] 调用方式是通过jquery的ajax调用spring后台,[code="java"]$("#btSaveTemplate").click(function() { // alert($("#templateName").val()); var data = {"info":{"templateName":$("#templateName").val(),"templateNo":"tmp156464"}}; var data2 = {"templateName":$("#templateName").val()}; $.ajax({ type: "get",//使用get/post方法访问后台 dataType: "json",//返回json格式的数据 url: "lotty/add",//要访问的后台地址 data: data, success: function(msg){//msg为返回的数据,在这里做数据绑定 if(msg == '1'){ alert('操作成功'); location.reload(); } }, error: function(jqXHR, textStatus, errorThrown) { alert("error:" + textStatus + " exception:" + errorThrown); } });[/code] 后台spring确实收到了请求,并且执行了相应的方法,如下: [code="java"]@ResponseBody @RequestMapping(value="/add", method=RequestMethod.GET) public String doAdd([color=red][b]String info[/b][/color],Model model) throws Exception;[/code] 红色粗体的地方,用String接收是null,改用List和HashMap都不行,后来在SPRING的JAR包中,翻到一个MappingJacksonJsonView,尝试了下,还是空值。之后,我在方法里加了HttpServletRequest参数,郁闷的是:request里面的parameter部分为空 我想可能是SPRING注入处理JSON类的地方出错了,但是这个也不太可能。因为我传最基本的纯key-value结构的JSON数据,后台能成功捕获到(我的做法比较笨,前台有多少个key,controller方法里有多少个对应参数的那种) 这是我SPRING的相关配置:[code="java"]<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>[/code] 然后注入:[code="java"]<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref local="mappingJacksonHttpMessageConverter"/> </list> </property> </bean>[/code] 到此,实在不知道其他的解决方法了。 我的想法是,在实际应用中如果做批量插入的话,可以一次提交一个大的JSON数据,在后台里解析成JSONObject对象,再逐步取值。试了大半天,没有结果,上来问问大家,SPRING3里面JSON做参数的一些经验。
SpringMVC将Linux控制台日志返回前台页面是什么原因?
通过Ajax调用Controller后返回JSON数据包含日志是什么原因,哪位大神知道,在线等!![图片](https://img-ask.csdn.net/upload/201711/10/1510282062_735727.png)![图片](https://img-ask.csdn.net/upload/201711/10/1510282136_43859.png)
Json传递后台数据的问题
在后台我有两个类: [code="java"]public Class Person { private String name; private Address address;//一个自定义的类 //getter和setter方法省略 } public Class Address { private String road; //getter和setter方法省略 } [/code] 逻辑类: [code="java"]@Controller public class PersonController { @Autowired private PersonService personService; @RequestMapping(value = "getPersons.htm", method = RequestMethod.GET) public ModelAndView view() { System.out.println("success"); List<Person> persons = personService.getPersons();//自定义的方法 Map<String, Object> modelMap = new HashMap<String, Object>(); modelMap.put("persons", persons); return new ModelAndView(modelMap); } }[/code] 我在js看到获取到的json数据是这样的: [code="java"]{"persons":[{"address":{"road":"商业街"},"name":"小明"},{"address":{"road":"莲花街"},"name":"小红"}]}[/code] 前台代码: [code="java"]Ext.onReady(function() { var store = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : 'getPersons.htm' }), reader : new Ext.data.JsonReader({ root : 'books' }, [{ name : 'name' }, { name : 'address' }]) }); var persons = new Ext.grid.GridPanel({ store : store, cm : new Ext.grid.ColumnModel({ defaults : { sortable : true, width : 200 }, columns : [{ header : "name", dataIndex : 'name' }, { header : "address", dataIndex : 'address' }] }), width : 430, height : 270, title : 'Test', renderTo : 'persons' }); store.load(); });[/code] 在前台我要怎样获取json的数据才可以显示出来person中的address呢?
struts2.1.8 ,使用自带json插件struts2-json-plugin-2.1.8.1.客户端得不到json对象,弹出下载action提示框
struts2.1.8 ,使用自带struts2-json-plugin-2.1.8.1.jar把action对象返回客户端的json对象。注释配置,客户端总是弹出下载页面,打开后是正常的json数据,各位可以帮忙看看?代码很简单,困老好几天了,非常感谢,代码如下: Java代码 import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.test.product.bean.ScmProdUnit; import com.opensymphony.xwork2.ActionSupport; @Controller @Scope("prototype") @ParentPackage("json-default") @Results( { @Result(name = "success",type = "json") }) public class JsonTestAction extends ActionSupport { private static final long serialVersionUID = -6933656224417288484L; private ScmProdUnit scmProdUnit; // @Action(results={@Result(type="json",name="success",params ={"root","scmProdUnit" })}) public String querybyB() throws Exception { System.err.println("2222222"); scmProdUnit = new ScmProdUnit(); scmProdUnit.setId(1); scmProdUnit.setCode("jsoncode"); scmProdUnit.setName("json数据"); scmProdUnit.setRemark("测试"); return SUCCESS; } public ScmProdUnit getScmProdUnit() { return scmProdUnit; } public void setScmProdUnit(ScmProdUnit scmProdUnit) { this.scmProdUnit = scmProdUnit; } } } @Controller @Scope("prototype") @ParentPackage("json-default") @Results( { @Result(name = "success",type = "json") }) public class JsonTestAction extends ActionSupport { private static final long serialVersionUID = -6933656224417288484L; private ScmProdUnit scmProdUnit; // @Action(results={@Result(type="json",name="success",params ={"root","scmProdUnit" })}) public String querybyB() throws Exception { System.err.println("2222222"); scmProdUnit = new ScmProdUnit(); scmProdUnit.setId(1); scmProdUnit.setCode("jsoncode"); scmProdUnit.setName("json数据"); scmProdUnit.setRemark("测试"); return SUCCESS; } public ScmProdUnit getScmProdUnit() { return scmProdUnit; } public void setScmProdUnit(ScmProdUnit scmProdUnit) { this.scmProdUnit = scmProdUnit; } } } ProdUnit 只是一个很简单的pojo,前台代码如下 Java代码 function getjsontest() { $.post("json-test!querybyB.action", { },function(returnData,status) { if("success" == status) { alert(returnData.length); } },"json" ); } function getjsontest() { $.post("json-test!querybyB.action", { },function(returnData,status) { if("success" == status) { alert(returnData.length); } },"json" ); } 当我在一个测试页面button里掉这个function时候,总是弹出action下载页面,下载打开后,里面的json对象数据好像没错啊,如下: {"scmProdUnit":{"code":"jsoncode","id":1,"name":"json数据","remark":"测试"}},调用js的时候returnData总是返回null值,为啥啊?郁闷了几天了,麻烦看看
前台ajax传值后台controller取不到。
**我的HTML** ``` <body > <p id="weixinhao" class="weixinhao" onclick="huoquValues()">123456</p> <script type="text/javascript" src="../layui/jsplug/jquery-1.8.3.min.js"></script> <script type="text/javascript"> var count=0; function huoquValues(){ var value=document.getElementById("weixinhao");//获取p标签值 alert(value.innerText); count++;//模拟赋值次数 alert(count); var URL = window.location.href;//获取当前URL alert(URL); var params=[]; params.value=value; params.count=count; params.URL=URL; $.ajax({ type:'post',//请求方式 url:'/update',//请求地址 dataType:'json',//返回格式 data:params, error:function() { alert('请求失败'); }, success:function(params){ alert('请求成功'); } }); } ``` **我的controller** ``` @RequestMapping("update") @ResponseBody public Map<String,Object> update(String value,Integer count,String URL){ System.out.println("已进入"); System.out.println(value); System.out.println(count); System.out.println(URL); Map<String,Object> resultMap = new HashMap<String, Object>(); if(value == null || count==0||URL == null){ resultMap.put("result", "参数不合法!"); return resultMap; } resultMap.put("result", "操作成功"); return resultMap; } ``` 谢谢各位同志赐教,已解决。我这写的确实太麻烦了,我换了种方式可以传值到后台了。 ``` var count=0; function huoquValues(){ var value=document.getElementById("weixinhao").innerText;//获取p标签值 alert(value); count++;//模拟赋值次数 alert(count); var URL = window.location.href;//获取当前URL alert(URL); $.post("/addWX","value="+value+"&count="+count+"&URL="+URL ,function(data){ if(data!=null){ alert("成功_ajax"); } },"text") } ``` 解决了的问答不知道怎么下掉,看到这问答的伙伴们路过就可以了。
Spring MVC + Spring + Mybatis + JqGrid 前台数据显示不出来
json ``` @Controller @RequestMapping("/crud") public class UserController { @Resource(name="userServiceImpl") private UserService userService; @RequestMapping(method = RequestMethod.GET) public @ResponseBody CustomUserResponse findAllUser(){ List<UserVO> users = userService.getAllUsers(); CustomUserResponse response = new CustomUserResponse(); response.setRows(users); response.setRecords( String.valueOf(users.size()) ); response.setPage( "1" ); response.setTotal( "10" ); return response;//返回给jqGrid } } ``` jsp ``` <script type ="text/javascript"> $(function () { $("#list").jqGrid({ url: "/GridApp/crud",//获取数据的地址 datatype: "json",//从服务器端返回的数据类型,默认xml mtype: "GET",//ajax提交方式。POST或者GET,默认GET colNames: ["编号", "姓名", "性别", "年龄", "备注"],//列显示名称,是一个数组对象 /* 常用到的属性:name 列显示的名称;index 传到服务器端用来排序用的列名称; width 列宽度;align 对齐方式;sortable 是否可以排序 */ colModel: [ { name: "id", width: 55 }, { name: "name", width: 90 }, { name: "sex", width: 80, align: "right" }, { name: "age", width: 80, align: "right" }, { name: "remark", width: 80, align: "right" } ], pager: "#pager", //定义翻页用的导航栏,必须是有效的html元素。翻页工具栏可以放置在html页面任意位置 rowNum: 10, //在grid上显示记录条数,这个参数是要被传递到后台 rowList: [10, 20, 30],//一个下拉选择框,用来改变显示记录数,当选择时会覆盖rowNum参数传递到后台 sortname: "invid",//默认的排序列。可以是列名称或者是一个数字,这个参数会被提交到后台 sortorder: "desc",//排序顺序,升序或者降序(asc or desc) viewrecords: true,//定义是否要显示总记录数 emptyrecords: "Empty records",//当返回的数据行数为0时显示的信息。只有当属性 viewrecords 设置为ture时起作用 gridview: true,//构造一行数据后添加到grid中,如果设为true则是将整个表格的数据都构造完成后再添加到grid中,但treeGrid, subGrid, or afterInsertRow 不能用 autoencode: true,//对url进行编码 caption: "My first grid",//表格名称 jsonReader : { root: "rows", page: "page", total: "total", records: "records", repeatitems: false, cell: "cell", id: "id" } }); }); </script> <body> <table id = "list" ><tr><td></td></tr></table> <div id = "pager"></div> </body> ``` 异常 严重: Servlet.service() for servlet [springmvc] in context with path [/GridApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class com.java.json.CustomUserResponse] with root cause java.lang.IllegalArgumentException: No converter found for return value of type: class com.java.json.CustomUserResponse at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:178) at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:153) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.handleReturnValue(RequestResponseBodyMethodProcessor.java:165) at org.springframework.web.method.support.HandlerMethodReturnValueHandlerComposite.handleReturnValue(HandlerMethodReturnValueHandlerComposite.java:80) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:126) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1082) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
bootstrap-table 前台页面数据显示不出来
![图片说明](https://img-ask.csdn.net/upload/201908/13/1565655639_335171.png) 前台代码: <script> $(function(){ //bootstrapTable,直接将书填充进去 $("#myTable").bootstrapTable({ url: "http://127.0.0.1:8080/Category/category/find", method: 'Get', //请求方式 dataType: 'json', columns:[{ title:'咨询标题', field:'title' }, { title: '所属分类', field: 'cname' }, { title: '关键字', field: 'keyword' }, { title: '正文', field: 'content' }, { title: '发布时间', field: 'create_date' }, { title: '发布状态', field: 'status' }] }); }); </script> 后台Controller: @Controller @RequestMapping(value="/category") public class CategoryController { @Autowired private ICategoryService CategoryService; @RequestMapping(value="/find",method = RequestMethod.GET) @ResponseBody public List<Map<String, Object>> find(Map<String,Object> map,Cinfo cinfo){ List<Map<String, Object>> categoryList =null; try { categoryList = CategoryService.selectAll(cinfo); } catch (SQLException e) { e.printStackTrace(); } return categoryList; } } 已解决!!! 前台页面字段要大写,与Orcale保持一致
SpringBoot前端能不能遍历后台传过来的参数
``` 3.在templates中添加html的页面: index.html: <!DOCTYPE html> <html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>第一个HTML页面</title> </head> <body> <h1>Hello Spring Boot!!!</h1> <p th:text="${hello}"></p> <div> <p th:text="${say}"></p> </div> </body> </html> 4.编写controller层 HelloController: import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import java.util.HashMap; @Controller //注意这里必须为Controller public class HelloController { /** * 本地访问内容地址 :http://localhost:8080/hello * @param map * @return */ @RequestMapping("/hello") public String helloHtml(HashMap<String, Object> map, Model model) { model.addAttribute("say","欢迎欢迎,热烈欢迎"); map.put("hello", "欢迎进入HTML页面"); return "index"; } } 找了一段示例代码,这些代码,都只能在前端一个一个取参数的值,这样做不灵活, 能不能遍历呢, 以前Jsp的时候,我们是比较方便的,遍历了参数,转成Json格式,前台很方便用值的,就不用每次都自己把参数一个一个写出来,麻烦,通用性也不够 有会的吗? ```
org/codehaus/jackson/JsonGenerationException
在添加这个后<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 启动tomcat6.0 会提示严重: StandardWrapper.Throwable java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonGenerationException Eclipse的Web项目,jdk版本1.6 spring的servlet3.0.5 jackson的jar包3个:jackson-annotations-2.2.3.jar jackson-core-2.2.4.jar jackson-databind-2.2.4.jar 需求:前端发ajax请求,Controller方法处理,返回被转化json对象的List,前台在用each函数展示! 答案发邮箱 851173552@qq.com 感谢解答!
The server encountered an unexpected condition that prevented it from fulfilling the request.
在servlet中的post请求中添加switch op 就产生了以下错误 ![图片说明](https://img-ask.csdn.net/upload/201903/17/1552795308_599365.png) 请大佬帮忙看下怎么解决 下方servlet代码 package com.fruit.tray.controller; import java.io.IOException; import java.io.PrintWriter; import java.io.Writer; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson.JSON; import com.fruit.tray.bean.User; import com.fruit.tray.service.UserService; import com.fruit.tray.service.impl.UserServiceImpl; @WebServlet(urlPatterns = "/servlet/user") public class UserServlet extends HttpServlet { private static final long serialVersionUID = 1L; private UserService userService = new UserServiceImpl(); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 避免请求意外的设置 response.setContentType("text/html;charset=utf-8"); /*设置响应头允许ajax跨域访问*/ response.setHeader("Access-Control-Allow-Origin", "*"); /* 星号表示所有的异域请求都可以接受, */ response.setHeader("Access-Control-Allow-Methods", "GET,POST"); UserService userService = new UserServiceImpl(); String op = request.getParameter("op"); switch (op) { case "login": try { login(request, response, userService); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; case "regist": try { regist(request, response, userService); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } break; default: break; } //返回值给微信小程序 /*Writer out = response.getWriter(); out.write("进入后台了"); out.flush();*/ } private void regist(HttpServletRequest request, HttpServletResponse response, UserService userService) throws SQLException, IOException { String rphone = request.getParameter("phone"); String rpassword1 = request.getParameter("pwd1"); String rpassword2 = request.getParameter("pwd2"); String rsex = request.getParameter("sex"); String raddr1 = request.getParameter("addr1"); String raddr2 = request.getParameter("addr2"); String rthree = request.getParameter("three"); User ruser = new User("null", rphone, rpassword1, rthree, raddr1, raddr2, 18, rsex, "null", "null", null, "null"); User regist = userService.regist(ruser); if (ruser != null) { System.out.println("注册成功"); PrintWriter write = response.getWriter(); write.println("注册成功返回前台"); }else { PrintWriter write = response.getWriter(); write.println("注册失败返回前台"); } } private void login(HttpServletRequest request, HttpServletResponse response, UserService userService) throws SQLException, IOException { //获取微信小程序get的参数值并打印 String phone = request.getParameter("phone"); String password = request.getParameter("pwd"); System.out.println("phone:" + phone + "password:" + password); User user = null; user = userService.login(phone, password); if (user != null) { System.out.println(user.getUserName()); // 对象翻译成json字符串 String jsonObject = JSON.toJSONString(user); System.out.println(jsonObject); // list对象数组翻译成json字符串 List<User> list = new ArrayList<>(); list.add(user); String jsonList = JSON.toJSONString(list); response.setContentType("application/json;charset=UTF-8"); response.setCharacterEncoding("utf-8"); System.out.println(jsonList); PrintWriter out = response.getWriter(); out.println(jsonList); }else { PrintWriter write = response.getWriter(); write.println("用户名不匹配"); } } }
关于SpringBoot集成WebSocket后使用stomp发送消息对应路径未能成功接收到消息
自己尝试着搭建Springboot聊天室的项目,后台websocket配置如下 ``` @Configuration @EnableWebSocketMessageBroker //允许stomp协议 public class WebSocketConfig implements WebSocketMessageBrokerConfigurer{ @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/stomp") //添加STOMP协议的端点。// 这个URL是供WebSocket客户端或SockJS客户端连接服务端访问的地址。 .setAllowedOrigins("*").addInterceptors(new HttpSessionHandshakeInterceptor()). //添加允许跨域访问 withSockJS(); //指定端点使用SockJS协议 } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.setApplicationDestinationPrefixes("/topic,/queue") //服务器推送给客户端的前缀 .enableSimpleBroker("/app"); //客户端发送给服务端的前缀 } } ``` 消息接收类的代码如下 ``` @Controller public class MessageController { @MessageMapping("/test") @SendTo("/topic/hhh") public String sendMessage(Map<String,Object> map){ return "miao"; } } ``` 理论上前台应该发送消息到/api/test时Controller类应该能接收到消息,但是发送消息后未能进入controller类 html就不贴了,js前端代码如下 ``` window.onload=function(){ var sockJs=new SockJS("/stomp"); var stomp=Stomp.over(sockJs); stomp.connect({},function (frame) { console.log(frame); stomp.subscribe("/topic/hhh",function (data) { console.log(data) }); }) document.getElementById("sendMesssage").onclick=function () { console.log(stomp.connected); var message=document.getElementById("talkMessage"); stomp.send("/app/test",{},JSON.stringify({"message":message})); } } ``` 连接完成时frame的控制台日志打印如下 Frame {command: "CONNECTED", headers: {…}, body: ""} body: "" command: "CONNECTED" headers: heart-beat: "0,0" version: "1.1" __proto__: Object __proto__: Object send时并没有断开连接,为啥发送不到对应地址?
ssm框架下前后台交互实现邮箱发送功能
工具类 ``` package com.arvato.tools; import java.util.Date; import java.util.Properties; import javax.mail.Address; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import com.sun.mail.util.MailSSLSocketFactory; public class EmailUtil { //测试(OK) /* public static void main(String[] args){ try { sendEmail("13064845825@163.com", "好啊", "ssssssss"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }*/ public static void sendEmail(String toEmailAddress,String emailTitle,String emailContent)throws Exception{ Properties props = new Properties(); // 开启debug调试 props.setProperty("mail.debug", "true"); // 发送服务器需要身份验证 props.setProperty("mail.smtp.auth", "true"); // 设置邮件服务器主机名 props.setProperty("mail.host", "smtp.qq.com"); // 发送邮件协议名称 props.setProperty("mail.transport.protocol", "smtp"); /**SSL认证,注意腾讯邮箱是基于SSL加密的,所有需要开启才可以使用**/ MailSSLSocketFactory sf = new MailSSLSocketFactory(); sf.setTrustAllHosts(true); props.put("mail.smtp.ssl.enable", "true"); props.put("mail.smtp.ssl.socketFactory", sf); //创建会话 Session session = Session.getInstance(props); //发送的消息,基于观察者模式进行设计的 Message msg = new MimeMessage(session); msg.setSubject(emailTitle); //使用StringBuilder,因为StringBuilder加载速度会比String快,而且线程安全性也不错 StringBuilder builder = new StringBuilder(); builder.append("\n"+emailContent); builder.append("\n时间 " + new Date()); msg.setText(builder.toString()); msg.setFrom(new InternetAddress("970742915@qq.com")); Transport transport = session.getTransport(); transport.connect("smtp.qq.com", "970742915@qq.com", "********"); //发送消息 transport.sendMessage(msg, new Address[] { new InternetAddress(toEmailAddress) }); transport.close(); } } ``` Controller中代码 ``` @Controller public class SendEmailAction { /** * 发送邮件 * @return * @throws Exception */ @RequestMapping(value="/sendEmail.json" , method=RequestMethod.POST,produces="application/json;charset=UTF-8") @ResponseBody public Object sendEmail(HttpServletRequest request)throws Exception, ClassNotFoundException { Map<String,String> map = new HashMap<String,String>(); String msg = "ok"; //发送状态 String toEMAIL = "13064845825@163.com"; //对方邮箱 String TITLE = "成绩单"; //标题 String CONTENT ="你这次的考试成绩很棒"; //内容 EmailUtil.sendEmail(toEMAIL, TITLE, CONTENT); map.put("result", msg); return map; } } ``` js如下 ``` function goSendEmail(){ parent.layer.confirm('您确定要发送邮件吗?', { btn: ['确定','取消'], //按钮 shade: false //不显示遮罩 }, function(){ $.ajax({ type: "POST", title: '推送邮箱', url: ctx+ '/sendEmail.json?', data: {CONTENT:CONTENT,TITLE:TITLE,CONTENT:CONTENT}, dataType:'json', //beforeSend: validateData, cache: false, success: function(data){ if("ok" == data.result){ $("#msg").tips({ side:3, msg:'发送成功!', bg:'#68B500', time:5 }); }else{ $("#msg").tips({ side:3, msg:'发送失败!', bg:'#68B500', time:5 }); } } }); }, function(){ parent.layer.msg("已取消", {icon: 1}); return false; }); } ``` 前台代码段 ``` <button class="btn btn-success btn-primary" onclick="goSendEmail()"> <i class="fa fa-envelope-o"></i> 电子邮箱推送 </button> ``` 现在前台无法访问到后台数据 请问我这个问题出在哪?前后台交互这段不懂,求大神答疑,谢谢! 这个工具类没有问题已测试,可以正常发送的
SSH框架报错找不到action,求大神指教
我是用 ``` <a class="more" href="/stage/charge/ordershow.action"> ``` 跳转,但是报There is no Action mapped for action name ordershow.错,新手求指教 错误: ``` 六月 06, 2016 11:32:02 上午 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn 警告: Could not find action or result There is no Action mapped for action name ordershow. - [unknown location] at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189) at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61) at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39) at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475) at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) ``` strust.xml配置: ``` <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devModel" value="true" /> <include file="json-default.xml" /> <include file="struts-default.xml" /> <package name="login" extends="json-default"> <action name="ordershow" class="orderAction" method="show"> <result name="show">/stage/order/order_info.jsp</result> </action> </package> <constant name="struts.i18n.encoding" value="UTF-8" /> <constant name="struts.locale" value="zh_CN" /> <constant name="struts.ui.theme" value="simple" /> <constant name="struts.ui.templateDir" value="template" /> <constant name="struts.ui.templateSuffix" value="ftl" /> </struts> ``` web.xml: ``` <?xml version="1.0" encoding="UTF-8" ?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:/spring-*.xml </param-value> </context-param> </web-app> ``` jsp: ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE html> <!--[if IE 8]> <html lang="en" class="ie8"> <![endif]--> <!--[if IE 9]> <html lang="en" class="ie9"> <![endif]--> <!--[if !IE]><!--> <html lang="en"> <!--<![endif]--> <!-- BEGIN HEAD --> <head> <meta charset="utf-8" /> <title>Ttuo-Hotel | 酒店管理系统</title> <meta content="width=device-width, initial-scale=1.0" name="viewport" /> <meta content="" name="description" /> <meta content="" name="author" /> <link href="../assets/bootstrap/css/bootstrap.min.css" rel="stylesheet" /> <link href="../assets/css/metro.css" rel="stylesheet" /> <link href="../assets/bootstrap/css/bootstrap-responsive.min.css" rel="stylesheet" /> <link href="../assets/font-awesome/css/font-awesome.css" rel="stylesheet" /> <link href="../assets/fullcalendar/fullcalendar/bootstrap-fullcalendar.css" rel="stylesheet" /> <link href="../assets/css/main_style.css" rel="stylesheet" /> <link href="../assets/css/style_responsive.css" rel="stylesheet" /> <link href="../assets/css/style_default.css" rel="stylesheet" id="style_color" /> <link rel="stylesheet" type="text/css" href="../assets/chosen-bootstrap/chosen/chosen.css" /> <link rel="stylesheet" type="text/css" href="../assets/uniform/css/uniform.default.css" /> <link rel="shortcut icon" href="../favicon.ico" /> </head> <!-- END HEAD --> <!-- BEGIN BODY --> <body class="fixed-top"> <!-- BEGIN HEADER --> <div class="header navbar navbar-inverse navbar-fixed-top"> <!-- BEGIN TOP NAVIGATION BAR --> <div class="navbar-inner"> <div class="container-fluid"> <!-- BEGIN LOGO --> <a class="brand" href="index.html"> <img src="../assets/img/logo11.png" alt="logo" /> </a> <!-- END LOGO --> <!-- BEGIN RESPONSIVE MENU TOGGLER --> <a href="javascript:;" class="btn-navbar collapsed" data-toggle="collapse" data-target=".nav-collapse"> <img src="../assets/img/menu-toggler.png" alt="" /> </a> <!-- END RESPONSIVE MENU TOGGLER --> <!-- BEGIN TOP NAVIGATION MENU --> <ul class="nav pull-right"> <!-- BEGIN NOTIFICATION DROPDOWN --> <li class="dropdown" id="header_notification_bar"><a href="#" class="dropdown-toggle" data-toggle="dropdown"> <i class="icon-warning-sign"></i> <span class="badge">6</span> </a> <ul class="dropdown-menu extended notification"> <li> <p>You have 14 new notifications</p> </li> <li><a href="javascript:;" onclick=App.onNotificationClick(1);> <span class="label label-success"><i class="icon-plus"></i> </span> New user registered. <span class="time">Just now</span> </a> </li> <li><a href="#"> <span class="label label-important"><i class="icon-bolt"></i> </span> Server #12 overloaded. <span class="time">15 mins</span> </a> </li> <li><a href="#"> <span class="label label-warning"><i class="icon-bell"></i> </span> Server #2 not respoding. <span class="time">22 mins</span> </a> </li> <li><a href="#"> <span class="label label-info"><i class="icon-bullhorn"></i> </span> Application error. <span class="time">40 mins</span> </a> </li> <li><a href="#"> <span class="label label-important"><i class="icon-bolt"></i> </span> Database overloaded 68%. <span class="time">2 hrs</span> </a> </li> <li><a href="#"> <span class="label label-important"><i class="icon-bolt"></i> </span> 2 user IP blocked. <span class="time">5 hrs</span> </a> </li> <li class="external"><a href="#">See all notifications <i class="m-icon-swapright"></i> </a> </li> </ul> </li> <!-- END NOTIFICATION DROPDOWN --> <!-- BEGIN INBOX DROPDOWN --> <li class="dropdown" id="header_inbox_bar"><a href="#" class="dropdown-toggle" data-toggle="dropdown"> <i class="icon-envelope-alt"></i> <span class="badge">5</span> </a> <ul class="dropdown-menu extended inbox"> <li> <p>You have 12 new messages</p> </li> <li><a href="#"> <span class="photo"><img src="../assets/img/avatar2.jpg" alt="" /> </span> <span class="subject"> <span class="from">Lisa Wong</span> <span class="time">Just Now</span> </span> <span class="message"> Vivamus sed auctor nibh congue nibh. auctor nibh auctor nibh... </span> </a> </li> <li><a href="#"> <span class="photo"><img src="../assets/img/avatar3.jpg" alt="" /> </span> <span class="subject"> <span class="from">Richard Doe</span> <span class="time">16 mins</span> </span> <span class="message"> Vivamus sed congue nibh auctor nibh congue nibh. auctor nibh auctor nibh... </span> </a> </li> <li><a href="#"> <span class="photo"><img src="../assets/img/avatar1.jpg" alt="" /> </span> <span class="subject"> <span class="from"></span> <span class="time">2 hrs</span> </span> <span class="message"> Vivamus sed nibh auctor nibh congue nibh. auctor nibh auctor nibh... </span> </a> </li> <li class="external"><a href="#">See all messages <i class="m-icon-swapright"></i> </a> </li> </ul> </li> <!-- END INBOX DROPDOWN --> <!-- BEGIN TODO DROPDOWN --> <li class="dropdown" id="header_task_bar"><a href="#" class="dropdown-toggle" data-toggle="dropdown"> <i class="icon-tasks"></i> <span class="badge">5</span> </a> <ul class="dropdown-menu extended tasks"> <li> <p>You have 12 pending tasks</p> </li> <li><a href="#"> <span class="task"> <span class="desc">New release v1.2</span> <span class="percent">30%</span> </span> <span class="progress progress-success "> <span style="width: 30%;" class="bar"></span> </span> </a> </li> <li><a href="#"> <span class="task"> <span class="desc">Application deployment</span> <span class="percent">65%</span> </span> <span class="progress progress-danger progress-striped active"> <span style="width: 65%;" class="bar"></span> </span> </a> </li> <li><a href="#"> <span class="task"> <span class="desc">Mobile app release</span> <span class="percent">98%</span> </span> <span class="progress progress-success"> <span style="width: 98%;" class="bar"></span> </span> </a> </li> <li><a href="#"> <span class="task"> <span class="desc">Database migration</span> <span class="percent">10%</span> </span> <span class="progress progress-warning progress-striped"> <span style="width: 10%;" class="bar"></span> </span> </a> </li> <li><a href="#"> <span class="task"> <span class="desc">Web server upgrade</span> <span class="percent">58%</span> </span> <span class="progress progress-info"> <span style="width: 58%;" class="bar"></span> </span> </a> </li> <li><a href="#"> <span class="task"> <span class="desc">Mobile development</span> <span class="percent">85%</span> </span> <span class="progress progress-success"> <span style="width: 85%;" class="bar"></span> </span> </a> </li> <li class="external"><a href="#">See all tasks <i class="m-icon-swapright"></i> </a> </li> </ul> </li> <!-- END TODO DROPDOWN --> <!-- BEGIN USER LOGIN DROPDOWN --> <li class="dropdown user"><a href="#" class="dropdown-toggle" data-toggle="dropdown"> <img alt="" src="../assets/img/avatar1_small.jpg" /> <span class="username"></span> <i class="icon-angle-down"></i> </a> <ul class="dropdown-menu"> <li><a href="extra_profile.html"><i class="icon-user"></i> 我的信息</a> </li> <li><a href="calendar.html"><i class="icon-calendar"></i> 我的日历</a> </li> <li><a href="#"><i class="icon-tasks"></i> 我的任务</a> </li> <li class="divider"></li> <li><a href="hotel.jsp"><i class="icon-key"></i> 退出登录</a> </li> </ul> </li> <!-- END USER LOGIN DROPDOWN --> </ul> <!-- END TOP NAVIGATION MENU --> </div> </div> <!-- END TOP NAVIGATION BAR --> </div> <!-- END HEADER --> <!-- BEGIN CONTAINER --> <div class="page-container row-fluid"> <!-- BEGIN SIDEBAR --> <div class="page-sidebar nav-collapse collapse"> <!-- BEGIN SIDEBAR MENU --> <ul> <li> <!-- BEGIN SIDEBAR TOGGLER BUTTON --> <div class="sidebar-toggler hidden-phone"></div> <!-- BEGIN SIDEBAR TOGGLER BUTTON --> </li> <li> <!-- BEGIN RESPONSIVE QUICK SEARCH FORM --> <form class="sidebar-search"> <div class="input-box"> <a href="javascript:;" class="remove"></a> <input type="text" placeholder="查询. . ." /> <input type="button" class="submit" value=" " /> </div> </form> <!-- END RESPONSIVE QUICK SEARCH FORM --> </li> <li class="has-sub "> <a href="/hotel/index.jsp"> <i class="icon-home"></i> <span class="title">首页</span> <span class="selected"></span> </a> </li> <li class="start active"> <a href="/hotel/stage/stage.jsp"> <i class="icon-bookmark-empty"></i> <span class="title">前台</span> <span class="arrow "></span> </a> <ul class="sub"> <li><a href="/hotel/stage/charge/charge_info.jsp">入住开单</a></li> <li><a href="/hotel/jie">入住详情</a></li> <li><a href="ordershow.action">预定开单</a></li> <li><a href="/hotel/orderfood/food!food.action">订餐服务</a></li> <li><a href="Vip.action">会员管理</a></li> </ul> </li> <li class="has-sub "> <a href="/hotel/restaurant/catering.jsp"> <i class="icon-th-list"></i> <span class="title">餐饮部</span> <span class="arrow "></span> </a> <ul class="sub"> <li><a href="/hotel/restaurant/basic/basic.jsp">餐饮信息</a> </li> <li><a href="/hotel/restaurant/enter/enter!show.action">采购入库</a> </li> <li><a href="/hotel/restaurant/stock/stock.jsp">库存盘点</a> </li> <li><a href="/hotel/restaurant/purchase/purchase!show.action">取材出库</a> </li> </ul> </li> <li class="has-sub "> <a href="/hotel/room/room.jsp"> <i class="icon-star-empty"></i> <span class="title">客房部</span> <span class="arrow "></span> </a> <ul class="sub"> <li><a href="/hotel/room/basic/basic.jsp">基本设置</a> </li> <li><a href="/hotel/room/roommanage/roommanage.jsp">客房管理</a> </li> <li><a href="/hotel/room/damage/damage!show.action">损坏设备统计</a> </li> </ul> </li> <li class="has-sub "> <a href="javascript:;"> <i class="icon-table"></i> <span class="title">统计</span> <span class="arrow "></span> </a> <ul class="sub"> <li ><a href="statistic/room_pie.jsp">房间总体情况</a></li> <li ><a href="statistic/room_stack.jsp">各类型房间情况</a></li> </ul> </li> <li class="has-sub "> <a href="javascript:;"> <i class="icon-briefcase"></i> <span class="title">部门档案</span> <span class="arrow "></span> </a> <ul class="sub"> <li ><a href="department/deptc!show.action">部门分类</a></li> <li ><a href="department/dept!show.action">部门信息</a></li> <li ><a href="department/staff!show.action">人员档案</a></li> </ul> </li> <li class="has-sub "> <a href="javascript:;"> <i class="icon-map-marker"></i> <span class="title">地图</span> <span class="arrow "></span> </a> <ul class="sub"> <li><a></a></li> </ul> </li> <li class="has-sub "> <a href="javascript:;"> <i class="icon-map-marker"></i> <span class="title">公告</span> <span class="arrow "></span> </a> <ul class="sub"> <li><a></a></li> </ul> </li> <li class="has-sub "> <a href="javascript:;"> <i class="icon-briefcase"></i> <span class="title">其他</span> <span class="arrow "></span> </a> <ul class="sub"> <li><a href="profile/profile.jsp">我的信息</a></li> <li><a href="profile/calendar.jsp">我的日程</a></li> <li><a>我的任务</a></li> </ul> </li> <li class=""> <a href="hotel.jsp"> <i class="icon-user"></i> <span class="title">退出登陆</span> </a> </li> </ul> <!-- END SIDEBAR MENU --> </div> <!-- END SIDEBAR --> <div class="page-content"> <!-- BEGIN PAGE CONTAINER--> <div class="container-fluid"> <!-- BEGIN PAGE HEADER--> <div class="row-fluid"> <div class="span12"> <!-- BEGIN STYLE CUSTOMIZER --> <div class="color-panel hidden-phone"> <div class="color-mode-icons icon-color"></div> <div class="color-mode-icons icon-color-close"></div> <br> <div class="color-mode"> <p>主题 颜色</p> <ul class="inline"> <li class="color-black current color-default" data-style="default"></li> <li class="color-blue" data-style="blue"></li> <li class="color-brown" data-style="brown"></li> <li class="color-purple" data-style="purple"></li> <li class="color-white color-light" data-style="light"></li> </ul> <label class="hidden-phone"> <input type="checkbox" class="header" checked value="" /> <span class="color-mode-label">固定标题</span> </label> </div> </div> <!-- END BEGIN STYLE CUSTOMIZER --> <!-- BEGIN PAGE TITLE & BREADCRUMB--> <h3 class="page-title"> 前台<small>请选择内容进行操作:</small> </h3> <ul class="breadcrumb"> <li><i class="icon-home"></i> <a href="/hotel/index.jsp">首页</a> <i class="icon-angle-right"></i> </li> <li><a href="javascript:;">前台</a> </li> </ul> <!-- END PAGE TITLE & BREADCRUMB--> </div> </div> <!-- END PAGE HEADER--> <!-- BEGIN PAGE CONTENT--> <div class="row-fluid"> <div class="span12"> <div id="dashboard"> <!-- BEGIN DASHBOARD STATS --> <div class="row-fluid"> <div class="span2 responsive" data-tablet="span6" data-desktop="span2"> <div class="dashboard-stat yellow"> <div class="visual"> <img src="../assets/img/icon/resize_png_new4.png"> </div> <div class="details"> <div class="number">入住开单</div> <div class="desc"></div> </div> <a class="more" href="/hotel/stage/charge/charge_info.jsp"> 点击浏览更多 <i class="m-icon-swapright m-icon-white"></i> </a> </div> </div> <div class="span2 responsive" data-tablet="span6" data-desktop="span2"> <div class="dashboard-stat green"> <div class="visual"> <img src="../assets/img/icon/33216.png"> </div> <div class="details"> <div class="number">入住详情</div> <div class="desc"></div> </div> <a class="more" href="/hotel/jie"> 点击浏览更多 <i class="m-icon-swapright m-icon-white"></i> </a> </div> </div> <div class="span2 responsive" data-tablet="span6 fix-offset" data-desktop="span2"> <div class="dashboard-stat purple"> <div class="visual"> <img src="../assets/img/icon/resize_png_new7.png"> </div> <div class="details"> <div class="number">预定开单</div> <div class="desc"></div> </div> <a class="more" href="/stage/charge/ordershow.action"> 点击浏览更多 <i class="m-icon-swapright m-icon-white"></i> </a> </div> </div> <div class="span2 responsive" data-tablet="span6 fix-offset" data-desktop="span2"> <div class="dashboard-stat green"> <div class="visual"> <img src="../assets/img/icon/548346.png"> </div> <div class="details"> <div class="number">订餐服务</div> <div class="desc"></div> </div> <a class="more" href="/hotel/orderfood/food!food.action"> 点击浏览更多 <i class="m-icon-swapright m-icon-white"></i> </a> </div> </div> <div class="span2 responsive" data-tablet="span6 fix-offset" data-desktop="span2"> <div class="dashboard-stat yellow"> <div class="visual"> <img src="../assets/img/icon/resize_png_new6.png"> </div> <div class="details"> <div class="number">会员管理</div> <div class="desc"></div> </div> <a class="more" href="Vip.action"> 点击浏览更多 <i class="m-icon-swapright m-icon-white"></i> </a> </div> </div> </div> </div> <!-- END DASHBOARD STATS --> </div> </div> </div> <!-- END PAGE CONTENT--> </div> <!-- END PAGE CONTAINER--> </div> <!-- END PAGE --> <!-- BEGIN FOOTER --> <div class="footer"> 2014 &copy; Ttuo-Hotel | by ToTeam <div class="span pull-right"> <span class="go-top"><i class="icon-angle-up"></i> </span> </div> </div> <!-- END FOOTER --> <!-- BEGIN JAVASCRIPTS --> <!-- Load javascripts at bottom, this will reduce page load time --> <script src="../assets/js/jquery-1.8.3.min.js"></script> <script src="../assets/breakpoints/breakpoints.js"></script> <script src="../assets/jquery-slimscroll/jquery-ui-1.9.2.custom.min.js"></script> <script src="../assets/bootstrap/js/bootstrap.min.js"></script> <script src="../assets/js/jquery.blockui.js"></script> <script src="../assets/js/jquery.cookie.js"></script> <script src="../assets/fullcalendar/fullcalendar/fullcalendar.min.js"></script> <script type="text/javascript" src="../assets/uniform/jquery.uniform.min.js"></script> <script type="text/javascript" src="../assets/chosen-bootstrap/chosen/chosen.jquery.min.js"></script> <!-- ie8 fixes --> <!--[if lt IE 9]> <script src="assets/js/excanvas.js"></script> <script src="assets/js/respond.js"></script> <![endif]--> <script src="../assets/js/app.js"></script> <script> jQuery(document).ready(function() { // initiate layout and plugins App.setPage('calendar'); App.init(); }); </script> <!-- END JAVASCRIPTS --> </body> <!-- END BODY --> </html> ``` ``` ``` java文件: ``` package com.hotel.action.stage; import java.util.ArrayList; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.hotel.entity.stage.Orderlist; import com.hotel.entity.stage.RoomAll; import com.hotel.service.stage.OrderService; import com.hotel.utils.Encode; import com.opensymphony.xwork2.ActionSupport; @Controller("orderAction") @Scope("prototype") public class OrderAction extends ActionSupport { @Autowired @Qualifier("orderService") private OrderService os; private Orderlist orderlist = new Orderlist(); private ArrayList<Orderlist> list1 = new ArrayList<Orderlist>(); ArrayList<RoomAll> list2 = new ArrayList<RoomAll>(); private String idds; private int id; private String number; public String save() { orderlist.setName(Encode.toutf8(orderlist.getName())); os.save(orderlist, idds); return "order1"; } public String show() { list1 = os.show(); return "show"; } public String getone() { list2 = os.getone(number); return "get1"; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } public int getId() { return id; } public void setId(int id) { this.id = id; } public Orderlist getOrderlist() { return orderlist; } public ArrayList<Orderlist> getList1() { return list1; } public void setList1(ArrayList<Orderlist> list1) { this.list1 = list1; } public void setOrderlist(Orderlist orderlist) { this.orderlist = orderlist; } public String getIdds() { return idds; } public void setIdds(String idds) { this.idds = idds; } public ArrayList<RoomAll> getList2() { return list2; } public void setList2(ArrayList<RoomAll> list2) { this.list2 = list2; } } ``` 程序结构: ![图片说明](https://img-ask.csdn.net/upload/201606/06/1465185272_322367.png) jsp文件位置: ![图片说明](https://img-ask.csdn.net/upload/201606/06/1465185442_652255.png) jar包: ![图片说明](https://img-ask.csdn.net/upload/201606/06/1465185533_60648.png) ![图片说明](https://img-ask.csdn.net/upload/201606/06/1465185546_855720.png)
有人用过ajaxfileupload上传图片,然后用Jcrop去截图的么?有个问题请教下!
我用AjaxFileUpload把图片传上去了,然后返回图片的上传路径到前台<img>标签里,为什么返回的高度宽度都是0,然后自动生成的<div>下面的<img>标签也没有获取到src属性 ``` /** * 文件上传 * @param file * @param request * @param response * @return */ @RequestMapping(value = "/uploadFile.do") public @ResponseBody Map<String,Object> uploadFile(@RequestParam(value = "apkFile") MultipartFile file,HttpServletRequest request, HttpServletResponse response) { Map<String,Object> resMap = new HashMap<String,Object>(); //String classPath = this.getClass().getClassLoader().getResource("/").getPath(); String classPath = request.getRealPath("/"); if (file != null) { if (file.isEmpty()) { // 未选择文件 resMap.put("status", "未选择文件"); } else{ // 文件原名称 String originFileName = file.getOriginalFilename(); try { //这里使用Apache的FileUtils方法来进行保存 FileUtils.copyInputStreamToFile(file.getInputStream(), new File(classPath+uploadDir, originFileName)); resMap.put("status","ok"); resMap.put("imgUrl","../"+uploadDir+originFileName); } catch (IOException e) { resMap.put("status", "文件上传失败!"); e.printStackTrace(); } } } return resMap; } ``` 这是我的controller方法 ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link rel="stylesheet" href="../resources/css/jquery.Jcrop.min.css" type="text/css" /> <!-- <script src="../resources/js/common/jquery-1.11.3.js" type="text/javascript"></script> --> <script src="http://edge1u.tapmodo.com/global/js/jquery.min.js"></script> <script src="../resources/js/common/ajaxfileupload.js" type="text/javascript"></script> <script src="../resources/js/fileupload.js" type="text/javascript"></script> <script src="../resources/js/common/jquery.Jcrop.js"></script> <title>上传头像</title> </head> <body> 当前用户: ${userName} <input id="userId" value="${userId }" type="hidden" /> <div id="addApkWindows"> <div id="result"></div> 上传文件: <input type="file" id="apkFile" name="apkFile" /> <input type="button" value="上传" onclick="ajaxFileUpload()" /> </div> <form id="form_save" action="/user/save_portrait" style="display: none;"> <input type="hidden" id="img_left" name="left" value="0"> <input type="hidden" id="img_top" name="top" value="0"> <input type="hidden" id="img_width" name="width" value="0"> <input type="hidden" id="img_height" name="height" value="0"> <input type="hidden" id="img_rd" name="rd" value="0"> </form> <img src="" id="target" /> </body> </html> ``` 这是页面代码 ``` $(function() { $('#target').Jcrop(); }); function ajaxFileUpload() { //获取软件更新详情 var apkIntroduce = $("#apkInfo").val(); //开始上传文件时显示一个图片,文件上传完成将图片隐藏 //$("#loading").ajaxStart(function(){$(this).show();}).ajaxComplete(function(){$(this).hide();}); //执行上传文件操作的函数,使用encodeURI方法,防止传输中文字符的时候出现乱码 var uploadUrl = encodeURI(encodeURI("uploadFile.do?apkIntroduce=" + apkIntroduce)); $.ajaxFileUpload({ //处理文件上传操作的服务器端地址(可以传参数,已亲测可用) url : uploadUrl, // url:basePath + "uploadApk.do?apkIntroduce="+apkIntroduce, secureuri : false, //是否启用安全提交,默认为false fileElementId : 'apkFile', //文件选择框的id属性 dataType : 'text', //服务器返回的格式,可以是json或xml等 success : function(data, status) { //服务器响应成功时的处理函数 var dataset = $.parseJSON(data); if (dataset.status == "ok") { $('#result').html("Apk上传成功"); $('#target').attr("src", dataset.imgUrl); } else if (dataset.status == "parm_is_empty") { $('#result').html("没有选择APK!"); } else { $('#result').html('Apk上传失败,请重试!!'); } }, error : function(data, status, e) { //服务器响应失败时的处理函数 console.log(e); console.log(data); $('#result').html('APK上传失败,请重试!!'); } }); $('#target').Jcrop(); } ``` ![](http://static.oschina.net/uploads/space/2015/1115/231553_hcvJ_2392241.png) 这是上传后的页面效果图
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入 假设现有4个人...
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
杨辉三角 是经典算法,这篇博客对它的算法思想进行了讲解,并有完整的代码实现。
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言 在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话显得很抽象,老规矩,我们先来看个图(这真是一个不和谐的图????): 管道改造经常会用这个小东西,通常我们叫它「三通」,它的主要作用就是将 downstream1 和 downstre...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
不要偷偷的查询我的个人资料,即使你再喜欢我,也不要这样,真的不好;
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // doshom...
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方...
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,...
程序员:我终于知道post和get的区别
是一个老生常谈的话题,然而随着不断的学习,对于以前的认识有很多误区,所以还是需要不断地总结的,学而时习之,不亦说乎
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) 本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知...
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员...
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC...
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
4G EPS 第四代移动通信系统
目录 文章目录目录4G 与 LTE/EPCLTE/EPC 的架构E-UTRANE-UTRAN 协议栈eNodeBEPCMMES-GWP-GWHSSLTE/EPC 协议栈概览 4G 与 LTE/EPC 4G,即第四代移动通信系统,提供了 3G 不能满足的无线网络宽带化,主要提供数据(上网)业务。而 LTE(Long Term Evolution,长期演进技术)是电信领域用于手机及数据终端的高速无线通...
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的Tencent Kona JDK,分布式HTAP数据库 TBase,企业级容器平台TKEStack,以及高性能图计算框架Plato。短短一周之内,腾讯开源了五大重点项目。其中,TubeMQ是腾讯大数据平台部门应用的核心组件,...
相关热词 c# clr dll c# 如何orm c# 固定大小的字符数组 c#框架设计 c# 删除数据库 c# 中文文字 图片转 c# 成员属性 接口 c#如何将程序封装 16进制负数转换 c# c#练手项目
立即提问