`
wu_quanyin
  • 浏览: 208228 次
  • 性别: Icon_minigender_1
  • 来自: 福建省
社区版块
存档分类
最新评论

J2EE基础---知识积累

    博客分类:
  • J2EE
阅读更多

一,页面跳转(forward,sendRedire)与包含(include)的理解

1,问题(getInputStream() has already been call for response 异常)

Servlet(认真查看文字内容)

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		//可以执行
		req.getRequestDispatcher("./test.jsp").forward(req, resp);
		//不可以执行,包含在同一个页面,两个写入流对其写入 
		//req.getRequestDispatcher("./test.jsp").include(req, resp);
		//可以执行
		//resp.sendRedirect("./test.jsp");
		PrintWriter pw=(PrintWriter)resp.getWriter();
		pw.write("查看是否有响应到客户端的页面中...");//forward时将不会显示在页面上
		System.out.println("始终都会执行");//不管怎么跳转都会往下执行

	}
	

 test.jsp

<%
    response.getOutputStream().write(new byte[]{2,2});
     response.reset();
 %>

 对以上的几种执行情况进行分析

    1,forward的跳转---可以执行:当执行这个方法时,控制权将交给test.jsp,由test.jsp响应给客户端,该servlet的信息打印或头部信息设置将不会返回给客户端,客户端只得到一次响应。这样一来servlet与jsp形成两个分支,两个流分别对自己的页面进行写数据,不会抛异常。

 

   2,include的跳转---不可以执行:这种执行方法,是将两个进行合并然后再执行响应给客户端,这时,response.getOutputStream()与pw.write()同时对页面写入抛异常 java.lang.IllegalException getOutputStream() has already been called for response.

 

   3,sendRedirect的跳转---可以执行:执行这个方法时,这样执行与第一种不同的是,servlet与jsp都有对客户端进行响应,总共进行了两次响应

 

可查看以下文章:(tocmat源码子 froward与sendredirect的理解 )http://www.iteye.com/topic/557980

----------------------------------------------------------------------------------------------------------------------------------

二,查询数据库临时表问题

在用公司sql编辑器创建一个临时表时,然后查询一直查不出来,查了很多原因,原来是因为在使用PreparedStatement预编译查询是在数据库端形成存储过程的预编译,故所创建的临时表只对存储过程内部有效...

修正:改为Statement查询时即可.

三,jdbc查询时遇到的问题:

在使用Statement下的execute(sql)方法时,会出现多个结果集,如运行存储过程时,可能会有多个结果集

 

Connection conn = dataSource.getConnection();
			Statement st = null;
			try {

				st = conn.createStatement();
				if (maxRows != null && !"".equals(maxRows)) {
					st.setMaxRows(Integer.parseInt(maxRows));
				}
				boolean  moreResult=st.execute(sql);                                
				boolean  moreUpdate  = st.getUpdateCount() !=-1;   
				
				while(moreResult||moreUpdate){
					if(moreResult){
						ResultSet rs  = st.getResultSet();
						if (rs != null) {
							sb.append(outputResultSet( rs));
						}
					}else{
						if (st.getUpdateCount() != -1) {
							sb.append(outputUpdateCount(st.getUpdateCount()));
						}
					}
					moreResult = st.getMoreResults();   
					moreUpdate = st.getUpdateCount()!= -1;   
				}

			} finally {
				conn.commit();
				closeDB(rs, st, conn);
			}
 

四,jdbc中RowSet接口的特殊应用.

  在平时的应用中.,我们所操作的RowSet已经提供了许多的运用,可滚动,可更新 ,但是必须保持着数据库连接,数据库中提出了另外几种的rowSet设置,可以不保持连接等操作,可看javax.sql.rowset中的几个操作(CacelRowSet 无连接)

 

 

五,OpenSessionInViewFilter

   在没有使用Spring提供的Open Session In View情况下,因需要在service(or Dao)层里把session关闭,所以lazy loading 为true的话,要在应用层内把关系集合都初始化,如 company.getEmployees(),否则Hibernate抛session already closed Exception;    OpenSessionInView提供了一种简便的方法,较好地解决了lazy loading问题.  

 

   它有两种配置方式OpenSessionInViewInterceptor和OpenSessionInViewFilter(具体参看SpringSide),功能相同,只是一个在web.xml配置,另一个在application.xml配置而已。    

 

     Open Session In View在request把session绑定到当前thread期间一直保持hibernate session在open状态,使session在request的整个期间都可以使用,如在View层里PO也可以lazy loading数据,如 ${ company.employees }。当View 层逻辑完成后,才会通过Filter的doFilter方法或Interceptor的postHandle方法自动关闭session。

 

六,jsp session false

在默认情况下,在对一个JSP页面发出请求时,如果session还没有建立,JSP页面会自动为请求建立一个session对象,但是session是比较消耗资源的,如果没必要保持和使用session,就不应该创建session,  例如一些只是用来宣传产品的网站,往往没必要使用session来保存信息,可以使用jsp页面指令session=”false”(禁用)来避免JSP页面为每个请求都自动创建session.实例代码如下:
<%@ page session=”false”>


七,拼接url后,用httpclient进行发送命令时,错误

如:http://192.168.7.83:8080/bws/auth/homepage.jsp?url=http://192.168.4.129:4444/bws?username='root'

url=http://192.168.4.129:4444/bws?username='root'是一个整体,但是浏览器并不知道问号是属于哪个的http

所以url不能decode因为是参数,被编码后,协议问题会获取不到。但是他后面的值进行decode之后,就能保持整体性。

 

八,当下载时可以指定其下载后文件名称

 

 

response.setHeader("content-disposition",
							"attachment;filename=\""
							+ URLEncoder.encode(name, "utf-8")+ "\"");
 

 

九,当下载哪种类型文件时,告诉浏览器,以怎样的形式打开

 

public class MimeTypes {

	private static MimetypesFileTypeMap mimetypes = new MimetypesFileTypeMap();

	static {// ----add mime type
		mimetypes.addMimeTypes("application/x-shockwave-flash swf SWF");
		mimetypes.addMimeTypes("application/pdf pdf PDF");
	}

	public static String getContentTypeByFileName(String fileName) {
		return mimetypes.getContentType(fileName);
	}

}

------------------------
//根据文件名称获取到相应的contentType,如是“pdf”浏览器会自动打开
if (contentType != null) {
				response.setContentType(contentType);
			}

  十,在java中以预编译的形式设式全文检索异常。contains('',?)

 测试时用jtds时设置进去时抛出错误,用sqlserver自带的驱动包可以,,,,,所以遇到这类的设置还是用字符串拼接

 

 

 

1
0
分享到:
评论

相关推荐

    J2EE和数据分析实践分享-V0.2.pptx

    #### 一、J2EE基础知识 - **定义**:J2EE(Java 2 Platform, Enterprise Edition)是一种基于Java的平台标准,用于开发可移植、健壮、安全、多用户访问和多平台部署的企业级应用程序。它是由Sun Microsystems在2002...

    Expert One-on-One J2EE Design and Development.pdf

    通过上述章节的详细解析,读者不仅可以了解到J2EE的核心概念和技术,还可以学习到如何将这些理论知识应用于实际项目中,以构建出高质量、高性能的企业级应用程序。此外,本书还提供了丰富的案例研究和实用技巧,有助...

    轻量级J2EE企业应用实战第三版下载地址

    《轻量级J2EE企业应用实战第三版》是一本非常实用的技术书籍,不仅涵盖了J2EE的基础知识,还深入介绍了Spring、Struts2、Hibernate等多个轻量级框架的应用方法。对于想要从事Java Web开发或对企业级应用感兴趣的读者...

    J2EE教学全程(1) J2EE教学全程(1)

    总之,《J2EE教学全程(1)》是一个全面、详尽的入门教程,旨在帮助读者扎实掌握J2EE的基础知识,为后续深入学习和实际项目开发打下坚实的基础。随着T01等更多章节的展开,学习者将一步步走进J2EE的广阔天地,领略...

    J2EE全部要学知识整理

    在学习J2EE的过程中,你需要掌握一系列核心技术和概念,这些知识构成了J2EE开发的基础。下面将详细阐述J2EE中的重要知识点。 1. **Java基础**:作为J2EE的基础,首先需要扎实的Java语法基础,包括类、对象、封装、...

    J2EE的潜在难点及最佳实践

    - **培训需求**:对于团队和个人来说,通过参加培训课程、阅读相关书籍或浏览网络资源,都是获取基础知识的有效途径。 - **实践经验**:通过构建复杂的原型项目或参与实际项目来积累经验,这对于深入理解技术至关...

    J2EE从零开始

    学习J2EE之前,首先需要掌握J2SE的基础知识,这是进入高级应用领域的基石。建议使用集成开发环境(IDE)进行学习,如Eclipse、NetBeans等,这些工具可以显著提高开发效率。 1. **Java语言基础**:包括变量、数据...

    j2ee学习经验和流程

    对于初学者而言,建议首先掌握J2SE的基础知识,这是J2EE的基础。在掌握了J2SE之后,可以逐步过渡到J2EE的学习。这是因为J2SE为开发者提供了Java语言的基本功能,如类和对象的概念、异常处理、线程等,这些都是构建...

    J2EE入门学习方法指导

    总之,学习J2EE需要逐步积累,从基础知识到高级框架,从理论到实践,通过阅读书籍、编写代码和参与项目,不断提升自己的能力。记住,学习的深度和广度都非常重要,不断关注行业动态,适应技术的更新换代。

    J2EE学习,servlet学习

    3. **js基础教程.chm**:JavaScript的基础教程,可能包含了变量、数据类型、函数、对象等基础知识,适合初学者入门。 4. **Freemarker教程+中文版.pdf**:这是一本关于FreeMarker的中文教程,涵盖了FreeMarker的使用...

    J2EE实训教程

    - **JavaScript基础知识:** JavaScript是一种轻量级的解释型或即时编译型的编程语言。实训中将学习JavaScript的基本语法,包括变量、数据类型、函数等。 - **DOM操作:** DOM(Document Object Model)是文档对象模型...

    j2ee学习方法之我见。

    学习J2EE前,需要具备一定的Java基础知识,包括Java语法、面向对象编程思想等。此外,了解一些基本的数据结构和算法也是非常有益的。 #### 3. 技术栈梳理 J2EE技术栈非常庞大,涵盖了服务器端、客户端以及中间件等...

    j2ee个人简历(高级工程师高新)模板

    10. 教育背景:简历中提到的盐城生物工程高等学校的计算机信息管理专科教育背景,为应聘者提供了扎实的理论基础,而5年以上的相关工作经验则展现了其在实践中的成长和积累。 总结以上知识点,我们可以看出这份简历...

    J2EE企业级项目开发-3期(KC007) KC001040000001 整体设计.doc

    课程目标明确,不仅要求学生掌握C语言的基础知识,如程序结构、函数、算法描述、文件操作等,还强调在C语言基础上的程序设计能力,包括表达式设计、结构化程序设计思想、问题解决能力等。同时,课程着重培养学生的...

    java学习计划,J2EE学习计划,JAVA,J2EE,java学习步骤,j2ee学习步骤

    2. **Web基础知识**: - 学习HTML、CSS和JavaScript,这是构建Web页面的基础。 - 熟悉HTTP协议和Web工作原理。 3. **JSP和Servlet**: - 学习JSP(JavaServer Pages)语法,包括脚本元素、指令和动作。 - 理解...

    J2EE编写企业应用教程(含源码)

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是Java平台的企业版,用于构建和部署可扩展、安全...通过这个教程,学习者不仅可以掌握J2EE的基础知识,还能积累实际开发经验,提升解决复杂企业问题的能力。

    从零开始学J2EE,语法基数和WEB开发等

    本文将深入探讨J2EE的基本概念、语法基础以及Web开发的相关知识。 首先,我们要理解J2EE的核心概念。J2EE是由一系列的Java API、服务、协议和规范组成的,它涵盖了诸如Servlet、JSP、EJB、JMS、JTA等多个关键组件。...

    《J2EE专业项目实例开发(修订版)》-王雷-源代码

    这本书的核心目标是通过实际项目案例来教授J2EE的相关知识,让学习者能够在实践中积累经验,提升技能。 源代码中的各个部分主要对应书中的不同章节和项目,让我们逐一解析这些文件: 1. **第1章**:通常会介绍J2EE...

    J2EE课程设计报告 校园淘宝

    ### J2EE课程设计报告——校园淘宝 #### 一、项目背景及目标 **校园淘宝**是一个基于JavaEE技术栈构建的电子商务平台,旨在为校园内的师生提供一个便捷的线上交易环境。该项目作为一门课程的设计任务,其核心目标...

    JAVA入门: J2EE的学习流程

    综上所述,J2EE的学习是一个系统而漫长的过程,需要从基础知识入手,逐步深入到高级主题,并通过实战项目加以巩固。此外,随着技术的不断发展,持续学习也是必不可少的一部分。希望每位Java开发者都能在这个过程中...

Global site tag (gtag.js) - Google Analytics