java解析html取里面的table

java肿么取的html里面的数据


手机号码归属地专业在线查询网

手机号码(段)  


++ ip138.com查询结果 ++
您查询的手机号码段 13217208299 测吉凶(新)
卡号归属地 上海 上海
卡 类 型 上海移动全球通卡
区 号 021
邮 编 200000 更详细的..

这是html里面的内容,tr里面的数据,比如:卡号归属地:上海,卡号类型:全球通,肿么取?

9个回答

直接上工具 如jsoup

scjingying
scjingying 自己搞定了,的确蛮简单的,谢谢你,Tao哥
7 年多之前 回复
scjingying
scjingying TAO哥,可以加你么?QQ
7 年多之前 回复
scjingying
scjingying 却是简单,只是解析了好久,就是不能解析出table里面的内容,都全部解析出来了
7 年多之前 回复
jinnianshilongnian
jinnianshilongnian public static void main(String[] args) throws IOException { Document doc = Jsoup.parse(url地址, "UTF-8"); Elements elements = doc.getElementsByClass("tdc2"); for(int i=1;i<elements.size()-1; i++) { System.out.println(elements.get(i).text()); } } jsoup是个工具 语法简单 可以查查 在提取内容算是简单的了
7 年多之前 回复
scjingying
scjingying 不会,大哥你教教我?现在一些接口都要钱,只能自己做了
7 年多之前 回复
jinnianshilongnian
jinnianshilongnian jsoup使用语法类似于 css/jQuery
7 年多之前 回复

//第一种:用标记id的td元素,获取值方法
txt .value=document .getElementById ("23").innerHTML ;

//第二种:用获取Table(通过其id),指定获取的行、列
var valueTd=document .getElementById ("tbl").rows [1].cells[2];
txt.value=valueTd.innerHTML ;

如何用js获取table第1行第2列的值
原文:
[url]http://demojava.iteye.com/blog/781091[/url]

scjingying
scjingying 不是了,里面有两个table,而且你写的取23行,这样写死?
7 年多之前 回复
iteye_5246
iteye_5246 连 table第1行第2列的值 都获取了,用正则干什么?过滤?
7 年多之前 回复
scjingying
scjingying 有没有正则?
7 年多之前 回复

[code="javasciprt"]
var tr = $("#mytable").find("tr");
for(var rowIndex=0;rowIndex<tr.length;rowIndex++)//遍历所有行
{
var td = $(tr[rowIndex]).find("td");
for(var colIndex=0;colIndex<td.length;colIndex++)//遍历每一行中的列
{
var text = $(td[colIndex]).text();//获取文本
alert("text"+text);
}
}
[/code]

scjingying
scjingying 我不是想用js解析,我要用java解析,本来我就是抓取的网页
7 年多之前 回复

大哥,我错了,又打酱油了。。。。。java 解析。。。。。。没看。。。

html不就是一个xml文件么。。。解析节点就好了。。 很多工具都可以 jsoop、jdom、dom4j。。。。

htmlparser

htmlunit

这要看你的需求了,不同的解析工具包虽然都有对Html基本解析功能,但是还有很多细节.
比如
Jericho HTML Parser Jericho HTML Parser是一个简单而功能强大的Java HTML解析器库,可以分析和处理HTML文档的一部分,
包括一些通用的服务器端标签,同时也可以重新生成无法识别的或无效的HTML。它也提供了一个有用的HTML表单分析器。

HTML Parser HTML Parser实现即时HTML语法分析程序。

Java HTML Parser HTML Parser提供了一组Tag对象,这些对象可以深入解析一棵可搜索的结构树。

TagSoup TagSoup是一个Java开发符合SAX的HTML解析器.

HtmlRipper HtmlRipper是一个Java包能够按照预先定义好的规则设置来从Web页中抽取动态数据.

Cobra Cobra是一个HTML工具包。它包含一个纯Java HTML DOM 分析器和一个页面表现引擎。Cobra支持HTML4,Javascript 和CSS2。

HtmlCleaner HtmlCleaner是一个开源的Html文档解析器。HtmlCleaner能够重新排序每个元素然后生成结构良好(Well-Formed)的XML文档。
默认它遵循的规则是类似于大部份web浏览器为创文档对象模型所使用的规则。然而,用户可以提供自定义tag和规则组来进行过滤和匹配。

Java Mozilla Html Parser Java Mozilla Html Parser能够将html解析成Java Document对象。
它是一个基于Mozilla Html解析器封装的Html解析类库。因此能够为开发人员提供一个浏览器质量的HTML解析器。
http://www.open-open.com/30.htm

人家说的是 后台怎么处理 不是前台取 用java处理

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java 解析html格式数据转json
status_line: HTTP/1.1 200 OK, content: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="TEXT/HTML; CHARSET=utf-8"/> <title>Error</title> </head> <body> <H2>Error</H2> <table summary="Error" border="0" bgcolor="#FEEE7A" cellpadding="0" cellspacing="0" width="400"> <tr> <td> <table summary="Error" border="0" cellpadding="3" cellspacing="1"> <tr valign="top" bgcolor="#FBFFDF" align="left"> <td> <STRONG>Error</STRONG> </td> </tr> <tr valign="top" bgcolor="#FFFFFF"> <td>This page can't be displayed. Contact support for additional information.<br/>The incident ID is: N/A.</td> </tr> </table> </td> </tr> </table> </body> </html> 以上是我对接的接口返回的信息,要转成json提供给我的客户端。java最好有源码跪谢
用java解析HTTP请求报头
<p>在上次WEB项目的总结中</p> <p>我就已经花了很多时间</p> <p>总结了HTTP协议</p> <p>详细的叙述了HTTP请求,应答</p> <p>并用Telnet自己写过一个HTTP请求</p> <p> </p> <p>这次</p> <p>在山寨Tomcat雏形的时候</p> <p>因为需要服务器端</p> <p>根据请求的信息</p> <p>作出相应回应</p> <p> </p> <p>而请求信息</p> <p>又都是通过浏览器封装好的</p> <p>Http请求类型</p> <p> </p> <p> </p> <p>在服务器端</p> <p>通过一个客户线程</p> <p>使用客户线程的输入流</p> <p>即可完全得到</p> <p>经过浏览器封装好的</p> <p>向服务器端发送的信息</p> <p>源代码如下</p> <p> </p> <pre name="code" class="java"> /** * 传入一个Socket对象,解析出通过该对象传入这个链接中的所有HTTP请求信息 * * @param client */ private void getRequset(Socket client) { try { InputStream in = client.getInputStream(); InputStreamReader reader = new InputStreamReader(in); BufferedReader bd = new BufferedReader(reader);//三重封装 String t = null; while ((t = bd.readLine()) != null) { System.out.println(t); parser(t);//解析每一句的方法 } } catch (Exception ef) { ef.printStackTrace(); System.out.println("getRequset error---&gt;"); } }</pre> <p> </p> <p> </p> <p> </p> <p>信息如下</p> <p> </p> <table border="0"><tbody><tr> <td>GET /index HTTP/1.1<br>User-Agent: Opera/9.80 (Windows NT 6.1; U; Edition IBIS; zh-cn) Presto/2.6.30 Version/10.63<br>Host: localhost:81<br>Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1<br>Accept-Language: zh-CN,zh;q=0.9,en;q=0.8<br>Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1<br>Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0<br>Connection: Keep-Alive<br>//注意,此处两行空格也为HTTP请求的一部分<br><br> </td> </tr></tbody></table> <p> </p> <p> </p> <p>我们又都知道</p> <p>在Tomcat中</p> <p>所有的请求信息</p> <p> </p> <p>我们都已经封装好</p> <p>放入一个HttpRequest对象中</p> <p> </p> <p>在我们自己山寨的Tomcat中</p> <p>因为得到的Http请求是一个字符串</p> <p>要得到我们需要的信息</p> <p> </p> <p>也必须对此字符串进行解析</p> <p>将解析后的字符串放入一个Request对象中</p> <p> </p> <p>Requst类源码如下</p> <p> </p> <pre name="code" class="java">public class Request { private String method;// 请求方法 private String protocol;// 协议版本 private String requestURL; private String requestURI;//请求的URI地址 在HTTP请求的第一行的请求方法后面 private String host;//请求的主机信息 private String Connection;//Http请求连接状态信息 对应HTTP请求中的Connection private String agent;// 代理,用来标识代理的浏览器信息 ,对应HTTP请求中的User-Agent: private String language;//对应Accept-Language private String encoding;//请求的编码方式 对应HTTP请求中的Accept-Encoding private String charset;//请求的字符编码 对应HTTP请求中的Accept-Charset private String accept;// 对应HTTP请求中的Accept; getter() setter() }</pre> <p> </p> <p> </p> <p>  有了用来存放封装后信息的Request类</p> <p>  有了请求信息的字符串</p> <p>  接下来</p> <p>  我们只需要将字符串解析</p> <p>  并且存放在Request对象中</p> <p> </p> <p> 源代码如下</p> <p>  </p> <pre name="code" class="java"> /** * 传入HTTP请求中需要解析的某一句 解析该句,并请放入对应的Request对象中 * * @param s */ private void parser(String s) { if (s.startsWith("GET")) { String method = "Get"; request.setMethod(method); int index = s.indexOf("HTTP"); System.out.println("index---&gt;" + index); String uri = s.substring(3 + 1, index - 1);// 用index-1可以去掉连接中的空格 System.out.println("uri---&gt;" + uri); request.setRequestURI(uri); String protocol = s.substring(index); System.out.println("protocol----&gt;" + protocol); request.setProtocol(protocol); } else if (s.startsWith("POST")) { String method = "POST"; request.setMethod(method); int index = s.indexOf("HTTP"); System.out.println("index---&gt;" + index); String uri = s.substring(3 + 1, index - 1);// 用index-1可以去掉连接中的空格 System.out.println("uri---&gt;" + uri); request.setRequestURI(uri); String protocol = s.substring(index); System.out.println("protocol----&gt;" + protocol); request.setProtocol(protocol); } else if (s.startsWith("Accept:")) { String accept = s.substring("Accept:".length() + 1); System.out.println("accept---&gt;" + accept); request.setAccept(accept); } else if (s.startsWith("User-Agent:")) { String agent = s.substring("User-Agent:".length() + 1); System.out.println("agent---&gt;" + agent); request.setAgent(agent); } else if (s.startsWith("Host:")) { String host = s.substring("Host:".length() + 1); System.out.println("host---&gt;" + host); request.setHost(host); } else if (s.startsWith("Accept-Language:")) { String language = s.substring("Accept-Language:".length() + 1); System.out.println("language---&gt;" + language); request.setLanguage(language); } else if (s.startsWith("Accept-Charset:")) { String charset = s.substring("Accept-Charset:".length() + 1); System.out.println("charset---&gt;" + charset); request.setCharset(charset); } else if (s.startsWith("Accept-Encoding:")) { String encoding = s.substring("Accept-Encoding:".length() + 1); System.out.println("encoding---&gt;" + encoding); request.setEncoding(encoding); } else if (s.startsWith("Connection:")) { String connection = s.substring("Connection:".length() + 1); System.out.println("connection---&gt;" + connection); request.setConnection(connection); } }</pre>   <p>   封装好请求的Request对象后</p> <p>  接下来</p> <p>  我们就来封装进行应答的Response对象</p> <p> </p> <p>  MOVE ON</p><br/><strong>问题补充</strong><br/><div class="quote_title">lihuan5120 写道</div><div class="quote_div">看楼主的头像。。。该不会是长沙理工大学的吧???<img src="/images/smiles/icon_cry.gif"/> </div> <br />中南<br/><strong>问题补充</strong><br/><div class="quote_title">http4j 写道</div><div class="quote_div">鼓励一下,多写写协议级的纯Java代码会提高些水准。目前我和楼主相反,在研究纯Client端的Java HTTP。楼主可以借鉴Apache HTTP Component. <br />不过有一点建议,楼主你的If-else能不能处理一下,这种代码太让人眼花缭乱了。 <br />我给你个建议,用Annotation对Request中字段进行标注,比如charset可以标注@RequestAttribute(name="Accept-Charset"),通过反射自动根据标注名称赋值。 <br /> <br />我写的纯client在http://code.google.com/p/http4j <br />欢迎多多交流。</div> <br /> <br />感谢兄弟的指导,受教了。
jsp上传文件页面报无法解析的编译问题
index.jsp <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <html> <head> <title>带进度条的文件上传</title> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <link href="CSS/style.css" rel="stylesheet"> <script language="javascript" src="JS/AjaxRequest.js"></script> <script language="javascript"> //此处需要加&nocache="+new Date().getTime(),否则将出现进度不更新的情况 function getProgress(){ var loader=new net.AjaxRequest("showProgress.jsp?nocache="+new Date().getTime(),deal_p,onerror,"GET"); } function onerror(){ alert("上传文件出错!"); } function deal_p(){ var h=this.req.responseText; h=h.replace(/\s/g,""); //去除字符串中的Unicode空白符 document.getElementById("progressPercent").style.display=""; //显示百分比 progressPercent.innerHTML=h+"%"; //显示完成的百分比 document.getElementById("progressBar").style.display="block"; //显示进度条 document.getElementById("imgProgress").width=h*(255/100); //显示完成的进度 } function deal(form){ form.submit(); //提交表单 timer=window.setInterval("getProgress()",500); //每隔500毫秒获取一次上传进度 } </script> </head> <body> <form name="form1" enctype="multipart/form-data" method="post" action="UpLoad?action=uploadFile"> <table width="500" height="289" border="0" align="center" cellpadding="0" cellspacing="0" background="images/bg.jpg"> <tr> <td width="61" rowspan="2">&nbsp;</td> <td width="439" align="center"> <table width="80%" height="190" border="0" cellpadding="0" cellspacing="0"> <tr> <td align="center">&nbsp;</td> </tr> <tr> <td height="34" style="color:#FFFFFF">请选择上传的文件:</td> </tr> <tr> <td height="42"><input name="file" type="file" size="42"></td> </tr> <tr> <td height="50" style="color:#FFFFFF"> 注:文件大小请控制在50M以内。</td> </tr> <tr> <td height="29" align="center" style="color:#FFFFFF"><div id="progressBar" class="prog_border" align="left"><img src="images/progressBar.jpg" width="0" height="13" id="imgProgress"></div>  <span id="progressPercent" style="width:40px;display:none">0%</span></td> </tr> <tr> <td height="29" align="center"><img src="images/shangchuan.gif" width="61" height="23" onClick="deal(form1)"> <img src="images/chongzhi.gif" width="61" height="23" onClick="form1.reset();">&nbsp; </td></tr> </table> </td> </tr> </table> </form> </body> </html> upload.java package com.wgh.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; /** * * @author administrator */ public class UpLoad extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String action = request.getParameter("action"); if ("uploadFile".equals(action)) { this.uploadFile(request, response); // 上传文件 } } public void uploadFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GBK"); request.setCharacterEncoding("GBK"); HttpSession session = request.getSession(); session.setAttribute("progressBar", 0); // 定义指定上传进度的Session变量 String error = ""; int maxSize = 50 * 1024 * 1024; // 单个上传文件大小的上限 DiskFileItemFactory factory = new DiskFileItemFactory(); // 基于磁盘文件项目创建一个工厂对象 ServletFileUpload upload = new ServletFileUpload(factory); // 创建一个新的文件上传对象 try { List items = upload.parseRequest(request);// 解析上传请求 Iterator itr = items.iterator();// 枚举方法 while (itr.hasNext()) { FileItem item = (FileItem) itr.next(); // 获取FileItem对象 if (!item.isFormField()) {// 判断是否为文件域 if (item.getName() != null && !item.getName().equals("")) {// 判断是否选择了文件 long upFileSize = item.getSize(); // 上传文件的大小 String fileName = item.getName(); // 获取文件名 // System.out.println("上传文件的大小:" + item.getSize()); if (upFileSize > maxSize) { error = "您上传的文件太大,请选择不超过50M的文件"; break; } // 此时文件暂存在服务器的内存中 File tempFile = new File(fileName);// 构造临时对象 // String savePath=tempFile.getName(); // //返回上传文件在客户端的完整路径名称 // request.setAttribute("filename", savePath); File file = new File(request.getRealPath("/upload"), tempFile.getName()); // 获取根目录对应的真实物理路径 InputStream is = item.getInputStream(); int buffer = 1024; // 定义缓冲区的大小 int length = 0; byte[] b = new byte[buffer]; double percent = 0; FileOutputStream fos = new FileOutputStream(file); while ((length = is.read(b)) != -1) { percent += length / (double) upFileSize * 100D; // 计算上传文件的百分比 fos.write(b, 0, length); // 向文件输出流写读取的数据 session.setAttribute("progressBar", Math .round(percent)); // 将上传百分比保存到Session中 } fos.close(); Thread.sleep(1000); // 线程休眠1秒 } else { error = "没有选择上传文件!"; } } } } catch (Exception e) { e.printStackTrace(); error = "上传文件出现错误:" + e.getMessage(); } if (!"".equals(error)) { request.setAttribute("error", error); request.getRequestDispatcher("error.jsp") .forward(request, response); } else { request.setAttribute("result", "文件上传成功!"); request.getRequestDispatcher("upFile_deal.jsp").forward(request, response); } } } 问题 java.lang.Error: 无法解析的编译问题: 无法解析导入 org.apache.commons.fileupload.disk 无法解析导入 org.apache.commons.fileupload.servlet DiskFileItemFactory 无法解析为类型 DiskFileItemFactory 无法解析为类型 ServletFileUpload 无法解析为类型 ServletFileUpload 无法解析为类型 com.wgh.servlet.UpLoad.<init>(UpLoad.java:15) sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) java.lang.reflect.Constructor.newInstance(Constructor.java:423) java.lang.Class.newInstance(Class.java:442) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879) org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:610) org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1777) java.lang.Thread.run(Thread.java:745) 求救
spring mvc拦截jsp文件,jsp未被解析
采用spring mvc 对jsp文件进行拦截,在preHandle方法里面返回true,结果页面展示的是jsp的源码,而不是我要展示的内容,这是什么原因?如下所示: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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=UTF-8"> <title>Insert title here</title> </head> <body> <!-- <c:forEach var="l" items="${list}"> <table border="1" width="100"> <tr> <td><c:out value="${l.name}"></c:out></td> </tr> </table> </c:forEach> --> <div> <form action="game/test2.do" method="post" > ${sessionScope.map.erro} 鐢ㄦ埛鍚嶏細<input type="text" name="name" /></br> 瀵� 鐮�:<input type="password" name = "psw"/></br> <input type="submit" value="鐧婚檰"/> </form> </div> </body> </html>
正则表达式解析html 用java语言
我有现在有html的源代码,想抽出源代码中所有有文本内容(包含中文和英文),简单点说就是想得到我们看到页面的所有内容, '&nbsp;\r\n\r\n\r\n考拉(&nbsp;Phascolarctos cinereus)\r\n&nbsp;树袋熊又叫考拉、无尾熊、可拉熊,学名Phascolarctos cinereus。生活在澳大利亚,是澳大利亚奇特的珍贵原始树栖动物,属哺乳类中的有袋目树袋熊科。分布于澳大利亚东南部干旱森林中。&nbsp;\r\n历史\r\n考拉四千五百万年以前,在澳洲大陆脱离南极板块,逐渐向北漂移的时候,考拉或类似考拉的动物就已经首先开始进化了。目前的化石证明,二千五百万年前,类似考拉的动物就已经存在于澳洲大陆上。在', '<TABLE style="WIDTH: 30%" border=1 cellSpacing=1 cellPadding=1 align=right>\r\n<TBODY>\r\n<TR>\r\n<TD>\r\n<P align=center><A title=考拉 href="http://tupian.hudong.com/a3_79_03_01200000007867115130343533579_jpg.html" target=_blank alt="考拉"><IMG title=考拉 alt=考拉 align=right src="http://a3.att.hudong.com/79/03/01200000007867115130343533579_s.jpg"></A>&nbsp;</P></TD></TR>\r\n<TR>\r\n<TD>\r\n<P align=center>考拉(&nbsp;Phascolarctos cinereus)</P></TD></TR></TBODY></TABLE>\r\n<P>&nbsp;<A class=innerlink title=树袋熊 href="index.php?doc-innerlink-%E6%A0%91%E8%A2%8B%E7%86%8A">树袋熊</A>又叫考拉、无尾熊、可拉熊,学名Phascolarctos cinereus。生活在澳大利亚,是<A class=innerlink title=澳大利亚 href="index.php?doc-innerlink-%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A">澳大利亚</A>奇特的珍贵原始树栖动物,属哺乳类中的有袋目树袋熊科。分布于澳大利亚东南部干旱森林中。&nbsp;</P>\r\n<DIV class=hdwiki_tmml>历史</DIV>\r\n<P><div class="img img_r" ><a title="点击查看原图" href="http://tupian.hudong.com/a1_82_96_01300000027077119837968726177_jpg.html"target="_blank"><img title="null" alt="考拉" src="http://a1.att.hudong.com/82/96/01300000027077119837968726177_s.jpg" /></a><strong>考拉</strong></div>四千五百万年以前,在澳洲大陆脱离<A class=innerlink title=南极 href="index.php?doc-innerlink-%E5%8D%97%E6%9E%81">南极</A>板块,逐渐向北漂移的时候,考拉或类似考拉的动物就已经首先开始进化了。目前的化石证明,二千五百万年前,类似考拉的动物就已经存在于澳洲大陆上。在漂移的过程中,气候开始剧烈变化,澳洲大陆变得越来越干燥,<A class=innerlink title=桉树 href="index.php?doc-innerlink-%E6%A1%89%E6%A0%91">桉树</A>、<A class=innerlink title=橡胶树 href="index.php?doc-innerlink-%E6%A9%A1%E8%83%B6%E6%A0%91">橡胶树</A>等植物也开始改变并进化,而考拉则开始变得依赖于这些植物。 </P>\r\n<P>一般认为,<A class=innerlink title=土著居民 href="index.php?doc-innerlink-%E5%9C%9F%E8%91%97%E5%B1%85%E6%B0%91">土著居民</A>于6万年前甚至更早就已经来到了澳洲大陆。如同其它澳洲动物一样,考拉,也成为土著文化与文明中许多神话与传说的重要组成部分。 </P>\r\n<P>千百年来,考拉虽然一直是土著居民的一项重要食物来源,可是,这并不妨碍它们繁荣昌盛。1788年,欧洲人第一次登上澳洲大陆以后,John Price成为第一个记录考拉这种动物的<A class=innerlink title=欧洲 href="index.php?doc-innerlink-%E6%AC%A7%E6%B4%B2">欧洲</A>人。他在进入悉尼附近的Blue Mountains时详细地描述了考拉。1816年,考拉第一次有了学名“phascolarctos cinereus”,意即为“灰袋熊”。后来,人们发现,考拉根本就不是熊,于是,一个哺乳动物研究小组的成员将考拉叫做“marsupials”(意为“有袋类动物”),即刚出生的幼兽发育并不完全且需要在育儿袋中继续发育的动物。现在,诸如考拉之类的大多数有袋类动物均分布于澳大利亚和巴布亚新几内亚。 </P>\r\n<DIV style="WIDTH: 200px" class="img img_l"><A title="考拉 " href="http://tupian.hudong.com/a1_56_97_01300000351540124669972921957_jpg.html" target=_blank><IMG id=changeTheId-img_tmp_id title="考拉 " alt="考拉 " src="http://a1.att.hudong.com/56/97/01300000351540124669972921957_s.jpg"></A><strong>考拉 </strong></DIV>\r\n<P>在澳洲的土著语言中,考拉意即为“不喝水”,尽管澳洲的方言多种多样。在不同版本的殖民资料中,考拉曾被记录为多个不同的格式,如cullewine, koolewong, colo, colah, koolah, kaola, koala, karbor, boorabee, 和 goribun等等。 </P>\r\n<P>当新的殖民者进入澳洲大陆的时候,毁林垦田开始了,澳洲本土的动物开始失去它们的栖息地。1924年,考拉在南部澳洲绝灭,新南威尔士的考拉也接近绝灭,而维多利亚的考拉估计不到500只。于是,考拉毛皮的交易焦点开始向北转向了昆士兰。1919年,澳大利亚政府宣布了一个为期6个月的狩猎解禁期,期间,有100百万只考拉被猎杀。尽管1927年允许猎杀考拉的特别季节被正式取消,但是,当禁令重新被取消时,在短短的1个多月的时间,就有超过80万只的考拉被猎杀。 <BR>1930年,公开猎杀考拉的暴行迫使政府宣布,考拉在所有的州均成为被保护动物。然而,却没有法律来保护那些考拉赖以生存和隐蔽的桉树林,除了最近<A class=innerlink title=新南威尔士 href="index.php?doc-innerlink-%E6%96%B0%E5%8D%97%E5%A8%81%E5%B0%94%E5%A3%AB">新南威尔士</A>颁布了相关的法律之外。</P>\r\n<DIV class=hdwiki_tmml>外形特征和习性</DIV>\r\n<DIV style="WIDTH: 157px" class="img img_r"><A title="考拉 " href="http://tupian.hudong.com/a2_70_97_01300000351540124669978330844_jpg.html" target=_blank><IMG id=changeTheId-img_tmp_id title="考拉 " alt="考拉 " 而我想得到的结果是: 树袋熊又叫考拉、无尾熊、可拉熊,学名Phascolarctos cinereus。生活在澳大利亚,是澳大利亚奇特的珍贵原始树栖动物,属哺乳类中的有袋目树袋熊科。分布于澳大利亚东南部干旱森林中。 四千五百万年以前,在澳洲大陆脱离南极板块,逐渐向北漂移的时候,考拉或类似考拉的动物就已经首先开始进化了。目前的化石证明,二千五百万年前,类似考拉的动物就已经存在于澳洲大陆上。在漂移的过程中,气候开始剧烈变化,澳洲大陆变得越来越干燥,桉树、橡胶树等植物也开始改变并进化,而考拉则开始变得依赖于这些植物。 一般认为,土著居民于6万年前甚至更早就已经来到了澳洲大陆。如同其它澳洲动物一样,考拉,也成为土著文化与文明中许多神话与传说的重要组成部分。 千百年来,考拉虽然一直是土著居民的一项重要食物来源,可是,这并不妨碍它们繁荣昌盛。1788年,欧洲人第一次登上澳洲大陆以后,John Price成为第一个记录考拉这种动物的欧洲人。他在进入悉尼附近的Blue Mountains时详细地描述了考拉。1816年,考拉第一次有了学名“phascolarctos cinereus”,意即为“灰袋熊”。后来,人们发现,考拉根本就不是熊,于是,一个哺乳动物研究小组的成员将考拉叫做“marsupials”(意为“有袋类动物”),即刚出生的幼兽发育并不完全且需要在育儿袋中继续发育的动物。现在,诸如考拉之类的大多数有袋类动物均分布于澳大利亚和巴布亚新几内亚。 想请问下各位有没有办法可以解决这个问题了
Jsoup问题求大神解答~
使用Jsoup来解析HTML时候,如果遇到了例如 ``` <div class="rc_list"> <table> <tbody> <tr>xxx</tr> <tr>yyy</tr> </tbody> </table> </div> ``` 能不能用一次解析也就是一次规则获取到 ``` <tr></tr> ``` 中的内容啊~这里只有最顶层div节点有class属性
SpringMVC返回ModelAndView时404
**在数据库查到了数据,向页面添加时404,路径是对的(我没有配置试图解析器,尝试配置后仍然404),controller也执行了,求教是什么原因** controller代码 ![controller](https://img-ask.csdn.net/upload/201802/27/1519745674_147255.png) 后台log ![图片说明](https://img-ask.csdn.net/upload/201802/27/1519746002_610598.png) jsp代码如下 ``` <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!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"> <!-- <meta http-equiv="refresh" content="3000" url="/newsList.action"/> --> <title>Insert title here</title> </head> <body> <form action="${pageContext.request.contextPath }/news.action" method="get"> <input type="submit" id="ss"> 商品列表: <table width="100%" border=1> <tr> <td>链接</td> <td>标题</td> <td>生产日期</td> <td>商品描述</td> <td>操作</td> </tr> <c:forEach items="${NewsList }" var="item"> <tr> <td>${item.news_href }</td> <td>${item.news_title }</td> <td>${item.detail }</td> <td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a> </td> </tr> </c:forEach> </table> </form> </body> </html> ```
ssm中Controller跳转到jsp中,不能显示参数值问题
这是spring的配置: ``` <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP--> <!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- --> <bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--设置JSP文件的目录位置--> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> ``` 以下是我的jsp代码: ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>ssm ${test}</title> </head> <body> <table width="100%" border=1> <tr> <td>商品名称</td> <td>商品价格</td> <td>商品描述</td> </tr> <c:forEach var="item" items="${itemList}"> <tr> <td>${item.name}</td> <td>${item.price}</td> <td>${item.detail}</td> </tr> </c:forEach> </table> </body> </html> ``` controller代码: ``` @RequestMapping("/findAllItem") public ModelAndView showItem(HttpSession session){ List<Item> itemList=itemService.findAllItem(); for(int i=0;i<itemList.size();i++){ Item item=itemList.get(i); System.out.println("Item:[ id= "+item.getId()+" | name= "+item.getName()+" | price= "+item.getPrice()+" | detail= "+item.getDetail()+" ]"); } session.setAttribute("aa","success"); //创建ModelAndView的对象 ModelAndView mv=new ModelAndView(); mv.setViewName("index"); mv.addObject("test","测试"); mv.addObject("itemList",itemList); return mv; } ``` 项目运行后可以正常跳转到对应的jsp,但是页面没有值,如图 ![图片说明](https://img-ask.csdn.net/upload/201710/12/1507821054_327718.png) 请问,这是什么原因????
无解Property [xx] not found on type [cn.xx]
我想把后台查出来的数据传到jsp上没想到一直遍历出错,求大佬指点一二,把数据封装成json用js解析实在是麻烦 **报错部分代码如下** ``` 19: <table border="1px"> 20: <tr> 21: <c:forEach items="${page.rows}" var="item"> 22: <td>${item.id}</td> 23: <%-- <c:forEach items="${item}" var="cost"> 24: ${cost} 25: </c:forEach> --%> Stacktrace:] with root cause javax.el.PropertyNotFoundException: Property [id] not found on type [cn.craftsman18.dormitory.pojo.Cost] at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:260) at javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:212) at javax.el.BeanELResolver.property(BeanELResolver.java:347) ``` **controller代码如下** ``` @RequestMapping("/query") public String list(QueryVo vo, Model model) throws Exception{ //设置查询的起始记录条数 vo.setStart((vo.getPage() - 1) * vo.getSize()); //查询数据列表和数据总数 List<Cost> payList = payService.queryList(); int count = payService.queryListCount(); Page<Cost> page = new Page<Cost>(); page.setTotal(count); //数据总数 page.setSize(vo.getSize()); //每页显示条数 page.setPage(vo.getPage()); //当前页数 page.setRows(payList); //数据列表 model.addAttribute("page", page); return "query"; } ``` **jsp代码如下** ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!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=UTF-8"> <title>账单流水</title> </head> <body> <br> ${page.rows} <br> -------------分割线------------- <table border="1px"> <tr> <c:forEach items="${page.rows}" var="item"> <td>${item.id}</td> </c:forEach> </tr> </table> </body> </html> ``` **对了还有pojo** ``` public class Cost { private int id; private double money; private String type; private String detail; private Date time; private String operator; private double balance; private boolean delFlag; int getId() { return id; } void setId(int id) { this.id = id; } double getMoney() { return money; } void setMoney(double money) { this.money = money; } String getType() { return type; } void setType(String type) { this.type = type; } String getDetail() { return detail; } void setDetail(String detail) { this.detail = detail; } Date getTime() { return time; } void setTime(Date time) { this.time = time; } String getOperator() { return operator; } void setOperator(String operator) { this.operator = operator; } double getBalance() { return balance; } void setBalance(double balance) { this.balance = balance; } boolean isDelFlag() { return delFlag; } void setDelFlag(boolean delFlag) { this.delFlag = delFlag; } ``` ——————————极丑的分割线——————————— ## 更新 折腾了半天还是换回老办法使用SpringMVC的ModelAndView,但是仍然报错 最后貌似在pojo里发现了什么 ``` private int id; int getId() { return id; } ``` 方法没公开…… 哎真的是学艺不精 来自stackoverflow的解答 ``` You thus need to make sure that there is a getter method matching exactly the property name, and that the method is public (non-static) and that the method does not take any arguments and that it returns non-void. If you have one and it still doesn't work, then chances are that you was busy editing code forth and back without firmly cleaning the build, rebuilding the code and redeploying/restarting the application. You need to make sure that you have done so. For boolean (not Boolean!) properties, the getter method name must start with is instead of get. ``` 大意就是 需要确保有一个getter方法完全匹配属性名称,并且该方法是public(非 - static),并且该方法不接受任何参数,并且它返回非void。对于boolean(不Boolean!)属性,getter方法名称必须以开始is而不是get。 公开方法,成功显示 折腾了一下午 好好学习 好好Google
struts1问题,在线等,如果能解决,200C币感谢
开发环境:win7旗舰版,tomcat8,jdk1.8,struts1 主要问题:jsp页面请求actioon后,报 HTTP Status 500 - No action instance for path /userAction could be created 项目基本上都是手写的,几个文件位置及内容如下: 项目名:969mall,路径(d:\tomcat8.0\webapps\969mall) 969mall文件夹下有: regist.jsp、WEB-INF文件夹 WEB-INF文件夹里面有:struts-config.xml、web.xml、classes文件夹、lib文件夹(空的) classes文件夹里有:UserAction.java、mypack文件夹 mypack文件夹里有:UserAction.class struts.jar、servlet-api.jar在tomcat8/lib里面 regist.jsp 代码如下: 主要代码:form action="userAction.do" method="post" <%@ page contentType="text/html;charset=gbk" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <center><h3>用户注册页面</h3></center> <form action="userAction.do" method="post"> <table class="tab1"> <thead><tr><td colspan="2"><span>*</span>&nbsp;为必填项,为便于商超发货,建议输入有效的<em style="color: red;">收货地址</em>。</td></tr></thead> <tbody> <tr><th>用户姓名:</th><td><input name="username"><span>*</span></td></tr> <tr><th>手机号:</th><td><input name="phone"><span>*</span></td></tr> <tr><th>收货地址:</th><td><input name="address" size="40"></td></tr> <tr><th>邮编:</th><td><input name="code"></td></tr> <tr><th>身份证号:</th><td><input name="iccard"></td></tr> <tr><td colspan="2" align="center"> <input type="submit" value="提交">&nbsp;&nbsp;&nbsp;&nbsp; <input type="reset" value="重置"> <input type="hidden" name="oper" value="regist"> </td></tr> </tbody> </table> </form> </body> </html> web.xml 代码如下: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>application</param-name> <param-value>ApplicationResources</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app> struts-config.xml 代码如下: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd"> <struts-config> <form-beans> <form-bean name="userFormAction" type="mypack.UserBeanForm"/> </form-beans> <action-mappings> <action name="userFormAction" type="mypack.UserAction" path="/userAction"> <forward name="regSucceed" path="/regsucceed.jsp"/> </action> </action-mappings> </struts-config> UserAction.java 代码如下: package mypack; import javax.servlet.http.*; import org.apache.struts.action.*; import java.util.ArrayList; public class UserAction extends org.apache.struts.action.Action{ public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){ System.out.print("execute ...."); return mapping.findForward("regSucceed"); } } 由于代码被CSDN解析了,没有显示完整的代码,本人拍了照片请大家帮忙看看 ![图片说明](https://img-ask.csdn.net/upload/201511/25/1448423459_125762.jpg) ![图片说明](https://img-ask.csdn.net/upload/201511/25/1448423572_944122.jpg) ![图片说明](https://img-ask.csdn.net/upload/201511/25/1448423582_566094.jpg) 哪位朋友能帮忙解决这个问题,200C币奖励,说话算话,在线等。 如果现场过来解决,100元人民币,地铁6号线终点站,海淀五路居站,电话:18910775122。 如果能把struts2基本配置给我讲解一下,并运行简单的登录验证,我愿意出500元,作为感谢,我之前学的struts1,原理的东西还有印象,所以学起来不会太费劲。
SpringMVC提交put,delete请求405
请求删除操作报:HTTP Status 405 - Request method 'POST' not supported 已经在web.xml配置,HiddenHttpMethodFilter过滤器 jsp页面: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>主页面</title> <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script> </head> <body> <form action="" method="post"> <input type="hidden" value="DELETE" name="_method"/> </form> <table border="1"> <tr> <th>编号</th> <th>用户名</th> <th>密码</th> <th>邮箱</th> <th>操作</th> </tr> <c:forEach items="${requestScope.list}" var="list"> <tr> <td>${list.userId}</td> <td>${list.userName}</td> <td>${list.password}</td> <td>${list.email}</td> <td> <a href="update" class="update">修改</a> <a href="user/${list.userId}" class="delete">刪除</a> </td> </tr> </c:forEach> </table> <br> <br> </body> </html> <script> $(function(){ $(".delete").click(function(){ var href=$(this).attr("href"); $("form").attr("action",href).submit(); return false; }); }); </script> SpringMVC-servlet.xml配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd " default-autowire="byName"> <!-- 启用spring mvc 注解 --> <context:annotation-config /> <mvc:annotation-driven /> <!-- 处理静态资源 --> <mvc:default-servlet-handler/> <!--对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="suffix" value=".jsp"></property> </bean> <context:component-scan base-package="com.tang" /> <!-- 获取数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/springmvc"></property> <property name="username" value="root"></property> <property name="password" value="123"> </property> </bean> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean> <!-- 给jdbc模板注入数据源 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> </beans> controller代码: package com.tang.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.tang.dao.UserDao; import com.tang.pojo.User; @Controller public class LoginController { @Autowired private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } @ModelAttribute public void test(){ System.out.println("LoginController.test()"); } @RequestMapping("/login") public String doLogin(String username,String password,ModelMap map){ User user=userDao.doLogin(username, password); if(user!=null){ List<User> list=userDao.findAll(); map.put("list", list); return "index"; }else{ return "login"; } } @RequestMapping(value="/update",method=RequestMethod.PUT) public String doUpdate(User user,ModelMap map){ userDao.doUpdate(user); List<User> list=userDao.findAll(); map.put("list", list); return "index"; } @RequestMapping(value="/user/{id}",method=RequestMethod.DELETE) public String doDelete(@PathVariable("id")Integer id,ModelMap map){ userDao.doDelete(id); List<User> list=userDao.findAll(); map.put("list", list); return "index"; } }
下边是两个字段的JSP文件,我想问的是关于hidden的问题
下边是两个字段的JSP文件,我想问的是关于hidden的问题,1和2分别是我在第一段代码和第二段代码中截取想要问的地方。比较: a.为什么1里要写(input...)这段是什么意思? b.为什么2里的hidden name还要写等于zheJiuSheZhi.shengChanXianID和zheJiuSheZhi.trainingOrCompetitionID。 请大神详细的为我解析一下,麻烦各位大神了,千恩万谢 1. ``` <input type="hidden" name="quZhengGuiZe.trainingOrCompetitionID" value="<s:property value="TrainingOrCompetitionID"/>"> <s:hidden name="id"/> <s:hidden name="trainingOrCompetitionID"/> ``` 2. ``` <s:hidden name="shengChanXianID"/> <s:hidden name="zheJiuSheZhi.shengChanXianID"/> <s:hidden name="trainingOrCompetitionID"/> <s:hidden name="zheJiuSheZhi.trainingOrCompetitionID"/> <s:hidden name="id"/> ``` ``` </TABLE> <s:if test="quZhengGuiZe.id>0"> <s:hidden name="quZhengGuiZe.id"/> </s:if> <s:else> <s:hidden name="quZhengGuiZe.id" value="0"/> </s:else> <input type="hidden" name="quZhengGuiZe.trainingOrCompetitionID" value="<s:property value="TrainingOrCompetitionID"/>"> <s:hidden name="id"/> <s:hidden name="trainingOrCompetitionID"/> </s:form> </body> </html> ``` ``` </TABLE> <s:if test="zheJiuSheZhi.id>0"> <s:hidden name="zheJiuSheZhi.id"/> </s:if> <s:else> <s:hidden name="zheJiuSheZhi.id" value="0"/> </s:else> <s:hidden name="shengChanXianID"/> <s:hidden name="zheJiuSheZhi.shengChanXianID"/> <s:hidden name="trainingOrCompetitionID"/> <s:hidden name="zheJiuSheZhi.trainingOrCompetitionID"/> <s:hidden name="id"/> </s:form> </body> </html> ```
ssh 实体对象转jason 前台无法显示
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <%@ include file="/public/head.jspf" %> <style type="text/css"> body { margin: 1px; } .searchbox { margin: -3; } </style> <script type="text/javascript"> $(function(){ $('#dg').datagrid({ //url地址改为请求categoryAction url:'forder_queryJoinUser.action', loadMsg:'Loading......', queryParams:{username:''}, fitColumns:true,//水平自动展开,如果设置此属性,则不会有水平滚动条,演示冻结列时,该参数不要设置 striped:true, //当数据多的时候不换行 nowrap:true, singleSelect:false, //如果为真,只允许单行显示,全显功能失效 //设置分页 pagination:true, //设置每页显示的记录数 pageSize:10, //设置可选的每页记录数,供用户选择,默认是10,20,30,40... pageList:[5,10,15,20], idField:'id',//指定id为标识字段,在删除,更新的时候有用,如果配置此字段,在翻页时,换页不会影响选中的项 toolbar: [{ iconCls: 'icon-edit', text:'更新订单', handler: function(){ //判断是否有选中行记录,使用getSelections获取选中的所有行 var rows = $("#dg").datagrid("getSelections"); if(rows.length == 0) { //弹出提示信息 $.messager.show({ //语法类似于java中的静态方法,直接对象调用 title:'错误提示', msg:'至少要选择一条记录', timeout:2000, showType:'slide', }); }else if(rows.length != 1) { //弹出提示信息 $.messager.show({ //语法类似于java中的静态方法,直接对象调用 title:'错误提示', msg:'每次只能更新一条记录', timeout:2000, showType:'slide', }); } else{ //弹出更新的页面 parent.$("#win").window({ title:"更新订单", width:350, height:250, content:'<iframe src="send_order_update.action" frameborder="0" width="100%" height="100%"/>' }); } } },'-',{ iconCls: 'icon-remove', text:'删除订单', handler: function(){ //判断是否有选中行记录,使用getSelections获取选中的所有行 var rows = $("#dg").datagrid("getSelections"); //返回被选中的行,如果没有任何行被选中,则返回空数组 if(rows.length == 0) { //弹出提示信息 $.messager.show({ title:'错误提示', msg:'至少要选择一条记录', timeout:2000, showType:'slide', }); } else { //提示是否确认删除,如果确认则执行删除的逻辑 $.messager.confirm('删除的确认对话框', '您确定要删除此项吗?', function(r){ if (r){ //1. 从获取的记录中获取相应的的id,拼接id的值,然后发送后台1,2,3,4 var ids = ""; for(var i = 0; i < rows.length; i ++) { ids += rows[i].id + ","; } ids = ids.substr(0, ids.lastIndexOf(",")); //2. 发送ajax请求 $.post("forder_deleteByIds.action",{ids:ids},function(result){ if(result == "true") { //将刚刚选中的记录删除,要不然会影响后面更新的操作 $("#dg").datagrid("uncheckAll"); //刷新当前页,查询的时候我们用的是load,刷新第一页,reload是刷新当前页 $("#dg").datagrid("reload");//不带参数默认为上面的queryParams } else { $.messager.show({ title:'删除异常', msg:'删除失败,请检查操作', timeout:2000, showType:'slide', }); } },"text"); } }); } } },'-',{ //查询按钮不是LinkButton,它有语法,但是也支持解析HTML标签 text:"<input id='ss' name='serach' />" }], rowStyler: function(index,row){ console.info("index" + index + "," + row) if(index % 2 == 0) { return 'background-color:#fff;'; } else { return 'background-color:#c4e1e1;'; } }, //同列属性,但是这些列将会冻结在左侧,大小不会改变,当宽度大于250时,会显示滚动条,但是冻结的列不在滚动条内 frozenColumns:[[ {field:'checkbox',checkbox:true}, {field:'id',title:'编号',width:60} ]], columns:[[ {field:'name',title:'收货人姓名',width:80}, {field:'phone',title:'收货人电话',width:100}, {field:'remark',title:'买家留言',width:100}, {field:'date',title:'创建日期',width:100}, {field:'total',title:'订单总价',width:100}, {field:'address',title:'收货地址',width:150}, {field:'user.id',title:'买家id',width:60}, {field:'user.login',title:'买家登录名',width:80}, {field:'status.status',title:'订单状态',width:100} ]] }); //把普通的文本框转化为查询搜索文本框 $('#ss').searchbox({ //触发查询事件 searcher:function(value,username){ //value表示输入的值 //获取当前查询的关键字,通过DataGrid加载相应的信息,使用load加载和显示第一页的所有行。 //如果指定了参数,它将取代'queryParams'属性。通常可以通过传递一些参数执行一次查询,通过调用这个方法会向上面url指定的action去发送请求,从服务器加载新数据。 $('#dg').datagrid('load',{ username: value }); }, prompt:'请输入搜索关键字' }); }); </script> </head> <body> <table id="dg"></table> </body> </html> `jsp代码 下面action: public String queryJoinUser() { // 用来存储分页的数据 pageMap = new HashMap<String, Object>(); System.out.println(username); // 根据关键字和分页的参数查询相应的数据 List<Forder> forderList = forderService.queryJoinUser(username, page, rows); pageMap.put("\"rows\"", forderList); pageMap.put("\"total\"", forderService.getCount(username)); System.out.println(pageMap); return "jsonMap"; } struts.xml <action name="forder_*" class="forderAction" method="{1}"> <result name="jsonMap" type="json"> <param name="root">pageMap</param> <param name="excludeProperties"> rows\[\d+\]\.post, rows\[\d+\]\.user\.pass, rows\[\d+\]\.user\.sex, rows\[\d+\]\.user\.phone, rows\[\d+\]\.user\.email, rows\[\d+\]\.status\.id </param> </result> <result name="bank"> /user/bank.jsp </result> </action> 执行后pageMap的输出: {"total"=1, "rows"=[Forder [id=1, name=张小, phone=1851663595, remark=是否被, date=null, total=14.00, post=4325232, addressrk=, date=null, total=100.00, post=dcvdf, address=市场v吃饭的]]} `` 没有报任何错误就是不显示![图片说明](https://img-ask.csdn.net/upload/201706/07/1496767475_187876.png) ``` ``` ```
Ajax使用-当选中职位类别时,它所对应的父岗位ID就会用复选框方式显示出来
控制器内: public ModelAndView addPosition() { Map<String, Object> map = new HashMap<String, Object>(); return new ModelAndView("admin/positionAdd",map); } public String savePosition(HttpServletRequest request) throws IOException { String post_type = request.getParameter("post_type"); String post_code = request.getParameter("post_code"); String post_name = request.getParameter("post_name"); String post_duties = request.getParameter("post_duties"); String parent_id = request.getParameter("parent_id"); String check_state = request.getParameter("check_state"); String check_note = request.getParameter("check_note"); String state = request.getParameter("state"); Position position = new Position(); position.setId(Common.returnUUID()); position.setPost_type(post_type); position.setPost_code(post_code); position.setPost_name(post_name); position.setPost_duties(post_duties); position.setParent_id(parent_id); position.setCheck_state(check_state); position.setCheck_note(check_note); position.setState(state); positionService.insert(position); return "redirect:positionList.do"; } @RequestMapping("admin/editPosition.do") public ModelAndView editPosition(ModelMap modelMap, String id) { Position position = (Position) positionService.selectByID(id); modelMap.put("p", position); return new ModelAndView("admin/positionEdit", modelMap); } public String editPosition(@ModelAttribute("Position") Position position) throws IOException { positionService.update(position); return "redirect:positionList.do"; } public String deletePosition(String id) { Position position = new Position(); position.setId(id); positionService.delete(position); return "redirect:positionList.do"; } public String positionList(HttpSession session, HttpServletRequest request,HttpServletResponse response) { String post_type = request.getParameter("post_type"); @SuppressWarnings("unchecked") List<Position> pList = this.positionService.selectList(post_type); StringBuffer sb= new StringBuffer(); sb.append("<tr id = 'select'>"); for (Position position : pList) { sb.append("<td> <input type='checkbox' id='position' name='position' value ='"+position.getPost_code()+"'>" +position.getPost_name()+ "</td>"); } sb.append("</tr>"); try { response.getWriter().println(sb.toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } JSP页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js"></script> <title>添加企业岗位</title> <script type="text/javascript"> function changeCK() { var selectedValue = document.getElementById("post_type"); var selectedIndex = selectedValue.selectedIndex; var ajaxUrl = "duiying.do?post_type=" + selectedValue.options[selectedIndex].value; ajaxFunction(ajaxUrl); document.getElementById("scope").style.display = ""; } function getScope() { } function setVals() { var id = document.getElementsByName("position"); var value = ""; var name = ""; for(var i = 0; i < id.length; i++){ if(id[i].checked) value += id[i].value+","; name += id[i].text+","; } //alert(value); document.getElementById("parent_id").value = value;//"111,222"; document.getElementById("temp1").value = name;//"111,222"; document.getElementById("scope").style.display = "none"; } function ajaxFunction(url) { //考虑到不同浏览器的兼容性,所以做出判断。 var xmlHttp; if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } else if (window.ActiveObject) { try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } //监控和接受后台传的字符串 xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { var result = xmlHttp.responseText; //document.getElementById("select").html(); //alert(result); $("#select").html(result); //select fenge(result); //"<p><input type='checkbox' id='checkbox' name='${ts.practice_code}' value='${ts.stu_code}' > ${ts.stu_name}+ ${ts.practice_code}</p>"; } }; xmlHttp.open("GET",url,false); xmlHttp.send(null); } //分割解析字符串。 function fenge(neirong) { } </script> </head> <body> <form name="form1" id="myform" method="post" action="doAddPosition.do"> <table border="0" width="400"> <tr> <td width="100">职位类别:</td> <td width="300"><select name="post_type" id="post_type" onChange="changeCK()"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select></td> </tr> <tr> <td width="100">岗位编码:</td> <td width="300"><input type="text" name="post_code" /></td> </tr> <tr> <td width="100">岗位名称:</td> <td width="300"><input type="text" name="post_name" /></td> </tr> <tr> <td width="100">岗位职责:</td> <td width="300"><input type="text" name="post_duties" /></td> </tr> <tr> <td width="100">父岗位id:</td> <td width="300"><input type="text" name="parent_id" /></td> </tr> <tr> <td width="100">审核备注:</td> <td width="300"><input type="text" name="check_note" /></td> <tr> <td width="100">状态:</td> <td width="300"><select name="state" id="state"> <option value="1">有效</option> <option value="2">无效</option> </select> </td> </tr> </table> <div id="scope" style="display:none"> <table> <tr id = "select"><td>请选择</td></tr> </table> <button type="button" onClick="setVals()">确定</button> </div> <div style="margin-top:20px;"> <input type="submit" value="保存" />&nbsp;&nbsp;&nbsp;&nbsp; <button type="button" onclick="window.location='./positionList.do'">返回</button> </div> </form> </body> </html> <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>修改企业岗位</title> <script language="javascript"> function changeBoxes(action) { var oForm = document.forms["myForm1"]; var oCheckBox = oForm.college; for(var i=0;i<oCheckBox.length;i++) //遍历每一个选项 if(action<0) //反选 oCheckBox[i].checked = !oCheckBox[i].checked; else //action为1是则全选,为0时则全不选 oCheckBox[i].checked = action; }</script> </head> <body> <form name="form1" method="post" action="doEditPosition.do"> <input type="hidden" name="id" name="id" value="${p.id}"> <table border="1" width="400"> <tr> <td width="100">职位类别:</td> <td width="300"><input type="text" name="post_type" value="${p.post_type}"> </td> </tr> <tr> <td width="100">岗位编码:</td> <td width="300"><input type="text" name="post_code" value="${p.post_code}"> </td> </tr> <tr> <td width="100">岗位名称:</td> <td width="300"><input type="text" name="post_name" value="${p.post_name}"> </td> </tr> <tr> <td width="100">岗位职责:</td> <td width="300"><input type="text" name="post_duties" value="${p.post_duties}" /> </td> </tr> <tr> <td width="100">父岗位id:</td> <td width="300"><input type="text" name="parent_id" value="${p.parent_id}" /> </td> </tr> <tr> <td width="100">审核备注:</td> <td width="300"><input type="text" name="check_note" value="${p.check_note}" /> </td> </tr> <tr> <td width="100">状态:</td> <td width="300"><input type="text" name="state" value="${p.state}" /> </td> </tr> </table> <div style="margin-top:20px;"> <input type="submit" value="保存" />&nbsp;&nbsp;&nbsp;&nbsp; <button type="button" onclick="window.location='./positionList.do'">返回</button> </div> </form> </body> </html>
项目运行没有报错,但是提交表单后无法找到controller
![图片说明](https://img-ask.csdn.net/upload/201803/19/1521426498_402357.png) 一次完整请求的日志: ![图片说明](https://img-ask.csdn.net/upload/201803/19/1521426741_184369.png) 我的各种配置: spring-mvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.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"> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/> <bean class="org.springframework.http.converter.FormHttpMessageConverter"/> <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> </mvc:message-converters> </mvc:annotation-driven> <!-- 使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入 --> <mvc:annotation-driven/> <context:component-scan base-package="com.commoninfo.user.controller"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <aop:aspectj-autoproxy proxy-target-class="true"> <aop:include name="controllerAspect"/> </aop:aspectj-autoproxy> <!-- 避免IE执行AJAX时,返回JSON出现下载文件 --> <!-- 支持JSON数据格式 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter"/> </list> </property> </bean> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> </bean> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/"/> <property name="suffix" value=".jsp"/> </bean> <!--处理静态资源--> <mvc:default-servlet-handler/> </beans> spring-mybatis.xml配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!--引入属性文件--> <context:property-placeholder location="classpath:/jdbc.properties"/> <context:component-scan base-package="com.commoninfo.user.service"/> <!--配置数据源--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${database.driver}"/> <property name="jdbcUrl" value="${database.url}"/> <property name="user" value="${database.username}"/> <property name="password" value="${database.password}"/> <property name="minPoolSize" value="1"/> <property name="maxPoolSize" value="20"/> <property name="maxIdleTime" value="1800"/> <property name="acquireIncrement" value="2"/> <property name="maxStatements" value="0"/> <property name="initialPoolSize" value="2"/> <property name="idleConnectionTestPeriod" value="1800"/> <property name="acquireRetryAttempts" value="30"/> <property name="breakAfterAcquireFailure" value="true"/> <property name="testConnectionOnCheckout" value="false"/> </bean> <!--mybatis文件--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!--自动扫描entity目录--> <property name="configLocation" value="classpath:mybatis-config.xml"/> <property name="mapperLocations" value="classpath*:com/commoninfo/user/**/*.xml"/> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.commoninfo.user.dao"/> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置事物的注解方式注入 --> <tx:annotation-driven transaction-manager="transactionManager"/> </beans> ``` web.xml的配置: <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!-- Spring-mybatis的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> </context-param> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!--字符过滤器--> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!--404错误页--> <error-page> <error-code>404</error-code> <location>/WEB-INF/view/404.jsp</location> </error-page> </web-app> index.jsp的内容: <%-- Created by IntelliJ IDEA. User: zhulongkun Date: 2018/3/18 Time: 14:06 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <html> <head> <title>登录测试</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <div align="center"> <form action="/test/dologin.do" method="post"> <table> <tr> <td><label>用户名</label></td> <td><label> <input type="text" name="username" style="width: 180px;"/> </label></td> </tr> <tr> <td><label>密&nbsp;码</label></td> <td><label> <input type="password" name="password" style="width: 180px;"/> </label></td> </tr> <tr> <td><input type="submit" name="login" value="登录"/></td> <td><input id="registerBtn" type="button" name="register" value="注册"/></td> </tr> </table> </form> </div> </body> </html> controller的内容: package com.commoninfo.user.controller; import com.commoninfo.user.entity.User; import com.commoninfo.user.service.UserService; import org.apache.log4j.Logger; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; /** * @author zhulongkun20@163.com * @date 2018/3/18 13:56 */ @Controller @RequestMapping("/test") public class LoginController { private static Logger logger = Logger.getLogger(LoginController.class); @Resource private UserService userService; @RequestMapping(value = "/dologin.do") public String doLogin(HttpServletRequest httpServletRequest, Model model) { User user = userService.getUsersByUsername( httpServletRequest.getParameter("username")).get(0); logger.info("User的信息为:" + user.toString()); if (userService.doUserLogin(user)) { model.addAttribute("successMsg", "登录成功!"); model.addAttribute("username", user.getUsername()); logger.info("successMsg:" + model.containsAttribute("successMsg")); logger.info("username:" + model.containsAttribute("username")); return "success"; } else { model.addAttribute("failedMsg", "用户名或密码错误!"); logger.info("failedMsg:" + model.containsAttribute("failedMsg")); return "failed"; } } } ``` ``` ``` ``` ``` ``` ``` ```
上手ajax遇到的问题
问题在注释中。谢谢! [code="html"] <!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=UTF-8"> <title>Insert title here</title> <script language="javascript"> function doCaculate() { var f = document.form1; if ((f.number_1.value != "") && (f.number_2.value != "")) { document.getElementById("feedback").innerHTML = "正在计算,请稍候..."; send_request("process.jsp?number_1="+f.number_1.value+ "&number_2="+f.number_2.value); } else if (f.number_1.value == "") { document.getElementById("feedback").innerHTML = "乘数不能为空。"; } else if (f.number_2.value == "") { document.getElementById("feedback").innerHTML = "被乘数不能未空。"; } } var http_request = false; function send_request(url) { http_request = false; if (window.XMLHttpRequest) { http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { try { http_request = new ActiveXObject("Msxml2.XMLHttp"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { window.alert("不能创建XMLHttpRequest对象实例."); return false; } http_request.onreadystatechange = processRequest; http_request.open("GET", url, true); http_request.send(null); } function processRequest() { var f = document.form1; if (http_request.readyState == 4) { if (http_request.status == 200) { var returnStr = http_request.responseText; if (returnStr.indexOf("Error") == -1) { alert(returnStr); // 这儿得到returnStr怎么是html?还要自己解析才能等得到计算值吗? document.getElementById("feedback").innerHTML = returnStr; f.result.value = returnStr; } else { f.result.value = ""; document.getElementById("feedback").innerHTML = returnStr; } } else { alert(http_request.status); alert("您所请求的页面有异常."); } } } </script> </head> <body> <form action="process.jsp" method="post" enctype="application/x-www-form-urlencoded" name="form1" target="_self"> <table width="400" cellpadding="4" cellspacing="1" border="0"> <caption>简单乘法计算</caption> <tr> <td align="center"> <input type="text" name="number_1" size="10"> * <input type="text" name="number_2" size="10"> = <input type="text" name="result" size="10"> </td> </tr> <tr align="center"> <td> &nbsp; <input type="button" name="Caculate" value="开始计算" onClick="doCaculate()">&nbsp; <input type="reset" name="reset" value="重新计算"> </td> </tr> <tr><td align="center" height="25"><label id="feedback">&nbsp;xx</label></td> </tr> </table> </body> </html> [/code] [code="java"]<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%> <!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=gb2312"> <title>Insert title here</title> </head> <body> <% String number_1 = request.getParameter("number_1"); String number_2 = request.getParameter("number_2"); int num_1 = 0, num_2 = 0; boolean status = true; if (number_1 != null) { try { num_1 = Integer.parseInt(number_1); } catch (Exception ex) { status = false; out.println("Error,乘数必须是整数."); } } if (number_2 != null) { try { num_2 = Integer.parseInt(number_2); } catch (Exception ex) { status = false; out.println("Error,被乘数必须是整数."); } } if (status) out.println(num_1*num_2); %> </body> </html>[/code]
js jsp 向servlet跳转过程中的request问题
当在html中使用<form enctype="multipart/form-data">时(使用fileupload上传文件),request.getParameter("name")得到的是null,为了避免这一问题,并且为了检验输入框是否为空,通过js向servlet提交。这样值可以传过去了,但是上传图片中解析request的值却为null 现在想要得到即可以检验输入是否为空,又可以得到传值并将图片保存起来的效果。顺便想请教一下 js跳转的servlet的request和action跳转到servlet的request有什么不同。 P.S:请您不要怀疑什么没有进到servlet等类似问题。如果您有更好的解决方案,非常感谢您的告知,我会在一段日子后研究,但现在我的主要问题是使用html、js、servlet这三种技术解决问题。 非常感谢! 代码如下 html: <%@ page contentType="text/html;charset=GBK" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="en"> <head> <title>新增商家</title> </head> <body> <style> body,td{font-size:12px;} </style> <script language=javascript> //验证填入值不为空 function checkEmpty(){ var name = document.getElementById("merchantName").value; var call = document.getElementById("merchantCall").value; var picture = document.getElementById("picture").value; var address = document.getElementById("merchantAdd").value; var validate = document.getElementById("validatetCall").value; if(name==""||call==""||picture==""||address==""||validate==""){ alert("请您填写所需要的信息"); } else{ // 跳转到AddMerchantServlet中 document.merchantForm.action = "/discountCoupon/AddMerchant?name="+name+"&call="+call+"&picture="+picture+"&address="+address+"&verifyCall="+validate ; document.merchantForm.submit(); } } </script> <form name="merchantForm" enctype="multipart/form-data" method="post" > <fieldset style="width: 600; height: 60;padding:2px;" > <table> <tr> <td> <font color="red">*</font> 商家名称: <input type="text" id="merchantName" width="280px" style="height:18px;width:300px" value="请您限制在10个字以内" /> </td> </tr> <tr> <td> <font color="red">*</font> 商家电话: <input type="text" id="merchantCall" maxlength="11" /> </td> </tr> <tr> <td> <font color="red">*</font> 商家海报: <input type="file" id="picture" /> <input type="reset" /> </td></tr> <tr> <td> <font color="red">*</font> 商家地址: <input type="text" id="merchantAdd" style="height:18px;width:300px" /> </td> </tr> <tr> <td> <font color="red">*</font> 验证手机: <input type="text" id="validatetCall" maxlength="11" />&nbsp &nbsp添加 </td> </tr> <tr> <td> <input type="submit" value="保存" name="save" onclick="checkEmpty();" /> </td> <td>&nbsp &nbsp </td> <td> <input type="button" value="取消" name="cancel" onclick="window.close();" /> </td> </tr> </table> </fieldset> </form> </body> </html> servlet package com.ygsoft.servlet; import java.io.BufferedInputStream; public class AddMerchant extends HttpServlet { private static final long serialVersionUID = 1L; File tmpDir = null; File saveDir = null; @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); //从addMerchant.jsp中取得数据 String name = request.getParameter("name"); //对得到的数据进行转码 byte [] bytes1 = name.getBytes("iso-8859-1"); String merchantName = new String(bytes1,"GBK"); String merchantCall = request.getParameter("call"); String merchantPicture = request.getParameter("picture"); //对得到的数据进行转码 byte [] bytes2 = merchantPicture.getBytes("iso-8859-1"); String picture = new String(bytes2,"GBK"); String address = request.getParameter("address"); //对得到的数据进行转码 byte [] bytes3 = address.getBytes("iso-8859-1"); String merchantAdd = new String(bytes3,"GBK"); String validateCall = request.getParameter("verifyCall"); //向数据库中存储数据 BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml"); MerchantDao dao = (MerchantDao) factory.getBean("merchantDao"); Merchant merchant = new Merchant(); MerchantAssistant merchantAssistant = new MerchantAssistant(); HashSet<MerchantAssistant> set = new HashSet<MerchantAssistant>(); merchantAssistant.setVerifyUserPhoneNum(validateCall); merchantAssistant.setActive(1); set.add(merchantAssistant); merchant.setMerchantName(merchantName); merchant.setMerchantAdd(merchantAdd); merchant.setMerchantPhoneNum(merchantCall); merchant.setMerchantPic(picture); merchantAssistant.setMerchant(merchant); merchant.setMerchantAssistantSet(set); dao.addMerchant(merchant); //跳转到商家管理页面 RequestDispatcher rd = request.getRequestDispatcher("/merchantManage"); rd.forward(request, response); } public AddMerchant() { super(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //对图片进行存储 try { if (ServletFileUpload.isMultipartContent(request)) { // 创建该对象 DiskFileItemFactory dff = new DiskFileItemFactory(); // 指定上传文件的临时目录 dff.setRepository(tmpDir); // 指定在内存中缓存数据大小,单位为byte dff.setSizeThreshold(1024000); // 创建该对象 ServletFileUpload sfu = new ServletFileUpload(dff); // 指定上传文件的最大尺寸 sfu.setFileSizeMax(5000000); // 指定依次上传多个文件的总尺寸 sfu.setSizeMax(10000000); // 解析request请求,并返回FileItemIterator集合 FileItemIterator fii = sfu.getItemIterator(request); // 解析request请求,并返回FileItemIterator while (fii.hasNext()) { // 从集合中获得一个文件流 FileItemStream fis = fii.next(); // 过滤表单中空文件域 if ((!fis.isFormField()) && fis.getName().length() > 0) { // 获得的上传文件的文件名 String fileName = fis.getName().substring( fis.getName().lastIndexOf("//") + 1); if (fis.getName().lastIndexOf("//") == -1) { fileName = fis.getName().substring( fis.getName().lastIndexOf("/") + 1); // 获得文件输入流 BufferedInputStream in = new BufferedInputStream( fis.openStream()); // 获得文件输出流 BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream(new File(saveDir, fileName))); // 开始把文件写到你指定的上传文件夹 Streams.copy(in, out, true); } } } } } catch (Exception e) { e.printStackTrace(); } } public void init() throws ServletException { super.init(); String tmpPath = "d://tempdir"; String savePath = "d://savedir"; tmpDir = new File(tmpPath); saveDir = new File(savePath); if (!tmpDir.isDirectory()) tmpDir.mkdir(); if (!saveDir.isDirectory()) saveDir.mkdir(); } }
tinyMCE的注释变成空格怎么解决
版本tinymce_3.3.9.4_jquery tinymce_3.3.9.4_jquery\tinymce\examples\index.html 在textarea 中的内容如果有<!--注释内容-->,则会解析成空行,有没有方法让注释不解析成空行,就跟html中一样什么都不显示 [code="java"]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Full featured example using jQuery plugin</title> <!-- Load jQuery --> <script type="text/javascript" src="jquery-1.4.2.min.js"></script> <!-- Load TinyMCE --> <script type="text/javascript" src="../jscripts/tiny_mce/jquery.tinymce.js"></script> <script type="text/javascript"> $().ready(function() { $('textarea.tinymce').tinymce({ // Location of TinyMCE script script_url : '../jscripts/tiny_mce/tiny_mce.js', // General options theme : "advanced", plugins : "autolink,lists,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,advlist", // Theme options theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect", theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor", theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen", theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak", theme_advanced_toolbar_location : "top", theme_advanced_toolbar_align : "left", theme_advanced_statusbar_location : "bottom", theme_advanced_resizing : true, // Example content CSS (should be your site CSS) content_css : "css/content.css", // Drop lists for link/image/media/template dialogs template_external_list_url : "lists/template_list.js", external_link_list_url : "lists/link_list.js", external_image_list_url : "lists/image_list.js", media_external_list_url : "lists/media_list.js", // Replace values for the template plugin template_replace_values : { username : "Some User", staffid : "991234" } }); }); </script> <!-- /TinyMCE --> </head> <body> <form method="post" action="http://tinymce.moxiecode.com/dump.php?example=true"> <div> <h3>Full featured example using jQuery plugin</h3> <p> This example shows how TinyMCE can be lazy loaded using jQuery. The jQuery plugin will also attach it's self to various jQuery methods to make it more easy to get/set editor contents etc. </p> <!-- Gets replaced with TinyMCE, remember HTML in a textarea should be encoded --> <div> <textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%" class="tinymce"> 案的发生的法是否啊发发发<br/><br/> 案的发生的法是否啊发发发<br/><br/><!--page--> 案的发生的法是否啊发发发<br/><br/> 案的发生的法是否啊发发发<br/><br/> 案的发生的法是否啊发发发<br/><br/> 案的发生的法是否啊发发发<br/><br/> </textarea> </div> <!-- Some integration calls --> <a href="javascript:;" onmousedown="$('#elm1').tinymce().show();">[Show]</a> <a href="javascript:;" onmousedown="$('#elm1').tinymce().hide();">[Hide]</a> <a href="javascript:;" onmousedown="$('#elm1').tinymce().execCommand('Bold');">[Bold]</a> <a href="javascript:;" onmousedown="alert($('#elm1').html());">[Get contents]</a> <a href="javascript:;" onmousedown="alert($('#elm1').tinymce().selection.getContent());">[Get selected HTML]</a> <a href="javascript:;" onmousedown="alert($('#elm1').tinymce().selection.getContent({format : 'text'}));">[Get selected text]</a> <a href="javascript:;" onmousedown="alert($('#elm1').tinymce().selection.getNode().nodeName);">[Get selected element]</a> <a href="javascript:;" onmousedown="$('#elm1').tinymce().execCommand('mceInsertContent',false,'<b>Hello world!!</b>');">[Insert HTML]</a> <a href="javascript:;" onmousedown="$('#elm1').tinymce().execCommand('mceReplaceContent',false,'<b>{$selection}</b>');">[Replace selection]</a> <br /> <input type="submit" name="save" value="Submit" /> <input type="reset" name="reset" value="Reset" /> </div> </form> <script type="text/javascript"> if (document.location.protocol == 'file:') { alert("The examples might not work properly on the local file system due to security settings in your browser. Please use a real webserver."); } </script> </body> </html> [/code] [img]http://dl.iteye.com/upload/attachment/480553/6d786ecf-1b03-3d0f-ae1f-742238ee6a17.jpg[/img]
Spring集成Hibernate,使用JPA注解方式,新增数据无法提交
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p>环境:</p> <p style="padding-left: 60px;">spring 3.1</p> <p style="padding-left: 60px;">hibernate 4.2.8 final </p> <p style="padding-left: 60px;">mysql 5.6</p> <p>问题描述:</p> <p style="padding-left: 30px;">调用controller的查询方法,可以正常返回数据</p> <p style="padding-left: 30px;">调用controller的创建方法,即:新增数据,控制台打印出了读取和修改序号表的sql,但是没有打印插入数据的sql,数据库表中也没有新增数据。</p> <p style="padding-left: 30px;">怀疑是spring控制的事务没有提交,但是排查了两三天,从网上找了各种方法,都没有解决问题。</p> <p style="padding-left: 30px;">请各位大侠拉小弟一把,实在是找不到事务为什么没有提交。</p> <p> </p> <p style="padding-left: 30px;">web.xml</p> <p style="padding-left: 30px;"> </p> <pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"&gt; &lt;!-- 欢迎界面 --&gt; &lt;welcome-file-list&gt; &lt;welcome-file&gt;index.html&lt;/welcome-file&gt; &lt;/welcome-file-list&gt; &lt;!-- spring框架 --&gt; &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;/listener&gt; &lt;!-- 上下文配置 --&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt; /WEB-INF/applicationContext.xml, /WEB-INF/config/**/*.xml &lt;/param-value&gt; &lt;/context-param&gt; &lt;!-- spring mvc --&gt; &lt;servlet&gt; &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;load-on-startup&gt;1&lt;/load-on-startup&gt; &lt;/servlet&gt; &lt;servlet-mapping&gt; &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt; &lt;!-- 拦截所有url --&gt; &lt;url-pattern&gt;/&lt;/url-pattern&gt; &lt;/servlet-mapping&gt; &lt;!-- 回话有效期30分钟 --&gt; &lt;session-config&gt; &lt;session-timeout&gt;30&lt;/session-timeout&gt; &lt;/session-config&gt; &lt;!-- log4j日志 --&gt; &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.util.Log4jConfigListener&lt;/listener-class&gt; &lt;/listener&gt; &lt;!-- log4j日志配置 --&gt; &lt;context-param&gt; &lt;param-name&gt;log4jConfigLocation&lt;/param-name&gt; &lt;param-value&gt;/WEB-INF/properties/log4j.properties&lt;/param-value&gt; &lt;/context-param&gt; &lt;/web-app&gt;</pre> <p> applicationContext.xml</p> <p> </p> <p style="padding-left: 30px;"> </p> <pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"&gt; &lt;!-- 注解配置 --&gt; &lt;context:annotation-config /&gt; &lt;!--允许使用注解方式配置事务 --&gt; &lt;tx:annotation-driven transaction-manager="transactionManager" /&gt; &lt;!-- 自动扫描的包名 --&gt; &lt;context:component-scan base-package="com.lxl" /&gt; &lt;!-- 对标注@PersistenceContext的类经行增强,引入代理后的EntityManager实例 --&gt; &lt;bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /&gt; &lt;!-- 对标注@Repository的类经行增强,将EntityManager异常转换为SpringDAO体系的异常 --&gt; &lt;bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /&gt; &lt;!-- 属性文件 --&gt; &lt;context:property-placeholder location="/WEB-INF/properties/**/*.properties" /&gt; &lt;!-- 数据源 --&gt; &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt; &lt;property name="driverClassName" value="${jdbc.driverClassName}" /&gt; &lt;property name="url" value="${jdbc.url}" /&gt; &lt;property name="username" value="${jdbc.username}" /&gt; &lt;property name="password" value="${jdbc.password}" /&gt; &lt;/bean&gt; &lt;!-- JPA 实体管理工厂 --&gt; &lt;bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt; &lt;property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" /&gt; &lt;property name="dataSource" ref="dataSource" /&gt; &lt;property name="persistenceUnitName" value="ServicePlatform" /&gt; &lt;property name="jpaVendorAdapter"&gt; &lt;bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"&gt; &lt;property name="showSql" value="true" /&gt; &lt;property name="generateDdl" value="true" /&gt; &lt;property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" /&gt; &lt;/bean&gt; &lt;/property&gt; &lt;/bean&gt; &lt;!-- JPA 事务管理 --&gt; &lt;bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"&gt; &lt;property name="dataSource" ref="dataSource" /&gt; &lt;property name="entityManagerFactory" ref="entityManagerFactory" /&gt; &lt;/bean&gt; &lt;/beans&gt;</pre> <p> dispatcher-servlet.xml</p> <p> </p> <p style="padding-left: 30px;"> </p> <pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"&gt; &lt;!-- 默认的注解映射的支持 --&gt; &lt;mvc:annotation-driven /&gt; &lt;!-- 自动扫描的包名 --&gt; &lt;context:component-scan base-package="com.lxl" /&gt; &lt;!-- 配置一下对json数据的转换 &lt;bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"&gt; &lt;property name="messageConverters"&gt; &lt;list&gt; &lt;bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"&gt;&lt;/bean&gt; &lt;/list&gt; &lt;/property&gt; &lt;/bean&gt; --&gt; &lt;!-- 视图解析器 --&gt; &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; &lt;property name="prefix" value="/view" /&gt; &lt;property name="suffix" value=".jsp" /&gt; &lt;/bean&gt; &lt;!-- 对静态资源文件的访问 方案一 (二选一) --&gt; &lt;mvc:default-servlet-handler /&gt; &lt;!-- 对静态资源文件的访问 方案二 (二选一) &lt;mvc:resources mapping="/images/**" location="/images/" cache-period="31556926"/&gt; &lt;mvc:resources mapping="/js/**" location="/js/" cache-period="31556926"/&gt; &lt;mvc:resources mapping="/css/**" location="/css/" cache-period="31556926"/&gt; --&gt; &lt;/beans&gt;</pre> <p> </p> <p> </p> <p style="padding-left: 30px;">persistence.xml</p> <p style="padding-left: 30px;"> </p> <pre name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"&gt; &lt;persistence-unit name="ServicePlatform" transaction-type="RESOURCE_LOCAL"&gt; &lt;/persistence-unit&gt; &lt;/persistence&gt; </pre> <p> </p> <p> </p> <p style="padding-left: 30px;">实体bean</p> <p style="padding-left: 30px;"> </p> <pre name="code" class="java">package com.lxl.bsp.identity.entity; import java.io.Serializable; import java.sql.Timestamp; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "bd_id") public class Identity implements Serializable { private static final long serialVersionUID = -8763611811485844772L; @Id @GeneratedValue(strategy = GenerationType.TABLE) private Long id; @Column(length = 100) private String code; private Long value; @Column(length = 10) private String prefix; @Column(length = 10) private String suffix; @Column(length = 255) private String description; private Integer length; @Column(length = 30) private String creator; @Column(name = "create_date") private Timestamp createDate; @Column(length = 30) private String modifier; @Column(name = "modify_Date") private Timestamp modifyDate; private Boolean dr; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public Long getValue() { return value; } public void setValue(Long value) { this.value = value; } public String getPrefix() { return prefix; } public void setPrefix(String prefix) { this.prefix = prefix; } public String getSuffix() { return suffix; } public void setSuffix(String suffix) { this.suffix = suffix; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public Integer getLength() { return length; } public void setLength(Integer length) { this.length = length; } public String getCreator() { return creator; } public void setCreator(String creator) { this.creator = creator; } public Timestamp getCreateDate() { return createDate; } public void setCreateDate(Timestamp createDate) { this.createDate = createDate; } public String getModifier() { return modifier; } public void setModifier(String modifier) { this.modifier = modifier; } public Timestamp getModifyDate() { return modifyDate; } public void setModifyDate(Timestamp modifyDate) { this.modifyDate = modifyDate; } public Boolean getDr() { return dr; } public void setDr(Boolean dr) { this.dr = dr; } @Override public String toString() { return "Identity [id=" + id + ", code=" + code + ", value=" + value + ", prefix=" + prefix + ", suffix=" + suffix + ", description=" + description + ", length=" + length + ", creator=" + creator + ", createDate=" + createDate + ", modifier=" + modifier + ", modifyDate=" + modifyDate + ", dr=" + dr + "]"; } } </pre> <p> </p> <p> </p> <p style="padding-left: 30px;">IdentityDaoImpl.java</p> <p style="padding-left: 30px;"> </p> <pre name="code" class="java">package com.lxl.bsp.identity.dao; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.lxl.bsp.api.exception.ServicePlatformException; import com.lxl.bsp.identity.entity.Identity; @Repository public class IdentityDaoImpl implements IIdentityDao { @PersistenceContext private EntityManager em; @Transactional(propagation = Propagation.REQUIRED) public Identity create(Identity data) { em.persist(data); return data; } @Override public Identity retriver(String id) throws ServicePlatformException { Long pk = Long.valueOf(id); return em.find(Identity.class, pk); } @Override public Identity update(Identity data) throws ServicePlatformException { em.persist(data); return data; } @Override public void delete(String id) throws ServicePlatformException { em.remove(retriver(id)); } } </pre> <p> IdentityController.java</p> <p> </p> <p style="padding-left: 30px;"> </p> <pre name="code" class="java">package com.lxl.bsp.identity.controller; import java.sql.Timestamp; import java.util.Calendar; import javax.annotation.Resource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.lxl.bsp.api.exception.ServicePlatformException; import com.lxl.bsp.identity.dao.IIdentityDao; import com.lxl.bsp.identity.entity.Identity; @Controller @RequestMapping("identity") public class IdentityController { private static Log log = LogFactory.getLog(IdentityController.class); @Resource private IIdentityDao dao; @RequestMapping("retriver") @ResponseBody public Identity retriver(@RequestParam String id) throws ServicePlatformException { return dao.retriver(id); } @RequestMapping("create") @ResponseBody public Identity create() throws ServicePlatformException { int i = 1; Identity data = new Identity(); data.setCode("code" + i); Calendar c = Calendar.getInstance(); data.setCreateDate(new Timestamp(c.getTime().getTime())); data.setCreator("creator" + i); data.setDescription("description" + i); data.setDr(false); // data.setId("id" + Integer.toString(i)); data.setLength(30); data.setModifier("modifier" + i); data.setModifyDate(new Timestamp(c.getTime().getTime())); data.setPrefix("prefix"); data.setSuffix("suffix"); data.setValue(0L); Identity returnData = dao.create(data); log.debug(returnData); return returnData; } @RequestMapping("update") @ResponseBody public Identity update() throws ServicePlatformException { int i = 1; Identity data = new Identity(); data.setCode("1"); Calendar c = Calendar.getInstance(); data.setCreateDate(new Timestamp(c.getTime().getTime())); data.setCreator("creator" + i); data.setDescription("description" + i); data.setDr(false); // data.setId("id" + Integer.toString(i)); data.setLength(30); data.setModifier("modifier" + i); data.setModifyDate(new Timestamp(c.getTime().getTime())); data.setPrefix("prefix"); data.setSuffix("suffix"); data.setValue(0L); Identity returnData = dao.update(data); log.debug(returnData); return returnData; } @RequestMapping("delete") public void delete(@RequestParam String id) throws ServicePlatformException { dao.delete(id); } } </pre> <p> </p> <p> </p> <p style="padding-left: 30px;">数据表结构DDL</p> <p style="padding-left: 30px;"> </p> <pre name="code" class="sql">-- ---------------------------- -- Table structure for bd_id -- ---------------------------- DROP TABLE IF EXISTS `bd_id`; CREATE TABLE `bd_id` ( `id` bigint(30) NOT NULL, `code` varchar(100) DEFAULT NULL, `create_date` datetime DEFAULT NULL, `creator` varchar(30) DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `dr` tinyint(1) DEFAULT NULL, `length` int(11) DEFAULT NULL, `modifier` varchar(30) DEFAULT NULL, `modify_Date` datetime DEFAULT NULL, `prefix` varchar(10) DEFAULT NULL, `suffix` varchar(10) DEFAULT NULL, `value` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;</pre> <p> </p> <p> </p> <p style="padding-left: 30px;">附件中是项目压缩包,只要电脑上安装了数据库,解压即可运行,数据库名称是osd</p> <p> </p> </div>
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
【JSON解析】浅谈JSONObject的使用
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
立即提问