第六周作业 略谈jsp

1、jsp有哪些内置对象?作用分别是什么?

答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):

request 用户端请求,此请求会包含来自GET/POST请求的参数

response 网页传回用户端的回应

pageContext 网页的属性是在这里管理

session 与请求有关的会话期

application servlet 正在执行的内容

out 用来传送回应的输出

config servlet的构架部件

page JSP网页本身

exception 针对错误网页,未捕捉的例外

2、jsp有哪些动作?作用分别是什么?

答:JSP共有以下6种基本动作

jsp:include:在页面被请求的时候引入一个文件。

jsp:useBean:寻找或者实例化一个JavaBean。

jsp:setProperty:设置JavaBean的属性。

jsp:getProperty:输出某个JavaBean的属性。

jsp:forward:把请求转到一个新的页面。

jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

3、JSP中动态INCLUDE与静态INCLUDE的区别?

答:动态INCLUDE用jsp:include动作实现

<jsp:include page=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@ include file=included.htm %>

4、两种跳转方式分别是什么?有什么区别?

答:有两种,分别为:

<jsp:include page=included.jsp flush=true>

<jsp:forward page= nextpage.jsp/>

前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。

Servlet方面

1、说一说Servlet的生命周期?

答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。

2、Servlet版本间(忘了问的是哪两个版本了)的不同?

3、JAVA SERVLET API中forward() 与redirect()的区别?

答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用

sendRedirect()方法。

4、Servlet的基本架构

 1 public class ServletName extends HttpServlet {
 2
 3 public void doPost(HttpServletRequest request, HttpServletResponse response) throws
 4
 5 ServletException, IOException {
 6
 7 }
 8
 9 public void doGet(HttpServletRequest request, HttpServletResponse response) throws
10
11 ServletException, IOException {
12
13 }
14
15 } 

Jdbc、Jdo方面

1、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询.

答:程序如下:

package hello.ant;

  1 import java.sql.*;
  2
  3 public class jdbc
  4
  5 {
  6
  7 String dbUrl=jdbc:oracle:thin:@127.0.0.1:1521:orcl;
  8
  9 String theUser=admin;
 10
 11 String thePw=manager;
 12
 13 Connection c=null;
 14
 15 Statement conn;
 16
 17 ResultSet rs=null;
 18
 19 public jdbc()
 20
 21 {
 22
 23 try{
 24
 25 Class.forName(oracle.jdbc.driver.OracleDriver).newInstance();
 26
 27 c = DriverManager.getConnection(dbUrl,theUser,thePw);
 28
 29 conn=c.createStatement();
 30
 31 }catch(Exception e){
 32
 33 e.printStackTrace();
 34
 35 }
 36
 37 }
 38
 39 public boolean executeUpdate(String sql)
 40
 41 {
 42
 43 try
 44
 45 {
 46
 47 conn.executeUpdate(sql);
 48
 49 return true;
 50
 51 }
 52
 53 catch (SQLException e)
 54
 55 {
 56
 57 e.printStackTrace();
 58
 59 return false;
 60
 61 }
 62
 63 }
 64
 65 public ResultSet executeQuery(String sql)
 66
 67 {
 68
 69 rs=null;
 70
 71 try
 72
 73 {
 74
 75 rs=conn.executeQuery(sql);
 76
 77 }
 78
 79 catch (SQLException e)
 80
 81 {
 82
 83 e.printStackTrace();
 84
 85 }
 86
 87 return rs;
 88
 89 }
 90
 91 public void close()
 92
 93 {
 94
 95 try
 96
 97 {
 98
 99 conn.close();
100
101 c.close();
102
103 }
104
105 catch (Exception e)
106
107 {
108
109 e.printStackTrace();
110
111 }
112
113 }
114
115 public static void main(String[] args)
116
117 {
118
119 ResultSet rs;
120
121 jdbc conn = new jdbc();
122
123 rs=conn.executeQuery(select * from test);
124
125 try{
126
127 while (rs.next())
128
129 {
130
131 System.out.println(rs.getString(id));
132
133 System.out.println(rs.getString(name));
134
135 }
136
137 }catch(Exception e)
138
139 {
140
141 e.printStackTrace();
142
143 }
144
145 }
146
147 } 

2、Class.forName的作用?为什么要用?

答:调用该访问返回一个以字符串指定类名的类的对象。

3、Jdo是什么?

答:JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

4、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。

答:一种分页方法

  1 <%
  2
  3 int i=1;
  4
  5 int numPages=14;
  6
  7 String pages = request.getParameter(page) ;
  8
  9 int currentPage = 1;
 10
 11 currentPage=(pages==null)?(1):{Integer.parseInt(pages)}
 12
 13 sql = select count(*) from tables;
 14
 15 ResultSet rs = DBLink.executeQuery(sql) ;
 16
 17 while(rs.next()) i = rs.getInt(1) ;
 18
 19 int intPageCount=1;
 20
 21 intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);
 22
 23 int nextPage ;
 24
 25 int upPage;
 26
 27 nextPage = currentPage+1;
 28
 29 if (nextPage>=intPageCount) nextPage=intPageCount;
 30
 31 upPage = currentPage-1;
 32
 33 if (upPage<=1) upPage=1;
 34
 35 rs.close();
 36
 37 sql=select * from tables;
 38
 39 rs=DBLink.executeQuery(sql);
 40
 41 i=0;
 42
 43 while((i<numPages*(currentPage-1))&&rs.next()){i++;}
 44
 45 %>
 46
 47 //输出内容
 48
 49 //输出翻页连接
 50
 51 合计:<%=currentPage%>/<%=intPageCount%><a href=List.jsp?page=1>第一页</a><a
 52
 53 href=List.jsp?page=<%=upPage%>>上一页</a>
 54
 55 <%
 56
 57 for(int j=1;j<=intPageCount;j++){
 58
 59 if(currentPage!=j){
 60
 61 %>
 62
 63 <a href=list.jsp?page=<%=j%>>[<%=j%>]</a>
 64
 65 <%
 66
 67 }else{
 68
 69 out.println(j);
 70
 71 }
 72
 73 }
 74
 75 %>
 76
 77 <a href=List.jsp?page=<%=nextPage%>>下一页</a><a href=List.jsp?page=<%=intPageCount%>>最后页
 78
 79 </a>
 80
 81
 82
 83 Xml方面
 84
 85
 86
 87 1、xml有哪些解析技术?区别是什么?
 88
 89 答:有DOM,SAX,STAX等
 90
 91 DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
 92
 93 STAX:Streaming API for XML (StAX)
 94
 95
 96
 97 2、你在项目中用到了xml技术的哪些方面?如何实现的?
 98
 99 答:用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。
100
101
102
103 3、用jdom解析xml文件时如何解决中文问题?如何解析?
104
105 答:看如下代码,用编码方式加以解决
106
107 package test;
108
109 import java.io.*;
110
111 public class DOMTest
112
113 {
114
115 private String inFile = c:\people.xml;
116
117 private String outFile = c:\people.xml;
118
119 public static void main(String args[])
120
121 {
122
123 new DOMTest();
124
125
126
127 }
128
129 public DOMTest()
130
131 {
132
133 try
134
135 {
136
137 javax.xml.parsers.DocumentBuilder builder =
138
139 javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
140
141 org.w3c.dom.Document doc = builder.newDocument();
142
143 org.w3c.dom.Element root = doc.createElement(老师);
144
145 org.w3c.dom.Element wang = doc.createElement(王);
146
147 org.w3c.dom.Element liu = doc.createElement(刘);
148
149 wang.appendChild(doc.createTextNode(我是王老师));
150
151 root.appendChild(wang);
152
153 doc.appendChild(root);
154
155 javax.xml.transform.Transformer transformer =
156
157 javax.xml.transform.TransformerFactory.newInstance().newTransformer();
158
159 transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, gb2312);
160
161 transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, yes);
162
163 transformer.transform(new javax.xml.transform.dom.DOMSource(doc),
164
165 new
166
167 javax.xml.transform.stream.StreamResult(outFile));
168
169 }
170
171 catch (Exception e)
172
173 {
174
175 System.out.println (e.getMessage());
176
177 }
178
179 }
180
181 }
182
183 4、编程用JAVA解析XML的方式.
184
185 答:用SAX方式解析XML,XML文件如下:
186
187 <?xml version=1.0 encoding=gb2312?>
188
189 <person>
190
191 <name>王小明</name>
192
193 <college>信息学院</college>
194
195 <telephone>6258113</telephone>
196
197 <notes>男,1955年生,博士,95年调入海南大学</notes>
198
199 </person>
200
201 事件回调类SAXHandler.java
202
203 import java.io.*;
204
205 import java.util.Hashtable;
206
207 import org.xml.sax.*;
208
209 public class SAXHandler extends HandlerBase
210
211 {
212
213 private Hashtable table = new Hashtable();
214
215 private String currentElement = null;
216
217 private String currentValue = null;
218
219 public void setTable(Hashtable table)
220
221 {
222
223 this.table = table;
224
225 }
226
227 public Hashtable getTable()
228
229 {
230
231 return table;
232
233 }
234
235 public void startElement(String tag, AttributeList attrs)
236
237 throws SAXException
238
239 {
240
241 currentElement = tag;
242
243 }
244
245 public void characters(char[] ch, int start, int length)
246
247 throws SAXException
248
249 {
250
251 currentValue = new String(ch, start, length);
252
253 }
254
255 public void endElement(String name) throws SAXException
256
257 {
258
259 if (currentElement.equals(name))
260
261 table.put(currentElement, currentValue);
262
263 }
264
265
266
267 }
268
269 JSP内容显示源码,SaxXml.jsp:
270
271 <HTML>
272
273 <HEAD>
274
275 <TITLE>剖析XML文件people.xml</TITLE>
276
277 </HEAD>
278
279 <BODY>
280
281 <%@ page errorPage=ErrPage.jsp
282
283 contentType=text/html;charset=GB2312 %>
284
285 <%@ page import=java.io.* %>
286
287 <%@ page import=java.util.Hashtable %>
288
289 <%@ page import=org.w3c.dom.* %>
290
291 <%@ page import=org.xml.sax.* %>
292
293 <%@ page import=javax.xml.parsers.SAXParserFactory %>
294
295 <%@ page import=javax.xml.parsers.SAXParser %>
296
297 <%@ page import=SAXHandler %>
298
299 <%
300
301 File file = new File(c:\people.xml);
302
303 FileReader reader = new FileReader(file);
304
305 Parser parser;
306
307 SAXParserFactory spf = SAXParserFactory.newInstance();
308
309 SAXParser sp = spf.newSAXParser();
310
311 SAXHandler handler = new SAXHandler();
312
313 sp.parse(new InputSource(reader), handler);
314
315 Hashtable hashTable = handler.getTable();
316
317 out.println(<TABLE BORDER=2><CAPTION>教师信息表</CAPTION>);
318
319 out.println(<TR><TD>姓名</TD> + <TD> +
320
321 (String)hashTable.get(new String(name)) + </TD></TR>);
322
323 out.println(<TR><TD>学院</TD> + <TD> +
324
325 (String)hashTable.get(new String(college))+</TD></TR>);
326
327 out.println(<TR><TD>电话</TD> + <TD> +
328
329 (String)hashTable.get(new String(telephone)) + </TD></TR>);
330
331 out.println(<TR><TD>备注</TD> + <TD> +
332
333 (String)hashTable.get(new String(notes)) + </TD></TR>);
334
335 out.println(</TABLE>);
336
337 %>
338
339 </BODY>
340
341 </HTML> 

EJB方面

1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别?

答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS.....

2、EJB与JAVA BEAN的区别?

答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java

Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

3、EJB的基本架构

答:一个EJB包括三个部分:

Remote Interface 接口的代码

 1 package Beans;
 2
 3 import javax.ejb.EJBObject;
 4
 5 import java.rmi.RemoteException;
 6
 7 public interface Add extends EJBObject
 8
 9 {
10
11 //some method declare
12
13 }
14
15 Home Interface 接口的代码
16
17 package Beans;
18
19 import java.rmi.RemoteException;
20
21 import jaax.ejb.CreateException;
22
23 import javax.ejb.EJBHome;
24
25 public interface AddHome extends EJBHome
26
27 {
28
29 //some method declare
30
31 }
32
33 EJB类的代码
34
35 package Beans;
36
37 import java.rmi.RemoteException;
38
39 import javax.ejb.SessionBean;
40
41 import javx.ejb.SessionContext;
42
43 public class AddBean Implements SessionBean
44
45 {
46
47 //some method declare
48
49 }  

J2EE,MVC方面

1、MVC的各个部分都有那些技术来实现?如何实现?

答:MVC是Model-View-Controller的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), View 是应用的表示面(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

2、应用服务器与WEB SERVER的区别?

3、J2EE是什么?

答:Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

4、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。

时间: 2024-10-10 18:06:27

第六周作业 略谈jsp的相关文章

第六周作业。

第六周作业.额,暂时不知道写什么好.那就写写如何翻越GFW   (科学上网)的教程吧.基于Shadow socks的教程.可能不是第一个,也可能不是最后一个.但是这也算是科普吧.毕竟连翻越GWF(科学上网)能力都没有何必谈的上是一个好的Programer呢?. ========================================================== 顺便说一句:Fk GFW. ==============================================

2017-2018-2 20179215《网络攻防实践》第六周作业

2017-2018-2 20179215<网络攻防实践> 第六周学习总结 课本学习笔记 一.TCP/IP网络协议攻击 1.网络安全的属性:机密性 .完整性 .可用性 .真实性 .不可抵赖性 . 2.网络攻击的基本模式分为:截获(嗅探 与 监听) .中断(拒绝服务) .篡改(数据包篡改) .伪造(欺骗) . 3.TCP/IP网络协议栈在设计时采用了分层模型,分为:网络接口层 .互联层 .传输层 .应用层.每一层当中都有针对破坏网络安全属性为目的的攻击技术.每一层所涉及的主要协议: 网络接口层:以

第六周作业-UML在详细设计阶段的使用心得&amp;&amp;UML建模与软件开发过程模型

这周又到了我们项目小组进行详细设计的阶段了.据了解呢,不大喜欢把详细设计做的太细,以便发挥下自己的创造力(初级设计能力).但是借鉴其他国家(如日本)的公司,详细设计不但详细到类级别,甚至每个方法都还有伪代码,这种感觉确实是太不能发挥自己的主观能动性了.不过仁者见仁,智者见智,因为一个初级的程序猿如果先是看别人的设计,然后再开始自己的设计,也许学习曲线就不会那么陡峭,日子也会过的舒服一点儿也未可知. 在这次的作业中我谈到的就是UML在项目实施中的使用心得(详细设计阶段),以及下面的一部分扩展知识:

第六周作业:《人月神话》对我做项目实践的启示(一)

<人月神话>这本书有两个老师都有给我们推荐,第一个老师推荐时不以为然,第二个老师也推荐时,自己感觉应该是挺重要的吧,于是去图书馆借了这本书来看,刚借回来时,总觉得时间不够.作业很多,也没来的及看,就一直搁置在了那里,直到上周,在我们的项目实践开始近三周,但进度却一直赶不上来的情况下,看到了这本书,才拿起来看.目前还没看完,先写一点儿领悟到的东西. 作者从焦油坑,提出项目失败的表现,把过去几十年的大型系统开发比作一个炼焦坑,各种团队一个个地淹没在焦油坑,他们都试图解决面对的问题,但他们都必须去了

2016-9-11第六周作业

cp [OPTION]... SOURCE(原文件)... DIRECTORY(目录) sed [options] 'command' file(s) -i∶直接修改读取的档案内容,而不是由萤幕输出. vi中的末行模式: #,+#从左侧#表示的行起始,加上右侧#表示的行数: %:全文 s:在末行模式下完成查找替换操作s/要查找的内容/替换为的内容/修饰符要查找的内容:可使用模式替换为的内容:不能使用模式,但可以使用\1,\2,...等后向引用符号:还可以使用"g"引用前面查找时查找到的

软件质量保证与测试第六周作业

作业内容:本周在进行项目开发的过程中,我接触到了JDBC(Java Data Base Connectivity,java数据库连接),它是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC可以为多种数据库提供统一的访问,简单来说JDBC就是用来连接java和数据库的桥梁,体现了Java“编写一次,处处运行”的高大上精神.连接到oracle数据库之后,我在同学的指导下进行了慕课网JDBC视频的学习 http://www.

第六周作业 项目开发随笔

上周我们讨论过后为了解决这个情况我们找了个地方便于我们的开发和讨论, 我们积蓄已久的问题在那天基本解决了,进度瞬间就赶上来了, 我们的士气也变得高涨了起来,连续去了三天每次都很晚回寝室,拜此所赐我的作业基本上没动, 不过这不是重点我们的项目基本框架和逻辑已经完成了,要录制的动画资源和图片也找好了,虽然很想把截图丢上来展示一番 但是毕竟大神太多被嘲讽就不好了. 但是有一点还是挺伤脑经的,我们发现cocos的预制资源中的脚本是不能添加节点的,游戏中很多的东西都需要预先加载好... 所以有很多东西都必

第六周作业-JSTL标签库

JSP页面作为内嵌java的Html简化了Servlet在控制页面显示的语法,但JSP脚本中的表达式功能不够强大,语法也稍显繁杂,EL(Expression Language)表达式语言的出现能够大大简化JSP页面中的JAVA代码,配合JSTL核心标签库,让JSP更为灵活易用. JSTL(JSP Standard Tag Library,JSP标准标签库)是一个由Apache基金会不断完善的开源JSP标签库. JSTL标签根据其功能一般分为以下五类: 1.核心标签库(Core Tags) 2.格

megeedu Linux+Python高级运维班 3期 第六周作业

本周作业内容: 1.复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#: [[email protected] ~]# cp /etc/rc.d/rc.sysinit /tmp/    #复制文件 [[email protected] ~]# vim /tmp/rc.sysinit          #编辑文件 :%s/^[[:space:]]/#&/                      #末行模式下