第六周作业 略谈jsp

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

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

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

response 网页传回用户端的回应 

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

session 与请求有关的会话期 

application servlet 正在执行的内容 

out 用来传送回应的输出 

config servlet的构架部件 

page JSP网页本身 

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

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

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

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

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

jsp:setProperty:设置JavaBean的属性。 

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

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

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

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

答:动态INCLUDEjsp:include动作实现 

<jsp:include page=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数 静态INCLUDEinclude伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@ 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,servicedestroy方法表达。 

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

3JAVA SERVLET APIforward() redirect()的区别? 

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

sendRedirect()方法。 

4Servlet的基本架构 

 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 } 
View Code

JdbcJdo方面 

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

:程序如下: 

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 } 
View Code

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

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

3Jdo是什么

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

EJB方面 

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

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

2EJBJAVA 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必须被布署在诸如WebspereWebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 

3EJB的基本架构 

:一个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 }  
View Code

J2EE,MVC方面 

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

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

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

3J2EE是什么? 

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

4WEB SERVICE名词解释。JSWDL开发包的介绍。JAXPJAXM的解释。SOAPUDDI,WSDL解释。

原文地址:https://www.cnblogs.com/he-123/p/5376357.html