java对于文件的操作,为什么要封装成流的形式?

java对于文件的操作,为什么要封装成流的形式?
直接提供两个方法读写二进制不是很方便吗
流的形式不好理解,我想知道这个"流",在操作系统层面或者c++层面到底是个什么东西

5个回答

流的概念类似于Linux/Unix的管道。

源----------管道------------->目的地 在java中可以把它们称作流。

流又分为 字节流(按字节传) 字符流(按字符传)。

直接提供两个方法读写二进制不是很方便吗
这是Java的封装,在java中最小的数据结构就是byte,所有没必要以位来传,字符也是以字节为单位构建。

直接在java中写位,你需要先获取byte 再获取位,再写 麻烦不?

jinnianshilongnian
jinnianshilongnian 而且写字节/字符 比你写 位开发效率要高
接近 8 年之前 回复

你钻研的太深了 容易把自己陷进去

jva 对于文件封装为流,这是命名的理解,其实质其实就是二进制读取,这其中各种流体现了装饰者模式,是为了组合创造更灵活的功能,你难理解,我觉得应该是难理解各种流的作用

UNIX编程

呵呵 面向对象

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JAVA中JSON解析后的数据自动封装成表格的方法

这是我的JSON:{"res":"01","n":"2","info":[{"id":"1","name":"1111xxx","ver":"132"},{"id":"5","name":"xx","ver":"23"}]} 解析并封装: for (int i = 0; i < arr.length(); i++) { JSONObject subObj = arr.getJSONObject(i); String id = subObj.getString("id"); String name = subObj.getString("name"); String ver = subObj.getString("ver"); Log.i("解析后的数据 ", "id=" + id + ",name=" + name + ",ver=" + ver); ContentValues values = new ContentValues(); values.put("id", id); values.put("name",name); values.put("ver", ver); db.insert("info", null, values); } 然后报错 Error inserting id=1 ver=132 name=1111xxx android.database.sqlite.SQLiteConstraintException: PRIMARY KEY must be unique (code 19) Error inserting id=5 ver=23 name=xx android.database.sqlite.SQLiteConstraintException: PRIMARY KEY must be unique (code 19) 我知道是因为键值不唯一,但是我想要的就是解析后把数据自动封装成表格,而不是一项一向的自己写,请问我要怎么改我的方法才能实现呢?

JAVA中怎么把MP4格式的音视频流装换成单独的视频流和音频流?

我把音视频码流装在Byte[](要用UDP发送出去); 但在这之前我需要是视频和音频分开,只发送视频。java中要怎么做?有什么技术,谁来点代码什么的,谢谢了!

aac格式音频在java中如何使用RTP打包发送

如题,从手机麦克风中采集音频数据,格式是PCM,采样率是44100。然后转成了aac格式。然后想通过RTP形式发送。所以要把AAC格式的byte[]数组封装成rtp形式的来发送。现在问题是在JAVA中怎么把AAC封装成RTP,然后rtp的时间戳怎么计算。要JAVA版本。网上的找到的都是C的版本。

java 关于将ArrayList存入文件与读取的问题

问题描述:这段代码是我未完成的主文件,本人java初学者,实在无法解决,渴求帮助。 这段程序是为了记录Task这个class并保存在timetracker.data中。程序首先要读取文件中的内容,我根据ObjectInputStream函数,想将文件内的内容的全部作为一个ArrayList整体读取出来,然后再在用户输入1时使用add()直接将新的Task添加到ArrayList中,最后在用户输入5的时候将这个ArrayList作为一个整体保存进去。以此来实现Task这个class的存取。 目前来看我的问题出在TaskList = (ArrayList<Task>)ois.readObject();这一行。 编译时会警报 未经检查的类型使用,找到java.lang.Object 需要java.util.ArrayList<Task> 我的疑问是 到底能不能通过readObject将文件内的所有内容读出,还是只能读出一个然后我的程序强行将这个Object转化成了ArrayList形式。 如果能,希望可以教我一下我写法的缺陷。 很抱歉浪费大家时间,感激不尽 import java.io.*; import java.text.*; import java.util.*; import java.lang.*; public class TimeTracker { public static void main(String[] args) throws IOException { byte[] option = new byte[100]; ArrayList<Task> TaskList = new ArrayList<Task>(); for(;;){ //nihao //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ObjectInputStream ois = null; try{ ois = new ObjectInputStream(new FileInputStream("timetracker.data")); TaskList = (ArrayList<Task>)ois.readObject(); } catch (ClassNotFoundException e){ System.out.println("(None)"); } catch (EOFException e){ // catch EOF System.out.println("have reached the end of file"); } finally{ if( ois != null ) { ois.close(); } int n = TaskList.size(); System.out.println(n); } //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ManuPrint manu = new ManuPrint(); manu.Print(); int numRead = System.in.read(option); if((char) option[0] == '1'||(char) option[0] == '2'||(char) option[0] == '3'||(char) option[0] == '4'||(char) option[0] == '5'){ if((char) option[0] == '1'){ System.out.println("Enter new task (blank line ends input, no text ends the current task):"); Date date = new Date(); SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat dt = new SimpleDateFormat("HH:mm"); //------------------------------record the last finished task //------------------------------record the last finished task // still not sloved multi lines BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = null; str=br.readLine(); // multi lines Task a = new Task((ft.format(date)),(dt.format(date)),"","",str); TaskList.add(a); } // option 1 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// if((char) option[0] == '5'){ FileOutputStream fout = new FileOutputStream("timetracker.data"); ObjectOutputStream out = new ObjectOutputStream(fout); try{ out.writeObject(TaskList); out.flush(); } catch(Exception e){ e.printStackTrace(); } finally{ try{ out.close(); } catch(Exception e){ e.printStackTrace(); } } System.out.print("******SEEEEEE UUUUU NEEEXT TIMEEE*********"); System.exit(0); } // option 5 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// } // if=1,2,3,4,5 else{ System.out.println("Invalid option!"); continue; } } //nihao } // main } //class

android保存h264流文件为mp4

网络预览视频,收到的是H264编码的流,有个保存按钮,可以把收到的留实时保存为H264的流文件,用特定播放器可以播放,想收到流的同时,另外实时生成一个MP4文件,有什么好的方法

formData怎么传文件数组到Java后台?

![图片说明](https://img-ask.csdn.net/upload/201709/15/1505458691_647301.png) 首先后台是springMVC的MultipartFile 数组类型接收 现在问题是 我前台formData怎么将多个 ``` <input type="file"> ``` 给传到后台让后台接收?

JAVA中如何将数据组装为json树状结构的数据

我从数据库中查出的数据保存到一个集合List<Area>中,集合中是存的区域类Area。区域类的字段和数据库中结果的字段一样。图1中是我的数据库查询结果,想转行为json格式的树状结构。例如省-市-县这样的结构。就是图2的效果 图1:![图片说明](https://img-ask.csdn.net/upload/201512/18/1450430019_16770.png) 图2:![图片说明](https://img-ask.csdn.net/upload/201512/18/1450430035_129213.png) 弄了一天了还没出现,我太菜了。请大家帮帮忙

封装了envi函数的idl程序如何在没有envi和idl环境的情况下调用

在c#中通过调用之前make_rt生成的idl包里的idlrt.exe调sav文件『sav文件封装了envi的方法』,怎么能在没有envi和idl的环境中成功运行这个程序。现在运行程序会报错 ,求大神解决。最好是怎样把这种情况通过封装打包一个库的形式,调用库中的idlrt.exe来调用sav文件![图片说明](https://img-ask.csdn.net/upload/201609/23/1474625742_149263.png)

后台传递的数据,在前端以图表的形式显示(柱状图之类的)怎么实现呢,网上也看了很多,找不到合适的

把后台Jason格式显示到前台时,用图标进行表示,做监控用,怎么才合适呢?谢谢

java设计studen学生类,以类成员函数方式实现功能

![图片说明](https://img-ask.csdn.net/upload/202005/18/1589811723_144772.png) 用java语言 设计一个 student 类以管理学生 4 门课程(数学、英语、政治和计算机)的成绩,应满足如下要求: ① 从键盘敲入学生的所有信息(姓名,年龄,性别,和四门课程的成绩); ② 求出每个学生的总分(以类成员函数的方式); ③ 求出每个学生的平均分(以类成员函数的方式); ④ 内获得最高分成绩的课程名(以类成员函数的方式); 救救孩子吧!!

java读取xml,将读到的数据存放到对象中,再按照一定条件写入xml,从而生成动态菜单

做eclipse插件开发,菜单项的配置是在plugin.xml中是写死的,现在想做成动态菜单的形式。中间写一个类,这个类可以读取一个xml配置文件,然后可以有一些方法把提取过的数据和plugin.xml联系起来,通过这个类来动态的配置eclipse的菜单。我的想法是把读到的xml文件的内容封装到java的对象中,返回值是一个集合类型,然后我就不知道怎么做了。 图片是展示效果: ![图片说明](https://img-ask.csdn.net/upload/201609/01/1472719954_312637.png) ``` 下面是我们找的一些相关资源: [](http://dom4j.sourceforge.net/dom4j-1.6.1/guide.html "") 这是我自己写的demo: package testforxybc; public class UserInfo { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } private String password; } package testforxybc; import java.beans.XMLDecoder; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class UserInfoController { public static void main(String args[]) { List<UserInfo> objList = null; try { objList = UserInfoController.objectXMLDecoder("outxml.xml"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } for (UserInfo userInfo : objList) { System.out.println(userInfo.getName()); System.out.println(userInfo.getPassword()); } } public static List<UserInfo> objectXMLDecoder(String objSource) throws FileNotFoundException,IOException,Exception { List<UserInfo> objList = new ArrayList<UserInfo>(); File fin = new File(objSource); FileInputStream fis = new FileInputStream(fin); XMLDecoder decoder = new XMLDecoder(fis); Object obj = null; try { while( (obj = decoder.readObject()) != null) { objList.add((UserInfo) obj); } } catch (Exception e) { // TODO Auto-generated catch block } fis.close(); decoder.close(); return objList; } } <?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4"?> <plugin> <extension point="org.eclipse.ui.commands"> <category name="Inoherb Category" id="com.uds.inoherb.commands.category"> </category> <command name="法规标准库" categoryId="com.uds.inoherb.commands.category" id="com.uds.inoherb.commands.regulatoryStandards"> </command> <command name="产品标准" categoryId="com.uds.inoherb.commands.category" id="com.uds.inoherb.commands.productStandard"> </command> <command name="禁限用清单" categoryId="com.uds.inoherb.commands.category" id="com.uds.inoherb.commands.prohibitedList"> </command> <command name="全成分" categoryId="com.uds.inoherb.commands.category" id="com.uds.inoherb.commands.fullComposition"> </command> <command name="原料库" categoryId="com.uds.inoherb.commands.category" id="com.uds.inoherb.commands.rawMaterial"> </command> <command name="油脂类" categoryId="com.uds.inoherb.commands.category" id="com.uds.inoherb.commands.fadAndOil"> </command> <command name="乳化剂类" categoryId="com.uds.inoherb.commands.category" id="com.uds.inoherb.commands.emulsifier"> </command> <command name="香精类" categoryId="com.uds.inoherb.commands.category" id="com.uds.inoherb.commands.parfum"> </command> <command name="活性物类" categoryId="com.uds.inoherb.commands.category" id="com.uds.inoherb.commands.actives"> </command> </extension> <extension point="org.eclipse.ui.handlers"> <handler commandId="com.uds.inoherb.commands.regulatoryStandards" class="com.uds.inoherb.handlers.SampleHandler"> </handler> <handler commandId="com.uds.inoherb.commands.rawMaterial" class="com.uds.inoherb.handlers.SampleHandler"> </handler> <handler commandId="com.uds.inoherb.commands.productStandard" class="com.uds.inoherb.handlers.SampleHandler"> </handler> <handler commandId="com.uds.inoherb.commands.fadAndOil" class="com.uds.inoherb.handlers.SampleHandler"> </handler> </extension> <extension point="org.eclipse.ui.bindings"> <key commandId="com.uds.inoherb.commands.sampleCommand" contextId="org.eclipse.ui.contexts.window" sequence="M1+6" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"> </key> </extension> <extension point="org.eclipse.ui.menus"> <menuContribution locationURI="menu:org.eclipse.ui.main.menu?after=additions"> <menu label="企业电子数据库" id="com.uds.inoherb.menus.sampleMenu"> <menu label="法规标准库" id="com.uds.inoherb.menus.sampleMenu2"> <command commandId="com.uds.inoherb.commands.productStandard" id="com.uds.inoherb.menus.productStandard"> </command> <command commandId="com.uds.inoherb.commands.prohibitedList" id="com.uds.inoherb.menus.prohibitedList"> </command> <command commandId="com.uds.inoherb.commands.fullComposition" id="com.uds.inoherb.menus.fullComposition"> </command> </menu> <menu label="原料库" id="com.uds.inoherb.menus.sampleMenu3"> <command commandId="com.uds.inoherb.commands.fadAndOil" id="com.uds.inoherb.menus.fadAndOil"> </command> <command commandId="com.uds.inoherb.commands.emulsifier" id="com.uds.inoherb.menus.emulsifier"> </command> <command commandId="com.uds.inoherb.commands.parfum" id="com.uds.inoherb.menus.parfum"> </command> <command commandId="com.uds.inoherb.commands.actives" id="com.uds.inoherb.menus.actives"> </command> </menu> </menu> </menuContribution> </extension> </plugin> ```

将数据库中查出的数据,存入自己写的一个json格式中,该怎么做?

将数据库中查出的数据,存入自己写的一个json格式中,该怎么做?需要将自己 定义的json格式写个实体类吗?要的话该怎么写,是要将这个json数据传到前台解析的 { "attendance": [ { "name": "....", "show": [ { "date": [ { "am": "08:00" }, { "pm": "17:40" }, { "is": "0" } ] }, { "date": [ { "am": "08:00" }, { "pm": "17:40" }, { "is": "1" } ] } ] } ] }

form上传表单怎么把上传的参数也传到action

我今天写了一个发布新闻的表单,有一些参数,还有图片,我想上传到后台,可是有一个属性怎么也传不过去,一直是null,怎么解决呢?

代码规范器,你们能搞定吗?

<br />一、 代码规范器功能简介 <br />代码规范器根据统一的配置文件,对指定的程序文件进行规范化调整。 <br />配置文件体现了代码规范器的功能,描述了需要对程序文件进行何种统一规范化操作。由于配置文件是统一的,而程序文件却是不确定的,因此不需要把被规范化的程序文件标识放在配置文件中。 <br />随着代码规范器功能的完善,配置文件也将随之更改其格式与填写规范。因此,配置文件应有版本号,以识别其不同的格式与填写规范。 <br />配置文件的形式,可以是XML文件、纯文本文件、数据库等各种形式。但为了扩展性和小巧易用性,建议采用XML文件。配置文件的文件名由代码规范器的设计人员确定,固定不可变更。代码规范器中有且只有一个配置文件。 <br />程序文件类型:JAVA源程序、目标程序。 <br />规范化调整操作分为两类: <br /> 正调整 <br />根据配置文件的设置,在程序文件中的指定位置增加指定的内容。如果程序文件中的指定位置已经有指定的内容,代码规范器不再做增加动作。 <br /> 反调整 <br />根据配置文件的设置,在程序文件中的指定位置删除指定的内容。如果程序文件中的指定位置没有指定的内容,代码规范器不再做删除动作。 <br />二、 代码规范器0.1版功能清单 <br /> 增加类属性 <br />在程序文件类内增加新的属性。 <br />例如: <br />程序文件原来面貌: <br />public class DBCon { <br /> private ResultSet rs; <br /> …… <br />} <br />增加后的程序文件: <br />public class DBCon { <br />private Connection con; <br /> private ResultSet rs; <br /> …… <br />} <br /> 增加类方法及代码 <br />在程序文件类中增加新方法及代码。 <br />例如: <br />程序文件原来面貌: <br />public class DBCon { <br /> private ResultSet rs; <br /> …… <br />} <br />增加后的程序文件: <br />public class DBCon { <br />private ResultSet rs; <br />public DBCon() throws Exception { <br /> connection(); <br />} <br /> …… <br />} <br /> 在类方法内指定位置增加代码 <br />在程序文件类中指定的方法内的指定位置,增加代码。 <br />在方法内的指定位置,分为两种:方法内的最前部和最后部。 <br />三、 代码规范器使用方法 <br />代码规范器的使用方法有两种: <br /> 命令行方式 <br />格式:代码规范器 程序文件 调整操作分类 <br /> 其中,调整操作分类  “+”表示正调整 <br />“-”表示负调整 <br />例如,代码规范器的文件名为BUILD.EXE,程序文件的文件名TEST.JAVA,准备进行正调整,则命令行执行方式为:“BUILD TEST.JAVA +”。 <br /> 接口调用方式 <br />接口调用方式是提供给应用程序调用的方式。应用程序通过实例化代码规范器封装好的一个类,然后调用其中的指定方法,将需要进行调整的程序文件文件名和调整操作分类传递给该方法,实现对程序文件的调整。 <br />四、 要求 <br />编写、提交设计文档、源代码、目标代码。另需附一个通过接口调用方式的例子代码。 <br /> <br /> <br /> <br />一家公司笔试的题目,各位可以给点意见吗? <br />

关与jni多层调用C/C++

最近做一个项目,逻辑大概是这样子的。jni直接生成的接口(func.c),调用C代码已经成功(暂且叫做func1.c),func1.c还要调用一个func2.c。 我把func2.c,制作成了动态库的形式。func2.h有。我的这个func1.c怎么调用这个库。怎么尝试总是报错。 望前辈们指教下,我才注册的这个,么有BB。在此谢谢。

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属性赋值的时候,如果想应用<%=%>。那么一定不要另外添加其它字符,这样就会将<%=%>中的变量成功解析为对应方法的参数。 否则会将引号中的内容当成一个死的字符串作为参数。

多人聊天器求大神代码!

1. 对功能的规定 分必选项和任选项,其中,必选项是必须完成的,属于项目答辩的入口条件,所有人都要做,未完成者取消答辩资格; 任选项不是入口条件,但每完成一项都会加分,对于完成了必选项的同学,尽可能地多完成一些任选项,以期获得更高的答辩成绩。 如果所有项(包括必选和任选)都完成,那么功能分就是满分。 如果设计思路、界面效果、代码组织等方面有个性(或和别人的不同),则获得附加分。 1.1 服务器功能 1.1.1配置文件 属性:任选 描述:服务器的配置从配置文件中获取,内容包括服务器地址(服务器IP 和 port),具体格式如下: SERVER_IP = 192.168.1.11 PORT = 12012 注意:具体IP和port以本地为准 1.1.2账户文件 属性:必选 描述:客户端注册的用户名和密码需要服务器保存。必须完成下列所有情况: ●内容为用户名和用户密码列表; ●必须用文本形式; ●用户注册用户名重复,需要提示重新选择用户名 ●用户登录时用户名重复,需要提示重新选择用户名 ●用户名密码输入错误,应该提示。给3次连续错误机会,超过3次退出。 1.1.3支持多客户端 属性:必选 描述:基于tcp协议的客户端服务器通讯,服务器采用多线程支持多个客户端连接。 1.1.4业务功能 属性:必选 描述:群聊,单聊 1.1.5链表记录会话连接 属性:必选 描述:服务端使用链表记录当前客户端的会话连接,多个线程访问同一个链表,采用互斥锁来控制。 链表包含下列信息:客户端的ip地址、连接时间,用户名。 1.1.6链表记录动态维护 属性:任选 描述:服务端能够动态维护链表记录;服务器有命令供查询显示。 1.1 客户端功能 1.2.1注册 属性:必选 描述:客户端提供注册用户名,密码功能,用户名密码通过网络传输到服务器认证(用户名不可重复),认证通过后写入账户文件。 1.2.2登陆(认证) 属性:必选 描述:服务器和客户端增加用户密码登陆机制,包含如下流程: ●客户端把接受的用户名密码发送至服务器; ●服务器启动后从配置文件中读取用户信息形成数据表,根据此来验证密码。验证后返回认证结果给客户端(不可一个用户名同时登录) ●如果认证正确,服务器开始接受客户端的命令;认证错误重新认证(3次登陆错误退出) 1.3心跳机制 属性:必选 描述:客户端与服务端之间使用心跳机制,必须完成下列所有情况: ●客户端定时向服务端发送一个数据包(心跳包,内容不限,3秒间隔),证明自己活着; ●服务端显示来自某个IP地址客户端的心跳包; 1.4心跳异常 属性:任选 描述:服务器超过一定的时间没有收到客户端的心跳包(3秒间隔),连续5个包没有接收到则说明客户端出现问题,必须做出如下的处理: ●记录状况; ●断开连接; 1.5聊天功能 属性:必选 描述:两客户端之间能够直接文字通信(类似于QQ聊天), ●能够查询在线列表,具体信息从服务器的链表记录获得; ●可以和别的客户端聊天,发数据采用“用户名后面加数据”方式; 1.6日志文件 属性:任选 描述:服务端通过一个日志文件记录所有客户端连接、命令执行、断开信息(时间,IP地址,执行的命令,心跳包超时等)。 例如:“客户端连接时间 客户端IP地址 客户端的命令 数据包类型(就是上面1.6的data_type) 客户端发送的信息 ”。 2.对性能的规定 本系统在设计方面本着方便、实用的宗旨,性能方面应遵循如下原则: ●执行效率(时间): 软件运行应该尽量高效;避免没有必要的循环处理、重复处理; ●资源损耗(空间):设计尽量节约资源(内存、数组、链表等);不用的资源要及时释放; ●初始化: 变量、数组、内存块、链表节点(其next要置NULL)等都要初始化; ●健壮性:不能出现野指针、内存泄露、数组越界访问等等: ◎申请内存之后,应该立即检查指针值是否为NULL;动态内存的申请与释放必须配对,防止内存泄漏。释放了内存之后,立即将指针设置为NULL,防止产生“野指针”; ◎函数的入参必须进行有效性判断;用户输入、函数返回值(如果用到的话)都要判断; ◎switch-case一定要有default;if-else if等后要有else,除非if满足后返回或退出; ◎数组的下标不要发生“多1”或者“少1”操作。 3.对排版的规定 ●缩进要对齐; ●长行拆分; ●二元操作符的前后应当加空格,包括如下操作符: 赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如"="、"+=" ">="、"<="、"+"、"*"、"%"、"&&"、"||"、"<<", "^" 等; ●空行: ◎结构体 声明之后、每个函数定义结束之后都要加1行空行; ◎逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔; ◎一行代码只做一件事情; ◎"if"、"for"、"while"、"do"等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加 "{ }"; 4.对可维护性的规定 对可维护性的最终要求:别人能够轻松上手你的代码。 ●结构清晰: ◎模块化:对界面(显示)、菜单管理、逻辑管理、文件操作等等代码要独立,必须多个.java文件; ◎封装:一个函数只做一件事,函数功能要单一;一个函数不能超过50行; 避免重复、冗余代码; ◎代码块清晰。 ●变量命名规范,变量名应该具有自明性: ◎常量,枚举和宏定义命名 常量名,宏和枚举值由全大写字母组成,单词间通过下划线来界定; ◎函数的命名: 使用"动词"或者"动词+名词"(动宾词组)的形式,由一个或多个单词组成且以小写字母开头,以后每个单词的首字母必须大写 ◎变量的命名与定义 应当使用"名词"或者"形容词+名词",由一个或多个单词组成且以小写字母开头,以后每个单词之间用下划线隔开。 ●注释充分:变量、函数(包括参数、返回值)、代码功能块、一些复杂算法……等都需要 清晰明了地说明; 5.对个性的规定 把项目做出个性出来。下列各项中有和比人不同之处、或很有创意,即可认为有个性。独立设计的软件,一般都会出现一些个性。参考、抄袭不会出现个性。 ●设计思路:包括软件的整体架构、功能块的设计思路、函数封装等等; ●功能实现:从用户的角度,使用上发现与众不同的地方; ●其它方面;

EXT4中得fields问题

EXT.regModel('ProjectOpte', { fields : [ { name : 'id', type : 'int' }, { name : 'hpsoId', type : 'float' }, { name : 'hpsoState', type : 'long' }, { name : 'hpsoDate', type : 'date', dateFormat : 'Y-m-d//TH:i:s' }] }); 注:这是个js文件中得内容 请问这样写对吗?如不对请问该怎么写正确。 听我们组长说这就相当于封装类,只不过封装在js中但是我不知道float、long、date是不是这样写的,还有double该用什么类型,是不是float。还有如果有个参数是一个java类形式的,该怎么写?

spring2.5.6 配置 openJpa 异常

最近在做一个小列子,原本是用配置文件方式注入的,之后我想改为用注解的方式注入,问题就出现了。 错误代码如下: [code="java"]2010-2-4 22:18:04 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet default threw exception java.lang.IllegalArgumentException: entityManagerFactory or jpaTemplate is required at org.springframework.orm.jpa.support.JpaDaoSupport.checkDaoConfig(JpaDaoSupport.java:119) at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:671) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:610) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:499) at org.springframework.beans.factory.annotation.InjectionMetadata.injectMethods(InjectionMetadata.java:117) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:253) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:998) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:671) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:610) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1076) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:982) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties(AbstractAutowireCapableBeanFactory.java:329) at com.opensymphony.xwork2.spring.SpringObjectFactory.autoWireBean(SpringObjectFactory.java:168) at com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:155) at com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:129) at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:143) at com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:113) at com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:275) at com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:365) at com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38) at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:83) at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455) at com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:74) at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189) at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)[code="java"][/code] at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:494) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419) 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:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 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:263) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)[/code] java代码如下: [code="java"] @Repository public class ExamDAOImpl extends JpaDaoSupport implements ExamDAO{ private String hql = "from Exam a "; //新增试卷 public void create(Exam exam) { this.getJpaTemplate().persist(exam); } //修改试卷 public void update(Exam exam) { this.getJpaTemplate().merge(exam); } //删除试卷 public void delete(Exam exam) { this.getJpaTemplate().remove(this.getJpaTemplate().merge(exam)); } //根据id获取试卷信息 public Exam query(int id) { Exam exam = this.getJpaTemplate().find(Exam.class, id); return exam; } //获取所有试卷的信息 @SuppressWarnings("unchecked") public List<Exam> queryList() { List<Exam> list = new ArrayList<Exam>(); list = this.getJpaTemplate().find(hql); return list; } } @Namespace("/") @Results({@Result("jsp/examManagement.jsp"), @Result(name="createQuestion", value = "jsp/questionManagement.jsp"), @Result(name="exam", value = "jsp/exam.jsp"), @Result(name="examResult", value = "jsp/examResult.jsp")}) public class ExamAction extends ActionSupport { private static final long serialVersionUID = 5192939935859483841L; //新增试卷信息 public String create() { HttpServletRequest req = ServletActionContext.getRequest(); HttpServletResponse res = ServletActionContext.getResponse(); //获取试卷信息 Exam exam = getExamBean(req, res); //进行新增 getExamService().create(exam); //获取已有的试卷信息 List<Exam> listExams = getExamService().queryList(); //将已有的试卷信息传递给页面 req.setAttribute("listExams", listExams); //存放消息 req.setAttribute("msg", "新增成功"); return SUCCESS; } //修改试卷信息 public String update() { HttpServletRequest req = ServletActionContext.getRequest(); HttpServletResponse res = ServletActionContext.getResponse(); //获取试卷信息 Exam exam = getExamBean(req, res); //进行修改 getExamService().update(exam); //获取已有的试卷信息 List<Exam> listExams = getExamService().queryList(); //将已有的试卷信息传递给页面 req.setAttribute("listExams", listExams); //存放消息 req.setAttribute("msg", "修改成功"); return SUCCESS; } //删除试卷信息 public String delete() { HttpServletRequest req = ServletActionContext.getRequest(); HttpServletResponse res = ServletActionContext.getResponse(); //获取试卷信息 Exam exam = getExamBean(req, res); //进行删除 getExamService().delete(exam); //获取已有的试卷信息 List<Exam> listExams = getExamService().queryList(); //将已有的试卷信息传递给页面 req.setAttribute("listExams", listExams); //存放消息 req.setAttribute("msg", "删除成功"); return SUCCESS; } //设定该试卷下的题目 public String createQuestion() { HttpServletRequest req = ServletActionContext.getRequest(); HttpServletResponse res = ServletActionContext.getResponse(); //获取试卷信息 Exam exam = getExamBean(req, res); exam = getExamService().query(exam.getId()); //获取该试卷题目下已有的题目 Set<Question> listQuestions = exam.getQuestion(); //将该试卷题目下已有的题目信息传递给页面 req.setAttribute("listQuestions", listQuestions); //将该试卷信息传递给页面 req.setAttribute("exam", exam); //存放消息 req.setAttribute("msg", "欢迎进入" + exam.getName() + "试题题目管理系统"); return "createQuestion"; } //进行考试 public String exam() { HttpServletRequest req = ServletActionContext.getRequest(); HttpServletResponse res = ServletActionContext.getResponse(); //获取试卷信息 Exam exam = getExamBean(req, res); exam = getExamService().query(exam.getId()); //将该试卷信息传递给页面 req.setAttribute("exam", exam); //存放消息 req.setAttribute("msg", "欢迎您开始《" + exam.getName() + "》试卷"); return "exam"; } //统计试卷成绩 public String submitExam() { HttpServletRequest req = ServletActionContext.getRequest(); //获取试卷信息 Exam exam = new Exam(); exam = getExamService().query(Integer.valueOf(req.getParameter("examId"))); //定义该此考试的分数 float result = 0f; //获取该试卷下的题目 Set<Question> listQuestions = exam.getQuestion(); Iterator<Question> iterator = listQuestions.iterator(); //获取每个题目下的项目 while (iterator != null && iterator.hasNext()) { Question question = (Question)iterator.next(); //获取该题目下的项目 List<QuestionItem> listQuestionItems = question.getQuestionItem(); //获取用户选择的题目下的项目 Assert.notNull((String)req.getParameter(question.getId() + "")); int questionId = Integer.valueOf((String)req.getParameter(question.getId() + "")); //累计用户提交的题目下的项目 for (int j = 0; listQuestionItems != null && j < listQuestionItems.size(); j++) { QuestionItem questionItem = (QuestionItem)listQuestionItems.get(j); if(questionId == questionItem.getId()) { if (questionItem.getIsOk() == 1) { //统计成绩 result = result + question.getPoint(); break; } } } } //将该试卷信息传递给页面 req.setAttribute("exam", exam); //将成绩传递给页面 req.setAttribute("result", result); //存放消息 req.setAttribute("msg", "欢迎您查看《" + exam.getName() + "》试卷的成绩"); return "examResult"; } public String index() { HttpServletRequest req = ServletActionContext.getRequest(); //获取已有的试卷信息 List<Exam> listExams = getExamService().queryList(); //将已有的试卷信息传递给页面 //System.out.println("listExams.size==="+listExams.size()); req.setAttribute("listExams", listExams); req.setAttribute("msg", "欢迎进入试卷题目管理系统"); return SUCCESS; } //获取试卷业务逻辑 public ExamService getExamService(){ return examService; } //设定试卷业务逻辑 @Autowired public void setExamService(ExamService examService){ this.examService = examService; } private ExamService examService; //获取试题项目业务逻辑 public QuestionItemService getQuestionItemService(){ return questionItemService; } //设定试题项目业务逻辑 @Autowired public void setQuestionItemService(QuestionItemService questionItemService){ this.questionItemService = questionItemService; } private QuestionItemService questionItemService; //封装试卷基本信息 public Exam getExamBean(HttpServletRequest req, HttpServletResponse res) { Exam exam = new Exam(); try { //判断是否是新增或者修改还是删除,如果是新增则不需要id String hh = req.getParameter("examId" + (String)req.getParameter("checkbox") + ""); if (!"".equals(hh) && hh != null) { exam.setId(Integer.valueOf(req.getParameter("examId" + (String)req.getParameter("checkbox") + ""))); } //获取基本信息 exam.setName(((String)req.getParameter("name" + (String)req.getParameter("checkbox") + ""))); } catch (Exception ex) { ex.printStackTrace(); } return exam; } } [/code] struts和spring的配置文件如下: [code="java"] <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!--表示可以使用动态方法调用,即userAction!delete.action的形式--> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!--表示struts处于开发状态--> <constant name="struts.devMode" value="true" /> <constant name="struts.convention.classes.reload" value="true" /> <constant name="struts.objectFactory.spring.autoWire" value="type" /> <!--使用默认的命名空间、即根目录/,在访问的时候,直接http://localhost:8080/webExam/userAction!delete.action--> <!--<package name="default" extends="struts-default"> 定义动态方法调用examAction!*.action <action name="examAction" class="examAction"> <result>jsp/examManagement.jsp</result> <result name="createQuestion">jsp/questionManagement.jsp</result> <result name="exam">jsp/exam.jsp</result> <result name="examResult">jsp/examResult.jsp</result> </action> 定义动态方法调用questionAction!*.action <action name="questionAction" class="questionAction"> <result>jsp/questionManagement.jsp</result> <result name="createItem">jsp/questionItemManagement.jsp</result> </action> 定义动态方法调用questionItemAction!*.action <action name="questionItemAction" class="questionItemAction"> <result>jsp/questionItemManagement.jsp</result> </action> </package>--> </struts> <?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:http-conf="http://cxf.apache.org/transports/http/configuration" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" default-lazy-init="true"> <context:component-scan base-package="com.webExam.dao.impl,com.webExam.service.impl"/> <tx:annotation-driven transaction-manager="transactionManager"/> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory" /> </bean> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> <property name="persistenceUnitName" value="entityManager"/> <property name="jpaProperties"> <props></props> </property> </bean> </beans> [/code] persistence文件如下: [code="java"]<?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"> <!--定义持久单元--> <persistence-unit name="entityManager" transaction-type="RESOURCE_LOCAL"> <!--这里采用Hibernate提供的持久化类--> <provider>org.hibernate.ejb.HibernatePersistence</provider> <!--定义持久化属性--> <properties> <!--定义方言、fetch深度、是否显示sql--> <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" /> <property name="hibernate.max_fetch_depth" value="3" /> <property name="hibernate.show_sql" value="true" /> <!--定义是否自动生成表,create表示每次加载都重新生成,update表示每次加载只是更新表--> <property name="hibernate.hbm2ddl.auto" value="update" /> <!--定义数据库连接的相关属性--> <property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver" /> <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:FLOW" /> <!--定义数据库连接的用户名、密码等--> <property name="hibernate.connection.username" value="arch" /> <property name="hibernate.connection.password" value="arch" /> </properties> </persistence-unit> </persistence>[/code]

linux下利用/proc进行进程树的打印

在linux下利用c语言实现的进程树的打印,主要通过/proc下的目录中的进程文件,获取status中的进程信息内容,然后利用递归实现进程树的打印

设计模式(JAVA语言实现)--20种设计模式附带源码

课程亮点: 课程培训详细的笔记以及实例代码,让学员开始掌握设计模式知识点 课程内容: 工厂模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、原型模型、代理模式、单例模式、适配器模式 策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式 课程特色: 笔记设计模式,用笔记串连所有知识点,让学员从一点一滴积累,学习过程无压力 笔记标题采用关键字标识法,帮助学员更加容易记住知识点 笔记以超链接形式让知识点关联起来,形式知识体系 采用先概念后实例再应用方式,知识点深入浅出 提供授课内容笔记作为课后复习以及工作备查工具 部分图表(电脑PC端查看):

Python数据分析与挖掘

92讲视频课+16大项目实战+源码+¥800元课程礼包+讲师社群1V1答疑+社群闭门分享会=99元 &nbsp; 为什么学习数据分析? &nbsp; &nbsp; &nbsp; 人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。 &nbsp; &nbsp; &nbsp; 从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。 &nbsp;&nbsp; 本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。 &nbsp; 二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 &nbsp; 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。 &nbsp; 四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。 &nbsp; 五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

广工操作系统课程设计(文档+代码+可执行文件)

实现作业调度(先来先服务)、进程调度功能(时间片轮转) 实现内存管理功能(连续分配)。 实现文件系统功能(选作) 这些功能要有机地连接起来

Only老K说-爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

Python代码实现飞机大战

文章目录经典飞机大战一.游戏设定二.我方飞机三.敌方飞机四.发射子弹五.发放补给包六.主模块 经典飞机大战 源代码以及素材资料(图片,音频)可从下面的github中下载: 飞机大战源代码以及素材资料github项目地址链接 ————————————————————————————————————————————————————————— 不知道大家有没有打过飞机,喜不喜欢打飞机。当我第一次接触这个东西的时候,我的内心是被震撼到的。第一次接触打飞机的时候作者本人是身心愉悦的,因为周边的朋友都在打飞机, 每

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

apache-jmeter-5.1.1(Requires Java 8+).zip

。Apache JMeter 5.1.1 (Requires Java 8+),需要jdk8以上的版本。

数通HCNP中文理论全套教材.rar

内涵HCNP-IENP中文理论书-内文,

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

图书管理系统(Java + Mysql)我的第一个完全自己做的实训项目

图书管理系统 Java + MySQL 完整实训代码,MVC三层架构组织,包含所有用到的图片资源以及数据库文件,大三上学期实训,注释很详细,按照阿里巴巴Java编程规范编写

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

C/C++学习指南全套教程

C/C++学习的全套教程,从基本语法,基本原理,到界面开发、网络开发、Linux开发、安全算法,应用尽用。由毕业于清华大学的业内人士执课,为C/C++编程爱好者的教程。

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

2021考研数学张宇基础30讲.pdf

张宇:博士,全国著名考研数学辅导专家,教育部“国家精品课程建设骨干教师”,全国畅销书《张宇高等数学18讲》《张宇线性代数9讲》《张宇概率论与数理统计9讲》《张宇考研数学题源探析经典1000题》《张宇考

专为程序员设计的数学课

<p> 限时福利限时福利,<span>15000+程序员的选择!</span> </p> <p> 购课后添加学习助手(微信号:csdn590),按提示消息领取编程大礼包!并获取讲师答疑服务! </p> <p> <br> </p> <p> 套餐中一共包含5门程序员必学的数学课程(共47讲) </p> <p> 课程1:《零基础入门微积分》 </p> <p> 课程2:《数理统计与概率论》 </p> <p> 课程3:《代码学习线性代数》 </p> <p> 课程4:《数据处理的最优化》 </p> <p> 课程5:《马尔可夫随机过程》 </p> <p> <br> </p> <p> 哪些人适合学习这门课程? </p> <p> 1)大学生,平时只学习了数学理论,并未接触如何应用数学解决编程问题; </p> <p> 2)对算法、数据结构掌握程度薄弱的人,数学可以让你更好的理解算法、数据结构原理及应用; </p> <p> 3)看不懂大牛代码设计思想的人,因为所有的程序设计底层逻辑都是数学; </p> <p> 4)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; </p> <p> 5)想修炼更好的编程内功,在遇到问题时可以灵活的应用数学思维解决问题。 </p> <p> <br> </p> <p> 在这门「专为程序员设计的数学课」系列课中,我们保证你能收获到这些:<br> <br> <span> </span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">①价值300元编程课程大礼包</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">②应用数学优化代码的实操方法</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">③数学理论在编程实战中的应用</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">④程序员必学的5大数学知识</span> </p> <p class="ql-long-24357476"> <span class="ql-author-24357476">⑤人工智能领域必修数学课</span> </p> <p> <br> 备注:此课程只讲程序员所需要的数学,即使你数学基础薄弱,也能听懂,只需要初中的数学知识就足矣。<br> <br> 如何听课? </p> <p> 1、登录CSDN学院 APP 在我的课程中进行学习; </p> <p> 2、登录CSDN学院官网。 </p> <p> <br> </p> <p> 购课后如何领取免费赠送的编程大礼包和加入答疑群? </p> <p> 购课后,添加助教微信:<span> csdn590</span>,按提示领取编程大礼包,或观看付费视频的第一节内容扫码进群答疑交流! </p> <p> <img src="https://img-bss.csdn.net/201912251155398753.jpg" alt=""> </p>

DDR5_Draft_Spec_Rev05c.pdf

DDR5 spec

Java面试史上最全的JAVA专业术语面试100问 (前1-50)

前言: 说在前面, 面试题是根据一些朋友去面试提供的,再就是从网上整理了一些。 先更新50道,下一波吧后面的也更出来。 求赞求关注!! 废话也不多说,现在就来看看有哪些面试题 1、面向对象的特点有哪些? 抽象、继承、封装、多态。 2、接口和抽象类有什么联系和区别? 3、重载和重写有什么区别? 4、java有哪些基本数据类型? 5、数组有没有length()方法?String有没有length()方法? 数组没有length()方法,它有length属性。 String有length()方法。 集合求长度用

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

Python界面版学生管理系统

前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下

2019数学建模A题高压油管的压力控制 省一论文即代码

2019数学建模A题高压油管的压力控制省一完整论文即详细C++和Matlab代码,希望对同学们有所帮助

4小时玩转微信小程序——基础入门与微信支付实战

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

相关热词 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行 c# 循环给数组插入数据 c# 多线程死锁的例子 c# 钉钉读取员工排班 c# label 不显示 c#裁剪影像 c#工作进程更新ui
立即提问