在jsp代码里调用java程序。

我在jsp代码里写了一个按钮,点击打开的是本地的PPT文件,另一个按钮是上传,把文件上传至Tomcat服务器上,并在服务器里解析PPT成图片。把PPT解析成图片已经写好了,怎么在上传按钮里加入解析PPT的代码或者点击上传,PPT文件是上传至服务器里,服务器里再解析PPT成图片,放到指定的文件夹下呢,有大佬回答一下么,越详细越好。跪求大佬回答。

2个回答

你这个相当于两个问题,一个是点击按钮去调用服务器上解析PPT的服务,这个就看你项目里解析PPT成为图片的服务的接口地址是什么,比如你写了一个servlet或是springMVC的controller,jsp点击按钮跳转的路径配置上你写的解析PPT的服务的接口地址:你的域名/项目根路径/具体的服务(servlet或controller)。另一个问题是把解析成的图片放在指定文件夹,这个也很好解决啊,最基本的方法是将图片解析成流然后写入自己配的一个指定文件夹就可以了,你可以查下输入输出流怎么用。

根据不同问题针对性讨论!!!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何在jsp中运行java应用程序?
我现在有个Game的包,里面有GameFrame.java,和Life.java,其中GameFrame中有main()函数,Game这个包是可以用java application 单独运行的 。 那如果我现在想在jsp设计出的这个网页中,点击开始游戏这个按钮,运行出这个GameFrame.java,出现我那个游戏的GUI界面,那应该怎么写代码呢? 下面是我用servlet调用的,但是好像不对。 ![图片说明](https://img-ask.csdn.net/upload/201903/01/1551430968_50028.png) servelet中是这样调用吗?为什么我修改了但是还是显示我之前doPost()中写的输出的那句话如下。 ![图片说明](https://img-ask.csdn.net/upload/201903/01/1551431080_985612.png)
Java Web该如何调用C++代码
java web入门选手,最近用MVC结构搭了一个java web的框架,jsp+servlet+javabeans,对于javabeans部分,想在处理数据时调用C++写成的算法,之前试着用JNI,但貌似这个对于java本地项目调用C++程序很好用,原封不动应用在javabeans上面就不太行,一直是java.lang.NoClassDefFoundError: Could not initialize class,偶尔报java.lang.UnsatisfiedLinkError,于是我想是不是JNI不太适用于java web项目,请大神指个方向,对于我这个情况,该用什么技术去连接javabeans和c++程序
JAVA程序URL屏蔽及重定向
在用JAVA做一个非法URL屏蔽系统。想在JAVA程序中实现类似JSP页面中response.sendredirect("");功能。即假设浏览器打开网页http://bbs.tianya.cn/,自动将该网页跳转为http://www.baidu.com/ 该怎么实现? 或者,如何用JAVA实现拦截特定URL网页的功能? 补充: 目前我已经可以用JAVA实现监控数据流,实时读取正在访问网页的URL并存入数据库了。 想问下如何实现屏蔽特定URL呢?怎样在已读取该网页URL的基础上,使该网页无法显示,或者使该网页自动重定向另一个网址? 我看了一些资料,大部分是VC++环境下基于BHO的实现,可是C++的代码我实在读不懂。。 而且目前我已经进展到最后一步了,实在不想换成C++从头再来。 如果必须用C++的话,有什么封装好的,适合JAVA调用的代码可以参考呢?
jsp页面调用JavaBean(DOS界面编译类)
首先说明:我的配置的根目录文件在D:\jsp文件文件夹。 我使用的工作环境及工具:Dreamweaver8+tomcat6.0+jdk6.0 我做得项目,就是简单测试:JSP页面调用JavaBean,手动编译的文件是:DBConnAccess.java (备注:其存放路径是:D:\jsp\WEB-INF\classes\mybean文件夹下) DBConnAccess.java里的代码如下: package conn; //导入包 import java.sql.*; //导入数据库操作的类 public class DBConnAccess //构造方法,初始化 { private Connection conn; //连接对象 private Statement stmt; //语句对象 private ResultSet rs; //结果集对象 private String accessdriver; //保存Access驱动程序字符串 private String accessURL; //保存Access连接字符串 public DBConnAccess() { accessdriver="sun.jdbc.odbc.JdbcOdbcDriver"; //Access驱动程序 accessURL="jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="; conn=null; //连接字符串 } //该方法从参数得到数据库路径,并加到连接字符串后面,然后再建立连接 public Connection getConnToAccess(String dbpath) { try{ accessURL=accessURL+dbpath; Class.forName(accessdriver); conn=DriverManager.getConnection(accessURL); }catch(Exception e){ System.out.println("操作数据库出错,请仔细检查"); System.err.println(e.getMessage()); } return conn; } //关闭数据库连接 public void close() { try{ //rs.close(); //stmt.close(); conn.close(); } catch(SQLException sqlexception) { sqlexception.printStackTrace(); } } } 运行JSP页面代码如下: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <!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=gb2312" /> <title>无标题文档</title> <jsp:usebean id="DBConn" scope="page" class="conn.DBConnAccess"/> </head> <body> <% //连接Access 数据库 String path="\\test.mdb"; //数据库的路径,请自行修改 String dbpath=application.getRealPath(path); Connection conn=DBConn.getConnToAccess(dbpath); Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); String sql="select * from dt"; //String sql1="insert into username (uid,pwd) values('wsp','wsp')"; //stmt.executeUpdate(sql1); ResultSet rs=stmt.executeQuery(sql); while(rs.next()){ out.print("用户名:"); out.print(rs.getString("uid")+" 密码:"); out.println(rs.getString("pwd")+"<br>"); } DBConn.close(); %> </body> </html> 运行后得到的结果“HTTP Status 500 - org.apache.jasper.JasperException: Unable to load class for JSP”
同一工程Debug as java application和Debug on server运行差异
运行一个简单的二维码扫描并显示小程序。 Debug as java application运行正常,弹出摄像头扫描实时显示窗口。 Debug on server 就不行,没有显示。注意是同一个工程。我为了让程序可以按照java application 运行加了一个main方法类index1.java。在web的jsp里也有调用同一方法的地方。但是web运行就不能调用摄像头。 下面是运行main方法正常的状态,我们看到可以在窗口的摄像头图像中看到我自己: ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501657898_875829.png) ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501657910_517075.png) ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501657918_253389.png) 下面是同一工程Debug on server运行结果,摄像头图像没有显示: ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501657938_552902.png) ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501657957_994380.png) ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501657965_324320.png) index1.java和index.jsp本质上都是调用human的getee()方法. 没有参数进入,没有返回参数. ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501658019_737464.png) ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501658026_205896.png) ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501658034_797248.png) 下面是调用摄像头的部分,我原来使用蓝色代码,无外乎就是跳出摄像头选择菜单,结果是一样的,bug一样. ![图片说明](https://img-ask.csdn.net/upload/201708/02/1501658049_569105.png) TOMCAT 6.0里面的lib文件夹,我都手动复制了相应的jar文件。 请问各位大神为什么run in java apllication 和 run in server 结果会不一样?
jsp中 <jsp:include> 中使用绝对路径的问题
这里我主要是在讲自己在解决这个问题过程中对具体问题的理解,有可能前后矛盾,因为我是把我的认识过程顺序的说出来,想让大家帮忙指出不对的地方。 因为问题解决了,可是道理认识歪了,后患无穷啊。特别是对我这个非科班出身的2手程序员。 PS:不知道怎么在入门讨论中发普通的帖子。提示我没积分了,那就发个提问帖,本来这贴目的其实也是在“提问” ------------------------------------------------------------------------------------------------ 从一个需求说起(自己之前对WEB项目中的相对路径和绝对路径有一些了解) 需求是这样的,要在JSP中应用<jsp:include>标签引入一个公用的页面 [quote]<jsp:include page="../templates/header.jsp"></jsp:include>[/quote] 就是写类似上面的一段语句。 不过这段代码的要求是要在本项目中任意一个JSP文件中都管用的, 说白了就是在项目现有的任意一个页面中加入相同的这样一段代码,都能达到引入某个固定页面的效果。 所以这里不能用相对路径。原因我自己总结了两条: 1,没办法保证对页面的访问方式,是直接访问还是通过其它请求跳转访问,访问的URL不确定,相对路径达不到要求。 2,项目中的页面本身目录结构不可能都正好在一个文件夹中。 所以自然想到用绝对路径,所以开始我是这样写的 [quote] <jsp:include page="<%=request.getContextPath()%>/templates/header.jsp"></jsp:include> [/quote] 这么写,当时没多想,就是直接仿照引入其它图片CSS什么的写的。比如 [code="java"]<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/xx.css"/>[/code] 页面报错,之后想想,TOMCAT(我用的是TOMCAT)解析JSP时,对<jsp:include>的解析有别于其它。 [code="java"] <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/xx.css"/> 只是按照基本规则简单的解析为几个输出语句: out.write("<link rel=\"stylesheet\" type=\"text/css\" href=\""); out.print(request.getContextPath()); out.write("/css/xx.css\"/>\r\n"); [/code] 而对<jsp:include>的解析却要特殊一些,它没有直接输出字符串的语句,而是这样的: [quote] <jsp:include page="../templates/header.jsp"></jsp:include> 被解析为: org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "../templates/header.jsp", out, false); [/quote] 自己简单总结了下,JSP中对<jsp:include>标签的解析就是直接生成上面那样一条语句,而page属性的值直接作为方法的参数,也因为这个,所以page的值不能这样写page="<%=request.getContextPath()%>/templates/header.jsp"。之所以不能这样写(自己认为)也没什么道理需要讲,说白了就是JSP没这样的语法。 也就是说对于<jsp:include>标签的page属性的值,只能是一个写死的字符串。否则在JSP级别上就会有语法错误,结果是容器连对应的JAVA文件都没办法生成,更不要说真正用到的CLASS文件了。 综上,所以页面会报错。 那么这里怎么用绝对路径呢?或者说 org.apache.jasper.runtime.JspRuntimeLibrary.include方法是怎么用的? GOOGLE了下 也没找到什么对自己有用的(自己看得懂的)东西。 又尝试了其它几种形式 [code="java"]<jsp:include page="/项目名/templates/header.jsp"></jsp:include> 解析为 org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "/项目名/templates/header.jsp", out, false);[/code] [code="java"]<jsp:include page="http://localhost:8080/项目名/templates/header.jsp"></jsp:include> 解析为 org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "http://localhost:8080/项目名/templates/header.jsp", out, false);[/code] 以上2种尝试,对于标签的解析结果符合之前我的结论,JSP顺利的生成了最后的CLASS文件。 可是访问时继续报错。 "/项目名/templates/header.jsp”“http://localhost:8080/项目名/templates/header.jsp” 这两种路径就是WEB项目中绝对路径的用法。 而连生成的JAVA文件中,方法的参数也都已经成功把这2个参数带入了,可是仍报错。 显然org.apache.jasper.runtime.JspRuntimeLibrary.include方法对路径的解析与IE不同。 人多力量大,请经理来看看,在报错信息中发现了问题。 之前2中用法: <jsp:include page=" [color=red]/项目名/templates/header.jsp[/color]"></jsp:include> 报的错为 org.apache.jasper.JasperException: javax.servlet.ServletException: File &quot; [color=red]/项目名/templates/header.jsp[/color]&quot; not found 提示找不到的页面就是参数给出的页面"/项目名/templates/header.jsp" 这个去掉开头的“/”后面的路径应该绝对没问题,除非这个“/”不代表服务器的根目录(服务器地址) 下面 <jsp:include page=" [color=green]http://localhost:8080/项目名/templates/header.jsp[/color]"> 报的错为 org.apache.jasper.JasperException: javax.servlet.ServletException: File &quot; [color=green]/templates/http:/localhost:8080/项目名/templates/header.jsp[/color]&quot; not found 提示找不到的页面比参数在前面多出了一段 /templates/ 就是说这里并没有因为参数以“http://”开头而给予"特殊待遇",只是把它当成了一段普通的字符串,同时因为不是以“/”开头的而被当成了相对路径处理,并在前面补充上了"/templates/" 那个如果是这样,这个 "/templates/"就应该是自身所在的位置,而按此推理,这个“/”代表了??? 又实验了下 <jsp:include page=" [color=red]../templates/一个不存在的页面[/color]"></jsp:include> 报错为 org.apache.jasper.JasperException: javax.servlet.ServletException: File &quot; [color=red]/templates/一个不存在的页面[/color]&quot; not found [size=x-small][color=orange]结论[/color][/size] 观察了下,想了想,知道了,原来我饶了一个大圈,问题其实很简单: 总结了下,JSP中<jsp:include>标签的应用: 1,不支持<%= %>等动态的语法,特别是page属性的值,只能是一个写死的字符串(刚听说,其实也有自己本身的一些特殊语法,以后再学) 2,对于引入页面的路径问题,也可以常用"绝对路径"和"相对路径"两种应用方式。 绝对路径就是以“/”开头的路径,其它的包括以“http://”开头的都是相对路径,可应用“./”“../”等 相对路径 没什么好说的。强调一点,这里的相对路径也是相对于访问页面的URL的路径,本质上与页面文件在项目中的存储位置没直接关系,所以这里用相对路径时也存在由于访问URL不确定带来的问题(是不是这样呢?如文章开头说的,这里都是我自己的结论)。 主要是绝对路径的问题: 我们知道大部分情况下写在页面(不管静态还是动态)里并输出到IE中的路径都是由IE来解析的,以“/”开头的绝对路径 这个“/”代表的是服务器的根目录:比如访问URL为 http://localhost:8080/项目名/templates/template.jsp 那么“/”代表的就是 "http://localhost:8080/" 而并不带有项目名信息。 而<jsp:include>引入页面的过程,是在服务器运行向IE输出数据的过程中由JAVA程序调用执行,路径也当然由JAVA程序来解析,此时以"/"开头的绝对路径中的“/” 代表的已经是本项目的根目录了。 比如 URL为 http://localhost:8080/项目名/templates/template.jsp 那么“/”代表的就是 "http://localhost:8080/项目名/"。已经带有了项目名信息。 同时,也不用像引入JS CSS文件那样在路径前加上 <%=request.getContextPath()%> 来解决项目名本身修改的问题了。只需一个“/”就什么也不用管了。 如上所述: 需求需要的这段代码其实很简单 [quote]<jsp:include page="/templates/header.jsp"></jsp:include> [/quote] 需要被任意位置的页面引入的页面 存放在项目根目录下的templates目录下 [b]问题补充:[/b] 多谢,特别是1楼说的第一点(1.jsp:include支持<%=%>语句。),使自己有动力学一学 jsp:include 中 <%=%>到底怎么用 做了个测试: 测试1: [code="java"] <% String pageURL = "header.jsp"; %><%=pageURL%><jsp:include page= [color=red]"/templates/<%=pageURL%>" [/color]></jsp:include> 被解析成了这样一段JAVA代码 String pageURL = "header.jsp"; out.print(pageURL); org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, [color=red]"/templates/<%=pageURL%>" [/color], out, false); [/code] 这个跟我之前说的一样, page="/templates/<%=pageURL%>" 引号中的值被当成了一个字符串作为对应方法的参数,而没有对 <%=%>有什么特殊的处理。 测试2: [code="java"] <% String pageURL = "/templates/header.jsp"; %><%=pageURL%><jsp:include page= [color=red]"<%=pageURL%>" [/color]></jsp:include> 解析结果 String pageURL = "/templates/header.jsp"; out.print(pageURL); org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, [color=red]pageURL[/color], out, false);[/code] 哈哈,这次 解析的时候 成功的将 page="<%=pageURL%>" 中的pageURL当成一个变量作为对应方法的参数了 我得到的结论就是: 首先就是一楼朋友说的, 在<jsp:include>中是支持<%=%>的。 具体的语法就是,在给page属性赋值的时候,如果想应用<%=%>。那么一定不要另外添加其它字符,这样就会将<%=%>中的变量成功解析为对应方法的参数。 否则会将引号中的内容当成一个死的字符串作为参数。
网页第一次调用摄像头可以,同一个方法第二次就不行。可能和civil有关
一个简单的摄像头程序。用web输入触发调用。第一次输入调用可以正常显示摄像头内容。第二次同一个网页地方输入后,只是弹出摄像头显示窗口,并没有摄像头内容。 下面根据操作时间顺序依次列出各个运行截图: 第一次网页运行 ![第一次网页运行](https://img-ask.csdn.net/upload/201708/06/1501981547_948222.png) 提示框随便输入点,触发引导摄像头。 ![提示框随便输入点,触发引导摄像头](https://img-ask.csdn.net/upload/201708/06/1501981566_927621.png) 代码先执行index.jsp,下面的红圈是方法入口 ![代码先执行index.jsp,下面的红圈是方法入口](https://img-ask.csdn.net/upload/201708/06/1501981605_795006.png) 进入human的getee方法调用Ctest ![图片说明](https://img-ask.csdn.net/upload/201708/06/1501981694_338445.png) Ctest里面开始内容,红框内容是调用摄像头语句 ![Ctest里面开始内容,红框内容是调用摄像头语句](https://img-ask.csdn.net/upload/201708/06/1501981745_178981.png) 继续执行看到我自己,并且贴近后会扫描到我手中的二维码图片内容,并解读出内容。 ![继续执行看到我自己,并且贴近后会扫描到我手中的二维码图片内容,并解读出内容](https://img-ask.csdn.net/upload/201708/06/1501981764_811837.png) 再次(注意是第二次!!!!!!) 我随便网页里输入个 test2222,摄像头窗口就空空如野了 ![再次(注意是第二次!!!!!!) 我随便网页里输入个 test2222,摄像头窗口就空空如野了](https://img-ask.csdn.net/upload/201708/06/1501981784_58805.png) 下面是报错信息 ![报错信息](https://img-ask.csdn.net/upload/201708/06/1501981810_811012.png) 网上搜了都是英文结果,无奈啊 ![图片说明](https://img-ask.csdn.net/upload/201708/06/1501981958_383043.png) com.google.zxing.NotFoundException 扫描不到... com.google.zxing.NotFoundException 扫描不到... com.google.zxing.NotFoundException 二维码解析结果:The fish is meat. inputTEXTishere!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(The fish is meat. )1 [[[[((((test2222))))]]]]DSCaptureException::FailWithException: hr=0x800705aa. 八月 05, 2017 4:11:35 下午 net.sf.fmj.media.protocol.civil.DataSource start 警告: com.lti.civil.CaptureException: pMediaControl->Run() failed: 0 com.lti.civil.CaptureException: pMediaControl->Run() failed: 0 at com.lti.civil.impl.jni.NativeCaptureStream.nativeStart(Native Method) at com.lti.civil.impl.jni.NativeCaptureStream.start(NativeCaptureStream.java:52) at net.sf.fmj.media.protocol.civil.DataSource.start(DataSource.java:213) at net.sf.fmj.ejmf.toolkit.media.AbstractPlayer.doRealize(AbstractPlayer.java:814) at net.sf.fmj.ejmf.toolkit.media.AbstractController.synchronousRealize(AbstractController.java:1149) at net.sf.fmj.ejmf.toolkit.media.AbstractController$1.run(AbstractController.java:488) 扫描不到... com.google.zxing.NotFoundException 扫描不到... com.google.zxing.NotFoundException 扫描不到... 下面是关键区域,调用摄像头的代码截图: 红色的是跳出选择摄像头的代码,如果把红色的代码禁用,启用蓝色代码则不弹出摄像头选择框。对于这个bug没啥影响应该。 ![图片说明](https://img-ask.csdn.net/upload/201708/06/1501981937_365012.png) 求问为啥第二次调用不成功呢?
JNI 调用GetMethodID 获得System.out.println()方法的jmethodid时出错的问题。
症状如下: 作为练习,为了在C代码中调用java的System.out.println()方法,我写了如下代码。 java代码片段如下: [size=xx-small] public class JNI_JAVA { public static native void println(String str); // 在C代码里打算调用System.out.println()。 public static void main(String[] args) { JNI_JAVA.println("Lady Gaga"); } } [/size] 生成如下头文件 JNI_JAVA.h 的片段: [size=xx-small] /* * Class: JNI_JAVA * Method: println * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_JNI_1JAVA_println (JNIEnv *, jclass, jstring); [/size] 以下是我自己写的C代码 JNI_JAVA.C的片段: [size=xx-small] /* * Class: JNI_JAVA * Method: println * Signature: (Ljava/lang/String;)V */ JNIEXPORT void JNICALL Java_JNI_1JAVA_println (JNIEnv *env, jclass clz, jstring str) { //获取java.lang.system类 jclass cls_system = (**env).FindClass(env, "java/lang/System"); if (NULL == cls_system) { fprintf(stderr, "Error %s:%d\n", __FILE__, __LINE__); return; } //获取System.out的FID jfieldID fid_out = (**env).GetStaticFieldID(env, cls_system, "out", "Ljava/io/PrintStream;"); if (NULL == fid_out) { fprintf(stderr, "Error %s:%d\n", __FILE__, __LINE__); return; } fprintf(stderr, "alive1\n");//正常输出 //获取System.out的对象 jobject obj_out = (**env).GetStaticObjectField(env, cls_system, fid_out); if (NULL == obj_out) { fprintf(stderr, "Error %s:%d\n", __FILE__, __LINE__); return; } fprintf(stderr, "alive2\n");//正常输出 //[color=red]百分百死在下面这一句[/color] //获取System.out.println()的MID jmethodID mid_println = (**env).GetMethodID(env, obj_out, "println", "(Ljava/lang/String;)V"); fprintf(stderr, "alive3\n");//这句不会输出,下面也不会执行 if (NULL == mid_println) { fprintf(stderr, "Error %s:%d\n", __FILE__, __LINE__); return; } (**env).CallVoidMethod(env, obj_out, mid_println, str); fprintf(stderr, "Yeah\n"); } [/size] 执行到 jmethodID mid_println = (**env).GetMethodID(env, obj_out, "println", "(Ljava/lang/String;)V"); 这一句时程序会死掉,同时给出以下输出: //下面的alive1,alive2是我故意输出的 [size=xx-small]alive1 alive2 # # An unexpected error has been detected by HotSpot Virtual Machine: # # SIGSEGV (0xb) at pc=0x00000000, pid=11192, tid=3076175552 # # Java VM: Java HotSpot(TM) Client VM (1.5.0_19-b02 mixed mode, sharing) # Problematic frame: # C 0x00000000 # # An error report file with more information is saved as hs_err_pid11192.log # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # [/size] [b]问题: 我调用 jmethodID mid_println = (**env).GetMethodID(env, obj_out, "println", "(Ljava/lang/String;)V"); 为啥会死?? 是不是违反了什么安全限制,所以才使得程序死掉?[/b]
(Java WEB)http-404,新手卡着好几天了。
最近改写别人的Java Web项目练习,遇到这个问题卡着两三天了。 ![图片说明](https://img-ask.csdn.net/upload/201705/10/1494384669_341338.png) 以下是JSP代码 ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>left</title> <base target="body"/> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript" src="<c:url value='/jquery/jquery-1.5.1.js'/>"></script> <script type="text/javascript" src="<c:url value='/menu/mymenu.js'/>"></script> <link rel="stylesheet" href="<c:url value='/menu/mymenu.css'/>" type="text/css" media="all"> <link rel="stylesheet" type="text/css" href="<c:url value='/jsps/css/left.css'/>"> <script language="javascript"> /* * 1. 对象名必须与第一个参数相同! 2. 第二个参数是显示在菜单上的大标题 */ var bar = new Q6MenuBar("bar", "仙林大学城网上书城"); $(function() { bar.colorStyle = 4;//指定配色样式,一共0,1,2,3,4 bar.config.imgDir = "<c:url value='/menu/img/'/>";//小工具所需图片的路径 bar.config.radioButton=true;//是否排斥,多个一级分类是否排斥 /* 1. 程序设计:一级分类名称 2. Java Javascript:二级分类名称 3. /goods/jsps/book/list.jsp:点击二级分类后链接到的URL 4. body:链接的内容在哪个框架页中显示 */ <c:forEach items="${parents}" var="parent"> <c:forEach items="${parent.children}" var="child"> bar.add("${parent.cname}", "${child.cname}", "/goods/BookServlet?method=findByCategory&cid=${child.cid}", "body"); </c:forEach> </c:forEach> $("#menu").html(bar.toString()); }); </script> </head> <body> <div id="menu"></div> </body> </html> ``` 以下servlet代码 ``` package cn.itcast.goods.book.web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.itcast.commons.CommonUtils; import cn.itcast.goods.book.domain.Book; import cn.itcast.goods.book.service.BookService; import cn.itcast.goods.pager.PageBean; import cn.itcast.servlet.BaseServlet; public class BookServlet extends BaseServlet { private BookService bookService = new BookService(); /** * 获取当前页码 * * @param req * @return */ private int getPc(HttpServletRequest req) { int pc = 1; String param = req.getParameter("pc"); if (param != null && !param.trim().isEmpty()) { try { pc = Integer.parseInt(param); } catch (RuntimeException e) { } } return pc; } /** * 截取url,页面中的分页导航中需要使用它做为超链接的目标! * * @param req * @return */ /* * http://localhost:8080/goods/BookServlet?methed=findByCategory&cid=xxx&pc=3 * /goods/BookServlet + methed=findByCategory&cid=xxx&pc=3 */ private String getUrl(HttpServletRequest req) { String url = req.getRequestURI() + "?" + req.getQueryString(); /* * 如果url中存在pc参数,截取掉,如果不存在那就不用截取。 */ int index = url.lastIndexOf("&pc="); if (index != -1) { url = url.substring(0, index); } return url; } /** * 按bid查询 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String load(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String bid = req.getParameter("bid");//获取链接的参数bid Book book = bookService.load(bid);//通过bid得到book对象 req.setAttribute("book", book);//保存到req中 return "f:/jsps/book/desc.jsp";//转发到desc.jsp } /** * 按分类查 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByCategory(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ String cid = req.getParameter("cid"); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ PageBean<Book> pb = bookService.findByCategory(cid, pc); /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } /** * 按作者查 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByAuthor(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ String author = req.getParameter("author"); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ PageBean<Book> pb = bookService.findByAuthor(author, pc); /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } /** * 按出版社查询 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByPress(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ String press = req.getParameter("press"); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ PageBean<Book> pb = bookService.findByPress(press, pc); /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } /** * 按图名查 * * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByBname(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ String bname = req.getParameter("bname"); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ PageBean<Book> pb = bookService.findByBname(bname, pc); /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } /** * 多条件组合查询 * @param req * @param resp * @return * @throws ServletException * @throws IOException */ public String findByCombination(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { /* * 1. 得到pc:如果页面传递,使用页面的,如果没传,pc=1 */ int pc = getPc(req); /* * 2. 得到url:... */ String url = getUrl(req); /* * 3. 获取查询条件,本方法就是cid,即分类的id */ Book criteria = CommonUtils.toBean(req.getParameterMap(), Book.class); PageBean<Book> pb = bookService.findByCombination(criteria, pc); /* * 4. 使用pc和cid调用service#findByCategory得到PageBean */ /* * 5. 给PageBean设置url,保存PageBean,转发到/jsps/book/list.jsp */ pb.setUrl(url); req.setAttribute("pb", pb); return "f:/jsps/book/list.jsp"; } } ``` 以下是web.xml相关配置 ``` <servlet> <servlet-name>BookServlet</servlet-name> <servlet-class>cn.itcast.goods.book.web.servlet.BookServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>BookServlet</servlet-name> <url-pattern>/BookServlet</url-pattern> </servlet-mapping> ``` 相关文件位置 ![图片说明](https://img-ask.csdn.net/upload/201705/10/1494385059_583764.png)
为什么我编辑过的jsp放到服务器上总是报错?有没有思路?
先解释一下开发部署的过程: 下任务后,在本地编写程序,程序是java+jsp的结合,开发环境是winxp+tomcat。 有一个开发服务器,一个应用服务器。2台不同的linux服务器(weblogic),环境是系统服务部搭设的,环境都是一样的。 但是开发服务器上的程序可以由我们开发人员主动上线,可以自己删改增加里面的程序, 而应用服务器是客户直接使用的服务器,上线只能向系统服务部申请,让他们代为上线。这是前提。 这次一个程序开发,关于excel文件上传并将数据存储到数据库的动作,也只是一个更新了,我更改了一点点,然后上线到开发服务器上,能够正常运行,然后向系统服务部申请上线,将上线文件上线到指定目录等待。 在开发服务器上能够正常运行,在运行环境下却报错了。 根据错误信息,好像是说我某个方法出错了,但是这个方法确实是没有出错,我在开发环境下上传的文件是同一个文件,处理的程序也是同一个程序。 这里我将运行环境下报错信息粘贴一下: [code="java"] /bea/user_projects/domains/sasdomain/./SASManagedServer/.wlnotdelete/extract/SASManagedServer_frame_frame/jsp_servlet/_jsp/_mart_ny/__ny_md_033_2.java:133: cannot resolve symbol probably occurred due to an error in /jsp/mart_ny/ny_md_033_2.jsp line 11: String tmp = tntde.fromExceltoSql_1(filename); -------------------------------------------------------------------------------- Full compiler error(s): /bea/user_projects/domains/sasdomain/./SASManagedServer/.wlnotdelete/extract/SASManagedServer_frame_frame/jsp_servlet/_jsp/_mart_ny/__ny_md_033_2.java:133: cannot resolve symbol symbol : method fromExceltoSql_1 (java.lang.String) location: class com.baosight.dw.ny.TMUD_NY_TJ_DoExcel String tmp = tntde.fromExceltoSql_1(filename); //[ /jsp/mart_ny/ny_md_033_2.jsp; Line: 11] [/code] 这中间说: [code="java"] String tmp = tntde.fromExceltoSql_1(filename); [/code] 报错了,其实这方法根本没错的,在开发环境能够正常运行的。 诡异的是,另外一个jsp经过我修改后放在服务器上后,居然也报错:cannot resolve symbol 刚刚报错的文件代码贴出来: [code="java"] <%@ page language="java" pageEncoding="UTF-8"%> <%@page import="com.baosight.dw.ny.TMUD_NY_TJ_Upload"%> <%@page import="com.baosight.dw.ny.TMUD_NY_TJ_DoExcel"%> <% TMUD_NY_TJ_Upload tnju = new TMUD_NY_TJ_Upload(); TMUD_NY_TJ_DoExcel tntde = new TMUD_NY_TJ_DoExcel(); String fileupdate=request.getParameter("filedate"); String url = "/dw/webupload/mart_ny/nbbx/"; String filename = tnju.fileupload(pageContext,url+fileupdate); if(!"".equals(filename)){ String tmp=tntde.fromExceltoSql_1(filename); if("".equals(tmp)){ out.print("<script>window.alert('恭喜,数据导入成功.');window.location.href='ny_md_033.jsp';</script>"); }else{ out.println(fileupdate); out.println("<script>window.alert('请注意,本次操作出现故障:"+tmp+"请重试或联系管理员')</script>"); } }else{ out.print("文件上传时出现问题"); } %> [/code] 大家可以看到,我是实例化的一个tntde对象,调用fromExceltoSql_1(filename),然而在浏览器中,这一行代码红色了 而上面的上传动作,经过确认也没有成功上传到服务器。 在开发服务器同样的代码却能够正常运行。 出现这样的情况,应该要怎样去处理呢? 大侠们给个思路,具体点最好了
Java在触发事务回滚之后为什么会再一次回到Servlet开始的地方重新走一次流程?
## 代码流程 1. 前台点击"提交订单"进入`BaseServlet.class` 2. `BaseServlet.class`分发至子类`OrderServlet.class`的`submitOrder()`方法 3. `submitOrder()`调用Service层的`submitOrder()`方法. 4. 关键是Service层`submitOrder()`中使用了事务回滚. 这里调用了`Dao`层两个方法: `fun01()`和`fun02()`, 其中`fun01`执行成功, `fun02()`执行时抛出异常. 5. catch到异常后, 执行回滚. 然后关闭连接. 然后, **异常诡异的是, 程序并没有在回滚、关闭连接后结束,而是再一次进入`BaseServlet`。** 再一次执行一次上述流程,而这一次,由于第一次已经将*线程绑定的连接*关闭了。所以自然出现异常:不能操作已经关闭的连接。 **我的疑惑是:为什么它走了两次这个流程?是因为我调用了个`dao`层的插入数据的方法吗?** 还是或事物回滚就是从头在执行要一遍流程呢? 这个异常, 导致回滚技术无法实现呀. ## 代码片段(图片) ![图片说明](https://img-ask.csdn.net/upload/201711/12/1510464901_837407.png) ## 代码片段源码 ### Servlet层 ``` public String submitOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ... Debug.log("进入方法:submitOrder..."); // 打印信息 boolean flag = false; // 调用service层方法 flag = orderService.submitOrder( pids, checkeds, quantitys, user ); // 提交成功 --> order_info.jsp页面 失败 --> info.jsp if( flag ) { return goOrderInfoUI(req, resp); }else { req.setAttribute("error", "提交订单失败!"); return "/info.jsp"; } } ``` ### service层 ``` ... // 获得*线程绑定的连接* Connection conn = null; try { conn = C3P0Util.getConnection(); Debug.log("连接=="+conn); // 开启事务 // 由于插入要么都成功, 要么都失败, 所以需要用事务操作 Debug.log("进入try"); conn.setAutoCommit(false); Debug.log("开启事务"); // 调用dao插入数据库 // 插入订单 orderDao.insertOrder(order); Debug.log("order插入走完"); // 插入订单项 orderDao.insertOrderItmes( orderItems ); // 提交事务 conn.commit(); // 方法返回值为true Debug.log("事务已提交"); flag = true; }catch(Exception e) { Debug.log("进入外层catch"); // 回滚事务 try { conn.rollback(); Debug.log("事务已回滚"); } catch (SQLException e1) { // TODO Auto-generated catch block Debug.log("进入内存catch"); e1.printStackTrace(); } }finally { // 关闭连接 try { Debug.log("关闭连接"); conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Debug.log("service走完"); return flag; ... ``` 注:*`Debug.log()`是自定义方法用来打印信息.*
关于java static变量初始化的疑问
java中,类的static变量作为类变量,只需要被一次初始化,就可使用,但是,我在程序中遇到一个问题: 在web.xml中配置listener,服务器启动时,ServletContextListen初始化数据源(DataSource),第一次初始化成功,但是在Test类中,调用ConnectionManager.getConnection()时,DataSource却为null,意味着ServletContextListen初始化数据源失败了,大家帮忙解答下,到底什么原因造成的,谢谢!!! 以下是代码: [code="java"] package c3p0.connection; import java.beans.PropertyVetoException; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class ConnectionManager { private static DataSource data_source=null;; private static Properties props=null; private static String porps_name=null; /** * 创建数据库连接池 * @return */ private static DataSource createDataSource(){ load(); data_source=initDB(); return data_source; } /** * 加载配置文件 */ private static void load(){ try { props = new Properties(); InputStream in=Thread.currentThread().getContextClassLoader().getResourceAsStream(porps_name); props.load(in); } catch (IOException e) { e.printStackTrace(); } } /** * 初始化数据库 */ private static DataSource initDB(){ System.out.println("开始初始化数据源..."); ComboPooledDataSource pool_ds=new ComboPooledDataSource(); try { pool_ds.setDriverClass(getProperty("c3p0.connection.driverClass")); } catch (PropertyVetoException e) { e.printStackTrace(); throw new RuntimeException("数据库驱动加载失败"); } pool_ds.setJdbcUrl(getProperty("c3p0.connection.url")); pool_ds.setUser(getProperty("c3p0.connection.user")); pool_ds.setPassword(getProperty("c3p0.connection.password")); pool_ds.setInitialPoolSize(Integer.parseInt(getProperty("c3p0.connection.initialPoolSize"))); pool_ds.setMaxPoolSize(Integer.parseInt(getProperty("c3p0.connection.maxPoolSize"))); pool_ds.setMinPoolSize(Integer.parseInt(getProperty("c3p0.connection.minPoolSize"))); pool_ds.setMaxIdleTime(Integer.parseInt(getProperty("c3p0.connection.maxIdleTime"))); pool_ds.setAcquireIncrement(Integer.parseInt(getProperty("c3p0.connection.acquireIncrement"))); pool_ds.setAcquireRetryAttempts(Integer.parseInt(getProperty("c3p0.connection.acquireRetryAttempts"))); pool_ds.setAcquireRetryDelay(Integer.parseInt(getProperty("c3p0.connection.acquireRetryDelay"))); pool_ds.setTestConnectionOnCheckout(Boolean.parseBoolean(getProperty("c3p0.connection.testConnectionOnCheckout"))); pool_ds.setTestConnectionOnCheckin(Boolean.parseBoolean(getProperty("c3p0.connection.testConnectionOnCheckin"))); pool_ds.setIdleConnectionTestPeriod(Integer.parseInt(getProperty("c3p0.connection.idleConnectionTestPeriod"))); pool_ds.setCheckoutTimeout(Integer.parseInt(getProperty("c3p0.connection.checkoutTimeout"))); pool_ds.setAutomaticTestTable(getProperty("c3p0.connection.automaticTestTable")); System.out.println("数据源初始化完毕..."); return pool_ds; } /** * 获取c3p0连接池文件配置信息 * @param key * @return */ private static String getProperty(String key){ if(key==null||"".equals(key)){ throw new NullPointerException("key不能为空!!!请检查key的赋值!!!"); } return props.getProperty(key); } public static Connection getConnection() throws SQLException{ data_source=(data_source==null) ? createDataSource() : data_source; return data_source.getConnection(); } public static void start(String porps_name) throws SQLException{ ConnectionManager.porps_name=porps_name; Connection conn=getConnection(); conn.close(); } public static void stop(){ data_source=null; } public static void release(Connection conn,PreparedStatement pstmt,ResultSet res){ try { if(conn!=null){ conn.close(); } if(pstmt!=null){ pstmt.close(); } if(res!=null){ res.close(); } } catch (SQLException e) { e.printStackTrace(); } } } [/code] [code="java"] package mystruts.listener; import java.sql.SQLException; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import c3p0.connection.ConnectionManager; /** * ServletContext 上下文监听器 * 应用服务器一启动就产生该对象,服务器关闭即销毁 * 作用于全局,所有Servlet ,相当于静态变量 * @author tianly * */ public class ServletContextListen implements ServletContextListener { /** * web服务器关闭时执行 */ @Override public void contextDestroyed(ServletContextEvent event) { /** * 关闭数据源 */ ConnectionManager.stop(); } /** * web服务器启动时执行 */ @Override public void contextInitialized(ServletContextEvent event) { /** * 初始化数据源 */ String db_url=event.getServletContext().getInitParameter("DataBaseConfig"); try { ConnectionManager.start(db_url); } catch (SQLException e) { e.printStackTrace(); } } } [/code] [code="java"] package test.c3p0; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import c3p0.connection.ConnectionManager; import c3p0.util.DateUtil; public class Test { /** * @param args */ public static void main(String[] args) { String currdate=DateUtil.getDateTime(); Connection conn=null; PreparedStatement pstmt=null; ResultSet res=null; try { String sql="insert into userinfo(username,password,sex,regdate) values(?,?,?,?)"; String sql4ID="select LAST_INSERT_ID()"; conn=ConnectionManager.getConnection(); conn.setAutoCommit(false); pstmt=conn.prepareStatement(sql); pstmt.setString(1, "tly"); pstmt.setString(2, "tly"); pstmt.setInt(3, 0); pstmt.setString(4, currdate); //mysql中无需进行日期格式转换 pstmt.executeUpdate(); pstmt=conn.prepareStatement(sql4ID); res=pstmt.executeQuery(); if(res.next()){ int ID=res.getInt(1); System.out.println("ID:"+ID); } conn.commit(); } catch (SQLException e) { e.printStackTrace(); try { conn.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } }finally{ ConnectionManager.release(conn, pstmt, res); } } } [/code] [code="xml"] <?xml version="1.0" encoding="UTF-8"?> <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"> <display-name>mysystem</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!-- 登录Servlet配置 <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>login.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> --> <filter> <filter-name>ActionDispatcher</filter-name> <filter-class> mystruts.actionfilter.ActionDispatcher</filter-class> </filter> <filter-mapping> <filter-name>ActionDispatcher</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <!-- 数据库信息配置 --> <context-param> <param-name>DataBaseConfig</param-name> <param-value>c3p0/c3p0.properties</param-value> </context-param> <listener> <listener-class>mystruts.listener.ServletContextListen</listener-class> </listener> </web-app> [/code] 在Test类中,调用ConnectionManager.getConnection()时,DataSource却为null,但我在debug时,跟踪查看,发现DataSource是被初始化了,不知什么原因造成初始化失败,请大家帮忙查看下,谢谢
急求!弄了好久了这个错误,就是不知道怎么回事
用eclipse建了一个ejb工程,实现ejb程序的jsp形式的客户端,点ejb文件右键建了一个动态web project,然后代码完成后就这样了,这个test是ejb的包名,然而识别不出,为什么?!为什么?!!!!![图片](https://img-ask.csdn.net/upload/201704/13/1492045250_293795.png)
请问如何实现根据选择的下拉菜单值动态从类中获取信息再设置在到文本框中?
<p>jsp页面中有一下拉列表,想实现如下功能,根据选中的下拉项,用该下拉项的下标索引作为key从一个自定义容器中获取相应值并设置到后续的text文本框中。 <br><br>举例: <br>&lt;select id="AA" onchange="setInfo()"&gt; <br>    &lt;option value=‘1’&gt;李&lt;/option&gt; <br>    &lt;option value=‘2’&gt;王&lt;/option&gt; <br>&lt;/select&gt; <br>&lt;!-- 此处的option也是动态生成,事先是不知道个数的,为了方便举例我简单用两个代替了--&gt; <br><br>&lt;input type="text" name="age"&gt; <br>&lt;input type="text" name="sex"&gt; <br><br>现在我选中李,页面就从一个自定义的类UserInfo(所有需要的用户信息已经全部从服务端返回并封装了)中以“李”作为key获取“李”的age,sex等信息,并显示在text文本框中,这个js怎么写? <br><br>我写的setInfo()是 <br>var slt = document.getElementById("AA"); <br>var id = slt.value; <br><br>//userInfo为UserInfo类的实例变量 <br>document.all.age.value = &lt;%=userInfo.getUserInfo(<span style="color: #ff0000;">id</span>, "age")%&gt;;//获取age(id实际无法调用,举例用) <br>document.all.sex.value = &lt;%=userInfo.getUserInfo(<span style="color: #ff0000;">id</span>, "sex")%&gt;;//获取sex(id实际无法调用,举例用) <br><br>但是因为在java代码中无法调用js变量,所以程序写不下去了,谁有解决方法吗? <br><br>UserInfo的存储结构如下: <br>整个是个arraylist,里面存放了N条记录,每条记录再用HashMap格式存放,具体为 <br>{id=1,name="李",age=10,sex="男"} <br>{id=2,name="钱",age=20,sex="男"} <br>{id=3,name="王",age=30,sex="女"} <br>.......略 </p> <p> </p> <p>只要能够获取到下拉菜单的索引下标id值并传到java的代码中就可以了,问题是怎么传呢?要是这种方法不能实现,那又该怎么实现呢?</p> <p> </p><br /><strong>问题补充:</strong><br />一楼这位的方法我尝试过,可惜无法实现,因为这个下拉菜单也是动态生成的,要获取这个下拉菜单的id索引就一定要在js中,再要设值就需要把刚才js获取的id用上,然后在java代码中实现,这样又回到老问题了<br /><strong>问题补充:</strong><br />ajax我也想过 但是处理的url很难实现,页面是用servlet控制的,不能简单传个下标索引过去,要改动不少的地方工程也很大。而且主要是我所需要的信息都已经返回并封装在userInfo这个类中了,我就是获取不到id,使用ajax好像有点大材小用了<br /><strong>问题补充:</strong><br />如果我把返回的类改成了HashMap形式,但是要取出里面的value值还是需要hashmap.get(id)这种形式的吗?不好意思,我有些不明白,这个id不就是我从页面上的获取的下拉菜单下标索引吗?这样不是仍然无法解决js和java代码混合调用的问题?
Spring整合hibernate4时出现no session错误
首先将eclipse抛出的错误贴出来: ``` 严重: Servlet.service() for servlet [springDispatcherServlet] in context with path [/VideoMngSys] threw exception [Request processing failed; nested exception is org.hibernate.HibernateException: No Session found for current thread] with root cause org.hibernate.HibernateException: No Session found for current thread at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:106) at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:988) at com.vincent.videosys.dao.BaseDao.getSession(BaseDao.java:17) at com.vincent.videosys.dao.UserDao.usernameExist(UserDao.java:29) at com.vincent.videosys.service.UserService.usernameExistService(UserService.java:19) at com.vincent.videosys.controller.home.UserController.usernameExist(UserController.java:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle (ServletInvocableHandlerMethod.java:104) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod (RequestMappingHandlerAdapter.java:748) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal (RequestMappingHandlerAdapter.java:689) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle (AbstractHandlerMethodAdapter.java:83) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931) .... ``` ![项目工程结构如下:](https://img-ask.csdn.net/upload/201601/02/1451707793_69876.png) 下面依次贴出我的相关文件代码: 1.web.xml ``` <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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"> <!-- 加载Spring配置文件,Spring应用上下文,理解层次化的ApplicationContext --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 可以将POST请求转为PUT请求和DELETE请求 --> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- The front controller of this Spring Web application, responsible for handling all application requests --> <servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Map all requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list> </web-app> ``` 2.spring-mvc.xml ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" ......> <!-- 向Spring容器注册AutowiredAnnotationBeanPostProcessor、 CommonAnnotationBeanPostProcessor、 PersistenceAnnotationBeanPostProcessor、 RequiredAnnotationBeanPostProcessor,使系统能识别注解 --> <context:annotation-config /> <!-- 使用annotation自动注册bean,并检查@Controller、@Service、@Repository --> <context:component-scan base-package="com.vincent.videosys"></context:component-scan> <!-- 导入资源文件 --> <context:property-placeholder location="classpath:db.properties"/> <!-- 配置C3P0数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> <property name="initialPoolSize" value="${jdbc.initPoolSize}"></property> <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property> </bean> <!-- 配置SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> <property name="packagesToScan"> <list> <value>com.vincent.videosys.*</value> </list> </property> </bean> <!-- 配置hibernate的事务管理器 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 定义AutoWired自动注入bean --> <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"></bean> <!-- 用注解来实现事务管理 --> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- 3. 配置事务切入点, 再把事务属性和事务切入点关联起来 --> <aop:config> <aop:pointcut expression="execution(* com.vincent.videosys.service.*.*(..))" id="txPointcut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/> </aop:config> </beans> ``` 4.hibernate.cfg.xml ``` <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <!-- JDBC connection pool (use the built-in) --> <!-- <property name="connection.pool_size">1</property>--> <!-- 数据库使用的方言 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Echo all executed SQL to stdout --> <!-- 设置 打印输出 sql 语句 为真 --> <property name="hibernate.show_sql">true</property> <!-- 设置格式为 sql --> <property name="hibernate.format_sql">true</property> <!-- 第一次加载 hibernate 时根据实体类自动建立表结构,以后自动更新表结构 --> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</property> </session-factory> </hibernate-configuration> ``` 5.db.properties jdbc.user=root jdbc.password=root jdbc.driverClass=com.mysql.jdbc.Driver jdbc.jdbcUrl=jdbc:mysql://localhost:3306/videomngsys jdbc.initPoolSize=5 jdbc.maxPoolSize=10 6. BaseDao.java ``` package com.vincent.videosys.dao; import javax.annotation.Resource; ..... @Repository("baseDao") public class BaseDao{ @Autowired protected SessionFactory sessionFactory; public Session getSession(){ return this.sessionFactory.getCurrentSession(); } } ``` 7.UserDao.java ``` package com.vincent.videosys.dao; import org.hibernate.Query; import org.hibernate.Session; .... @Repository("userDao") public class UserDao extends BaseDao{ protected SessionFactory sessionFactory; /** * 查看该用户名在数据库中是否存在 * 存在返回true * 不存在返回false * 默认返回true * @param username * @return */ public boolean usernameExist(String username){ boolean exist = true; String hqlString = "from user where username = :username"; Session session = super.getSession(); Query query = session.createQuery(hqlString); query.setParameter("username", username); List<User> list = query.list(); if(list.size() > 0) { exist = false; } return exist; } } ``` 8 UserService.java ``` package com.vincent.videosys.service; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; ... @Transactional @Service("userService") public class UserService { @Autowired private UserDao userDao; public boolean usernameExistService(String username){ return userDao.usernameExist(username); } } ``` 9. UserController.java ``` package com.vincent.videosys.controller.home; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; ..... @RequestMapping("/user") @Controller public class UserController { @Autowired private UserService userService; @ResponseBody @RequestMapping(value="/usernameExist",method=RequestMethod.POST) public Map<String, String> usernameExist(@RequestParam("username")String usernameString ){ Map<String, String> resultMap = new HashMap<String, String>(); System.out.println("username: "+usernameString); if(userService.usernameExistService(usernameString)){ resultMap.put("status", "1");//exits } else{ resultMap.put("status", "0");//not exist } return resultMap; } } ``` 每次程序执行到UserController类中的userNameExist方法时,开始调用userService中的方法时,便开始抛出错误.....
刚从一家公司辞职,各位帮忙推荐推荐工作!
[size=x-small]职位: JAVA程序员 ◆基本资料: 姓 名 :李海洋 性 别 : 男    出生年月:1986年9月 政治面貌: 团 员 联系方式:15871758510 学 历 : 本 科 E-mail:yepang521@yahoo.com.cn QQ:382541491 ◆能力描述: 熟练Java, C/C++, JSP/SERVLET(MVC)网站架构,以及程序代码编写。 熟练使用Eclipse/ Dreamweaver等开发工具。 熟练tomcat、jboss服务器的部署。 熟练Struts, Hibernate, Spring等。 熟练 Oracle, SQL Server,mysql,PG数据库的操作。 熟练JNative/JNA等技术访问C/Delphi生成的动态链接库(dll),以及用JNI生成JAVA能够直接访问的dll库。 熟练iReport+jasperReport 制作基本的报表技术。 熟悉swing/html/css/javascript/xml/uml/Ajax/xsl/dwr/dojo/ext等相关知识。 ◆工作经验: 2007/8-至今 黄石融丰计算机科技有限公司 Java软件工程师 项目经验: (有近两年的实际开发经验,能够独立完成项目组分配的任务,以下已经上线的项目可提供演示带分析.尤其对于JAVA访问硬件设备有一定的经验!) 大冶人事档案管理系统(2008-10 — 2009-5): 本系统是一个基于Struts+Hibernate+Spring框架模式的web应用系统。 项目开发主要负责人,主要参与调研、数据库表结构设计、系统架构以及代码的编写。 主要技术:PG数据库、SSH、Ajax、DWR、POI、JavaScript、DOM、CSS、XSL、XML以及缓存技术等。 校园一卡通刷卡消费管理系统(2008-01—2009-10): 本系统是一个基于SSH集成框架的WEB应用系统,主要是为了方便学生就餐问题,学生持IC卡可随时消费。 项目组核心成员,主要参与利用JNI/Jnative/JNA技术调用硬件厂商提供的动态链接库(用delphi生成的DLL)并封装,从而实现利用读卡器开户、充值、充正、退卡,以及消费机的数据采集等操作。而且参与项目核心代码的编写。 包括调研、设计、实现、测试及文档。 主要技术:SSH 、SQL Server数据库、JSP、JavaScript、CSS、xml、XSL、Ajax、DWR、ireport+jasperreports等技术。 超市管理系统(2007-01—2008-02): 本系统是基于C/S模式的Swing+Struts+Hibernate的桌面式应用系统。 系统主要包括前台销售退货,以及后台的采购入库、统计、盘存、日结等操作。 主要技术:前台消费用Derby数据库后台用PG数据库、Swing、Struts、Hibernate、JNI、缓存技术、ireport+jasperreports等技术。 主要参与报表制作,利用Swing制作前台界面,测试,文档以及最终的纠错。 ◆教育背景: 2005/9-2008/7 黄石理工学院 计算机应用技术 大专 2009年12月份可取得华中科技大学计算机应用专业的 本科文凭(属于自考)。 ◆语言水平: 英语水平 相当于四级水平,能够熟练的阅读相关的专业文档。 ◆在校经历: 在校期间曾经担任过学习委员、副班长职务,并多次获得奖学金。 ◆证书: 2007-06 计算机技术与软件资格(水平)证书——程序员证 ◆个人评价: 具有很强的自学能力,做事踏实认真,有较强的责任心和很高的工作热情,个性随和谦虚,性格开朗,善于沟通,处事稳重。有一定的组织协调能力,具有团队合作精神。 刚辞职,现在正要找工作了 希望大家公司有需要的推荐推荐,小弟谢谢了 呵呵 [/size] [b]问题补充:[/b] 工作地点最好是在武汉吧 不过其他的地方也可以的
做了一个小时的面试题(没有过 希望大家帮忙答下 虽然很幼稚 毕竟每个人都是这么过来的吗 感激了!)
XX软件工程师笔试试题 注:1、请参考人员将答案写在答题纸上,勿将答案写在此卷上。 2、请参考人员将编号与姓名填写在答题纸上。 1、 以下数据结构中不属于线性数据结构的是()。 A、队列 B、线性表 C、二叉树 D、栈 我的答案:C 2、 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。 A、 可行性分析 B、需求分析 C、详细设计 D、程序编码 我的答案:B 3、 结构化程序设计主要强调的是()。 A、 程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 我的答案:C 4、 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段()。 A、 概要设计 B、详细设计 C、可行性分析 D、需求分析 我的答案:B 5、 下列关于栈的叙述中正确的是()。 A、 在栈中只能插入数据 B、在栈中只能删除数据 B、 栈是先进先出的线性表 D、栈是先进后出的线性表 我的答案:D 6、 下面不属于软件设计原则的是()。 A、 抽象 B、模块化 C、自底向上 D、信息隐蔽 我的答案:C 7、 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。 A、 N+1 B、N C、(N+1)/2 D、N/2 我的答案:C 8、 视图设计一般有3种设计次序,下列不属于视图设计的是()。 A、 自顶向下 B、由外向内 C、由内向外 D、自底向上 我的答案:C 9、下列有关数据库的描述,正确的是()。 A、数据库是一个DBF文件 B、数据库是一个关系 C、数据库是一个结构化的数据集合 D、数据库是一组文件 我的答案:C 10、下列说法中,不属于数据模型所描述的内容的是()。 A、数据结构 B、数据操作 C、数据查询 D、数据约束 我的答案:A 11、若按功能划分,软件测试的方法通常分为白盒测试方法和(黑盒测试方法)。 12、数据库系统的三级模式分别为(级联)模式、内部级模式与外部级模式。 13、在最坏情况下,冒泡排序的时间复杂度为(N+1/2)。 14、在面向对象方法中,信息隐蔽是通过对象的(封装)性来实现的。 15、关系模型的数据操纵既是建立在关系上的数据操纵,一般有(插入)、增加、删除、和修改四种操作。 16、TIME()的返回值的数据类型是(String)类型。 17、编写SQL语句 1)、创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话 我的答案: create table student( studentCardNo number(2) primary key, name char(10), age number(2), sex char(2) check(sex in (‘男’,’女’)), address varchar2(100), tel number(2) ) 2)、修改学生表的结构,添加一列信息,学历 我的答案: alter table student add(xueli varchar2(20)); 3)、修改学生表的结构,删除一列信息,家庭住址 我的答案: alter table student drop column address; 4)、向学生表添加如下信息: 学号 姓名 年龄 性别 联系电话 学历 1 A 22 男 123456 小学 2 B 21 男 119 中学 3 C 23 男 110 高中 4 D 18 女 114 大学 我的答案: insert into student values(‘&1’,’&2’,’&3’); 一次一次添加 5)修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” 我的答案: update student set xueli=”大专” where tel like 11%; 6)删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 我的答案: delete student where name like C% or sex=”男”; 7)查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号显示出来 我的答案: select name,studentCardNo from student where age<22 and xueli=”大专”; 8)查询学生表的数据,查询所有信息,列出前25%的记录 我的答案: select top*0.25 from student; 9)查询出所有学生的姓名,性别,年龄降序排列 我的答案: select name,sex,age from student where age desc; 10)按照性别分组查询所有的平均年龄 我的答案: select avg(age) from student group by sex; 18、什么是存储过程?为什么存储过程要比单纯的SQL语句执行起来要快? 我的答案: 存储过程算是一种优化查询需要比单存SQL语句执行的要快 19、两张关联表,删除主表中已经在副表中没有的信息 我的答案 delete from fubiao a where a.fid not in(select id from zhubiao) 20、程序题: 用1、2、2、3、4、5这六个数字,用java或你熟悉的语言,打印出所有不同的排列,如:512234、412345等,要求:“4”不能再第三位,“3”与“5”不能相连。并将这些数据按从小到大输出。 我的答案 我的写的不好 没贴下 笔试的时候没写全 21、String 和 StringBuffer的区别 我的答案 String定长 StringBuffer 变长 22、&和&&的区别 我的答案 &短路与 &&逻辑与 网上答案: & 是位运算符,表示按位与运算, && 是逻辑运算符,表示逻辑与(and)。 23、final,finally,finalize的区别 我的答案 Final静变量关键字,finally异常关键字,finalize 网上答案 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 24、数组有没有length()这个方法?String有没有length()这个方法? 我的答案: 数组没有length()这个方法,有length的属性。 String有length()这个方法。 25、是否可以继承String类? 我的答案: 不可以 解释的很乱 26、说出数据连接池的工作机制是什么? 我的答案: 反正解释的很乱我感觉 27、垃圾回收的优点和原理。并考虑2种回收机制。 我的答案: 动态回收 解释的很乱 网上答案: Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解, 它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念, 只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有 使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 28、你所知道的集合类都有哪些?区别?主要方法? 我的答案: Arraylist 非线性的、Vertor线性的 29、JSP的内置对象及方法。 我的答案: Page,exception,out,page content,application,request,reponse,session,config 30、页面间对象传递的方法。 我的答案: 那几个方法都写错了 31、你知道Request对象的主要方法有哪些? 32、J2EE是技术还是平台还是框架? 我的答案: J2EE是技术也是平台 网上答案: J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 33、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种(例如GBK编码类型)编码的字符串? Request encording(“GBK”) 34、j2ee常用的设计模式?说明工厂模式。 Gof23种设计模式 工厂模式:Factory 网上答案: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。 首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。 然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。 当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 35、JSP四种会话跟踪技术 我的答案: Application cookie session 36、排序都有哪几种方法?请举例 冒泡 选择 快序 二分查找 网上答案: 排序的方法有:插入排序(直接插入排序、希尔排序), 交换排序(冒泡排序、快速排序), 选择排序(直接选择排序、堆排序), 归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 //使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 37、关于模块间的设计原则? 规范要一样 38、项目过程一般是怎样的?你参加过几个项目开发?参加过的项目流程是怎样的?自己负责与人合作工作内容及自我评价? 从需求调研——设计开发——实施 参加过网站的实施 模板的制作 39、tomcat自动关闭常见原因? 我的答案: 现在没遇到过 40、如何设置TOMCAT内存和连接数? 我的答案: Tomcat群集 41、你如何理解Tomcat是什么? 我的答案: Tomcat是JSP Servlet 容器恰当的说 42、静态变量和实例变量的区别? 我的答案: 静态变量域用final修饰,每次都被调用 实例变量则不会 43、IE、FF下面CSS的解释区别 我的答案: 自己编的 44、web前端技术你了解哪些技术? 我的答案: JAVAScript,CSS,DIV,Ajax,Ajax框架,DWR,dojo,jguery 45、什么是报表?什么是报表控件,作用是什么?你了解哪些报表工具? 我的答案: 解释的很乱 46、你了解的那些统计图表类型? 我的答案: 自己编的 47、Flex与数据库连接的三种方式? 我的答案: 自己编的 ------------------------------------------------------- 我答错的、 错在哪里? 没答上的帮忙解答下? 感激了 !
Filter 简单应用实例求详解
web.xml <filter> <filter-name>AdminFilter</filter-name> <filter-class>szy.shopping.filter.AdminFilter</filter-class> <init-param> <param-name>url</param-name> <param-value>/admin/login.jsp</param-value> </init-param> </filter> <filter-mapping> <filter-name>AdminFilter</filter-name> <url-pattern>/admin/index.jsp</url-pattern> </filter-mapping> AdminFilter.java public class AdminFilter implements Filter{ String url = "/"; @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; HttpSession session = req.getSession(); if (session.getAttribute("admin") == null) { res.sendRedirect(req.getContextPath() + url); return ; } chain.doFilter(request, response); } @Override public void init(FilterConfig config) throws ServletException { url = config.getInitParameter("url"); } } 能不能详细说明以上两段代码的具体解释?大致的流程是怎么样的? [b]问题补充:[/b] lianj_lee所说的这个权限判断是我写程序调用,还是它自动根据XML来调用验证是否登录? 还有 <filter> <filter-name>AdminFilter</filter-name> <filter-class>szy.shopping.filter.AdminFilter</filter-class> <init-param> <param-name>url</param-name> <param-value>/admin/login.jsp</param-value> </init-param> </filter> <filter-mapping> <filter-name>AdminFilter</filter-name> <url-pattern>/admin/index.jsp</url-pattern> </filter-mapping> 可否在详细说明?谢谢~
[freemarker]使用freemarker生成父子关系树抛异常
需要生成一个菜单树,使用了freemarker,由于采用了tiles2,在和freemarker整合的时候出现了问题,所以直接使用freemarker 2.3.15将模板通过template.process方法产生html code显示到前端,主要代码如下: [code="java"] //产生freemarker config package project.util.freemarker; import freemarker.cache.ClassTemplateLoader; import freemarker.template.Configuration; import freemarker.template.DefaultObjectWrapper; import freemarker.template.TemplateExceptionHandler; public class FreeMarkerService { private static Configuration cfg = new Configuration(); static { //设置模版加载的路径,相对于FreemarkerService类路径下的templates路径 cfg.setTemplateLoader(new ClassTemplateLoader(FreeMarkerService.class, "ftl")); //设置对象包装器 cfg.setObjectWrapper(new DefaultObjectWrapper()); //设置默认编码 cfg.setDefaultEncoding("UTF-8"); //设置异常处理器 cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER); } public static Configuration getConfiguration() { return cfg; } } [/code] [code="java"] //freemarker工具类,将数据和模板合成html package project.util.freemarker import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.Map; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; public class FreeMarkerUtil { @SuppressWarnings("rawtypes") public static String dataToString(Map data,String templatePath) throws IOException,TemplateException{ if(data == null){ return null; } Writer out = null; Configuration cfg = FreeMarkerService.getConfiguration(); Template template = cfg.getTemplate(templatePath); out = new StringWriter(); template.process(data,out); return out.toString(); } } [/code] freemarker 模板 [code="html"] <#-- 定义宏buildNode --> <#macro buildNode child parent> <li id="${parent.menuId}" parentId="${parent.parent.menuId}"> <a href="${webRoot}/rbac/initMenuMgmtAction.do?menuId=${parent.menuId}"> <span <#if 'Y' == parent.isDel> style="text-decoration:line-through" </#if> > ${parent.menuName} </span> </a> <#if child?? && child?size gt 0> <ul> <#list child as t> <#-- 递归调用宏buildNode --> <@buildNode child=t.children parent=t/> </#list> </ul> </#if> </li> </#macro> <ul> <@buildNode child=rootMenu.children parent=rootMenu/> </ul> [/code] [code="java"] //实体类 package project.bean; import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.Parameter; @Entity @Table(name="RBAC_MENUS") public class Menu { private int menuId; private String menuName; private String description; private Menu parent; private List<Menu> children; private List<Function> functions; private String isDel; public Menu(){} @Id @GeneratedValue(generator = "paymentableGenerator") @GenericGenerator(name = "paymentableGenerator", strategy = "sequence", parameters= {@Parameter(name="sequence",value="RBAC_MENU_SEQ")}) @Column(name="MENU_ID") public int getMenuId() { return menuId; } public void setMenuId(int menuId) { this.menuId = menuId; } @Column(name="MENU_NAME") public String getMenuName() { return menuName; } public void setMenuName(String menuName) { this.menuName = menuName; } @ManyToOne(cascade = {CascadeType.MERGE,CascadeType.REFRESH }, optional = true) @JoinColumn(name="PARENT_MENU_ID") public Menu getParent() { return parent; } public void setParent(Menu parent) { this.parent = parent; } @OneToMany(cascade = { CascadeType.REFRESH, CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE },mappedBy ="parent") public List<Menu> getChildren() { return children; } public void setChildren(List<Menu> children) { this.children = children; } public void addChildren(Menu menu){ if(this.children == null){ this.children = new ArrayList<Menu>(); } this.children.add(menu); } @OneToMany(cascade = { CascadeType.REFRESH, CascadeType.PERSIST,CascadeType.MERGE, CascadeType.REMOVE },mappedBy ="menu") public List<Function> getFunctions() { return functions; } public void setFunctions(List<Function> functions) { this.functions = functions; } @Column(name="IS_DEL") public String getIsDel() { return isDel; } public void setIsDel(String isDel) { this.isDel = isDel; } @Column(name="description") public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } } [/code] [code="java"] //Struts action package project.web; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import project.bean.Menu; import project.service.MenuService; import project.util.freemarker.FreeMarkerUtil; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.ServletActionContext; public class MenuAction extends ActionSupport { ... @Resource private MenuService menuService; private String menuTree; public String getMenuTree(){ return menuTree; } ... @SuppressWarnings({ "rawtypes", "unchecked" }) public String initMenu(){ Menu rootMenu = menuService.getRootMenu(); try{ Map freemarkerData = new HashMap(); freemarkerData.put("rootMenu", rootMenu); freemarkerData.put("webRoot", ServletActionContext.getServletContext().getContextPath()); menuTree = FreeMarkerUtil.dataToString(freemarkerData, "menumgmt.ftl"); } catch(Exception e){ e.printStackTrace(); } return ActionSupport.SUCCESS; } ... [/code] [code="java"] //Menu Service实现类 public class MenuServiceImpl implements MenuService { @Resource private SessionFactory sessionFactory; ... //得到根菜单 @SuppressWarnings("unchecked") @Override public Menu getRootMenu() { List<Menu> menus = sessionFactory.getCurrentSession().createQuery("from Menu m where m.parent is null").list(); if(menus != null && menus.size()>0) return menus.get(0); return null; } //插入菜单 @Override public void insertMenu(Menu menu) { sessionFactory.getCurrentSession().persist(menu); } ... } [/code] jsp代码 [code="html"] ... <td rowspan="3" style="width:600px;vertical-align:top"> <!--添加层开始--> <div id="divTreeContainer" style="display:block;"> <div>菜单列表</div> <div id="treeContainer" style="margin-left:10px;display:block;"> ${menuTree} </div> </div> </td> ... <script type="text/javascript"> $(document).ready(function(){ $("#treeContainer ul").Treeview(); $("#treeContainer").show(500); }); </script> [/code] 异常信息 ... Hibernate: select menu0_.MENU_ID as MENU1_2_, menu0_.description as descript2_2_, menu0_.IS_DEL as IS3_2_, menu0_.MENU_NAME as MENU4_2_, menu0_.PARENT_MENU_ID as PARENT5_2_ from RBAC_MENUS menu0_ where menu0_.PARENT_MENU_ID is null Hibernate: select children0_.PARENT_MENU_ID as PARENT5_1_, children0_.MENU_ID as MENU1_1_, children0_.MENU_ID as MENU1_2_0_, children0_.description as descript2_2_0_, children0_.IS_DEL as IS3_2_0_, children0_.MENU_NAME as MENU4_2_0_, children0_.PARENT_MENU_ID as PARENT5_2_0_ from RBAC_MENUS children0_ where children0_.PARENT_MENU_ID=? [ERROR] [freemarker.log.Log4JLoggerFactory$Log4JLogger.error(Log4JLoggerFactory.java:96)] er.runtime - Expression parent.parent is undefined on line 3, column 43 in menumgmt.ftl. The problematic instruction: ---------- ==> ${parent.parent.menuId} [on line 3, column 41 in menumgmt.ftl] in user-directive buildNode [on line 27, column 21 in menumgmt.ftl] ---------- Java backtrace for programmers: ---------- freemarker.core.InvalidReferenceException: Expression parent.parent is undefined on line 3, column 43 in menumgmt.ftl. at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124) at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:134) at freemarker.core.Dot._getAsTemplateModel(Dot.java:78) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.Macro$Context.runMacro(Macro.java:168) at freemarker.core.Environment.visit(Environment.java:602) at freemarker.core.UnifiedCall.accept(UnifiedCall.java:106) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:209) at freemarker.core.Environment.process(Environment.java:189) at freemarker.template.Template.process(Template.java:237) at project.rbac.util.freemarker.FreeMarkerUtil.dataToString(FreeMarkerUtil.java:24) at project.rbac.web.MenuAction.initMenu(MenuAction.java:91) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224) at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:422) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662) Hibernate: select children0_.PARENT_MENU_ID as PARENT5_1_, children0_.MENU_ID as MENU1_1_, children0_.MENU_ID as MENU1_2_0_, children0_.description as descript2_2_0_, children0_.IS_DEL as IS3_2_0_, children0_.MENU_NAME as MENU4_2_0_, children0_.PARENT_MENU_ID as PARENT5_2_0_ from RBAC_MENUS children0_ where children0_.PARENT_MENU_ID=? Hibernate: select children0_.PARENT_MENU_ID as PARENT5_1_, children0_.MENU_ID as MENU1_1_, children0_.MENU_ID as MENU1_2_0_, children0_.description as descript2_2_0_, children0_.IS_DEL as IS3_2_0_, children0_.MENU_NAME as MENU4_2_0_, children0_.PARENT_MENU_ID as PARENT5_2_0_ from RBAC_MENUS children0_ where children0_.PARENT_MENU_ID=? ... 菜单能够正常展现,但是这个异常为什么发生呢,我还碰到一个问题就是当我选择一个菜单项,并且插入一个子菜单的时候,发生一个异常,并且页面也无法展现最新插入的那个菜单,需要刷新一下才能看到新插入的菜单 程序界面如下: [img]http://hiphotos.baidu.com/lucky_sonic/pic/item/c81382cf5b0ce869f9dc612a.jpg[/img]
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱  极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件,   选择安装到U盘(按照操作无需更改) 三、重启进入pe系统   1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12)     选择需要启
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案
Nginx 软件层面加强Nginx性能优化的面试问答和解决方案 去年我去爱卡汽车面试PHP,一轮和二轮面的都不错,在三轮面到Nginx的时候很多问题当时不知道怎么回答,确实没有深入学习过,花了一段时间的学习,终于能解答Nginx高性能优化的问题了,10月24号为了获得程序员勋章,发布了半个优化笔记,浏览到了1000+,受到这个鼓舞,我抽时间在仔细整理下关于Nginx性能优化的问题,我们从软件说起。...
【管理系统课程设计】美少女手把手教你后台管理
【文章后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 1. 这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,若没有烟草销售系统,本人家人想要购买烟草,还要独自前往药...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
化繁为简 - 腾讯计费高一致TDXA的实践之路
导语:腾讯计费是孵化于支撑腾讯内部业务千亿级营收的互联网计费平台,在如此庞大的业务体量下,腾讯计费要支撑业务的快速增长,同时还要保证每笔交易不错账。采用最终一致性或离线补...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
Java学习笔记(七十二)—— Cookie
概述 会话技术: 会话:一次会话中包含多次请求和响应 一次会话:浏览器第一次给服务器发送资源请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cookie,把数据存储到客户端 服务器端会话技术:Session,把数据存储到服务器端 Cookie 概念:客户端会话技术,将数据存储到客户端 快速入门: 使用步骤: 创建C
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
强烈推荐10本程序员在家读的书
很遗憾,这个鼠年春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 显示当前目录 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mk
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
文章目录1. 前言2. 数据下载3. 数据处理4. 数据可视化 1. 前言 今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。 2月6日追记:本文发布后,腾讯的数据源多次变更u
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
在第2章节中,我们介绍了如何通过Spring Boot来实现HTTP接口,以及围绕HTTP接口相关的单元测试、文档生成等实用技能。但是,这些内容还不足以帮助我们构建一个动态应用的服务端程序。不论我们是要做App、小程序、还是传统的Web站点,对于用户的信息、相关业务的内容,通常都需要对其进行存储,而不是像第2章节中那样,把用户信息存储在内存中(重启就丢了!)。 对于信息的存储,现在已经有非常非常多...
基于Python的人脸自动戴口罩系统
目录 1、项目背景 2、页面设计 3、器官识别 4、退出系统 1、项目背景 2019年新型冠状病毒感染的肺炎疫情发生以来,牵动人心,举国哀痛,口罩、酒精、消毒液奇货可居。 抢不到口罩,怎么办?作为技术人今天分享如何使用Python实现自动戴口罩系统,来安慰自己,系统效果如下所示: 本系统的实现原理是借助 Dlib模块的Landmark人脸68个关键点检测库轻松识别出人脸五官
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问