`
dreamer_0924
  • 浏览: 180473 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

J2EE学习经验:JSP学习总结2(转载)

阅读更多

接着写个Servlet来加载log4j:

package powerwind.servlet;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import javax.servlet.*;
import javax.servlet.http.*;

public class Log4jInit extends HttpServlet {
public void init(ServletConfig config) throws ServletException {
        
super.init(config);
          String prefix
= getServletContext().getRealPath("/");
          String file
= getInitParameter("log4j");
          System.out.println(
"init log4j...");
        
if (file != null){
            PropertyConfigurator.configure(prefix
+file);
          }
else
          {
                   PropertyConfigurator.configure(prefix
+"log4j.properties");
          }
}
}

然后同时要在web.xml下配置:

<servlet>
         
<servlet-name>log4jInit</servlet-name>
         
<servlet-class>powerwind.servlet.Log4jInit</servlet-class>
              
<init-param>
                
<param-name>log4j</param-name>
                
<param-value>WEB-INF/classes/log4j.properties</param-value>
              
</init-param>
         
<load-on-startup>1</load-on-startup>
</servlet>

6、国际化

#test_zh_CN.properties
#login page
login.title
=登录页面
小型的应用中,我们并不常需要国际化。但是,如果网站要中文版和英文版的话,这个就不错啦。使用时很简单,把资源test_zh_CN.properties文件放到classes目录下,然后用JSTL的fmt标签调用。
<fmt:setLocale value="zh_CN"    scope=”session” />
<fmt:setBundle basename="test" scope=”session” var=”hehe” />
<fmt:message key="login.title" bundle=”${hehe}” scope=”session” />

其中var和scope属性不是必需的。三者结合,就可以实现国际化了。

二、极限与安全
资源放在WEB-INF下是安全的,因为这个目录对于客户端是不存在的。权限控制并不是仅仅这样就可以了。如果只是简单地判断用户是否登录,可用一个过滤器检查Session对象即可。若需要级别控制的话,就在Session中保存级别信息,然后加以判断。
一般把权限的控制做成一个标签(tag)。如:
public int doEndTag() throws JspException {
                HttpSession session
= pageContext.getSession();
              
if ((session != null) && (session.getAttribute("user") != null)) {
                       String t
= ((UserBean) session.getAttribute("user")).getType();
                     
if (t == null || role == null) {
                              invalid();
                            
return (SKIP_PAGE);
                       }
                       String[] roles
= role.split(delimiter);
                     
for (int i = 0; i < roles.length; i++) {
                            
if (roles[i].equalsIgnoreCase(role))
                                   
return (EVAL_PAGE);
                       }
                }
else {
                       invalid();
                     
return (SKIP_PAGE);
                }
              
return (EVAL_PAGE);
         }

三、上传与下载

上传的话,一般使用已有的组件,如commons-fileupload 或者欧莱礼的cos (可能会遇到中文编码的问题)。而下载,比较简单,就自己写了个Servlet。
public void handleRequest(HttpServletRequest request,
                HttpServletResponse response)
throws IOException, ServletException {
                String name
= request.getParameter("name");
                String type
= request.getParameter("type");
                String dir
= request.getParameter("dir");
              
if (name == null || name.length() < 2 || dir == null || dir.length() < 1 || type == null || type.length() < 1) {
                     
throw new ServletException("Sorry,error occured");
                }
              
char ch = dir.charAt(dir.length() - 1);
              
if (ch != '/' || ch != '\')
                       dir
= dir + "/";
                ServletOutputStream os
= null;
                BufferedInputStream bis
= null;
              
try {
                       File file
= new File(dir + name);
                     
if (!file.exists() || file.length() >= Integer.MAX_VALUE) {
                              logger.error(
"Invalid file or file to large,file: " + name);
                            
throw new ServletException(
                                          
"Invalid file or file to large,file: " + name);
                       }
                       response.setContentType(
"application/" + type);
                       response.addHeader(
"Content-Disposition", "attachment; filename="+ name);
                       response.setContentLength((
int) file.length());
                       os
= response.getOutputStream();
                       bis
= new BufferedInputStream(new FileInputStream(file));
                     
int size = -1;
                     
while ((size = bis.read()) != -1)
                              os.write(size);
                }
catch (IOException ioe) {
                     
throw new ServletException(ioe.getMessage());
                }
finally {
                     
if (os != null)
                              os.close();
                     
if (bis != null)
                              bis.close();
                }
         }

          以上只是个示例程序,灵活与方便的做法应该是在Servlet初始化参数(<init-param>)设置下载文件所在目录,当然也可以在页面中设置参数。甚至可以做成一个下载标签,方便使用。

http://java.chinaitlab.com/ServletJsp/532923_2.html

分享到:
评论

相关推荐

    j2ee实验三:学习使用JSP技术

    - **JSP运行原理**:JSP文件首先被转换为Servlet源码,然后编译为Servlet类,最后由Web容器执行。 5. **实验步骤**: - 安装并配置JDK,确保环境变量JAVA_HOME正确设置。 - 安装Jboss应用服务器和Eclipse IDE,...

    j2ee课程实验:学生管理系统

    在J2EE(Java 2 Platform, Enterprise Edition)课程中,学生管理系统是一个常见的实验项目,旨在帮助学习者深入理解J2EE平台的各种技术及其在实际应用中的整合。这个实验通常涵盖了诸如Servlet、JSP、JavaBeans、...

    J2EE课程设计:在线书店管理系统数据库

    1. J2EE基础:学习者需要掌握Servlet、JSP、JDBC等技术,理解MVC设计模式。 2. 数据库设计:包括数据库表的结构设计,如用户表、书籍表、订单表等,以及相关的数据操作(CRUD)。 3. Web应用部署:理解如何将项目...

    j2ee学习经验和流程

    ### J2EE学习经验和流程 在IT领域,Java平台一直占据着重要的位置,而Java 2 Platform, Enterprise Edition(简称J2EE)则是用于开发可移植、健壮、可伸缩且安全的多层Web应用的企业级解决方案。本文将根据提供的...

    j2ee 1.4所有jar包

    activation.jar javax.servlet.jar javax.servlet.jsp.jar jboss-j2ee.jar jboss-jaxrpc.jar jboss-jsr77.jar jboss-saaj.jar mail.jar namespace.jar xml-apis.jar

    J2EE JAR包(J2EE1.3 J2EE1.4 J2EE5.0 )

    Java 企业版(Java 2 Platform, Enterprise Edition,简称 J2EE)是 Sun Microsystems 推出的用于构建分布式、多层企业级应用的框架。它为开发者提供了多种服务和组件模型,包括Java Servlets、JavaServer Pages ...

    韩顺平j2ee视频实战教程jsp源码时尚购物网站 全文源码

    《韩顺平j2EE视频实战教程:JSP源码时尚购物网站》是一套全面讲解J2EE技术在实际开发中的应用的教程。本教程由知名讲师韩顺平主讲,旨在通过实战案例帮助学员深入理解和掌握J2EE平台的核心技术,特别是JSP在构建动态...

    J2EE学习经验和流程

    ### J2EE学习经验和流程深度解析 在IT领域,Java技术体系中,J2EE(Java 2 Platform, Enterprise Edition)作为企业级应用开发的重要框架,一直是开发者关注的焦点。本文将深入探讨J2EE的学习经验和流程,为初学者...

    j2ee学习笔记-j2ee学习笔记

    **J2EE学习笔记概述** J2EE(Java 2 Platform, Enterprise Edition)是一个由Sun Microsystems(现已被Oracle收购)开发的平台,主要用于构建企业级的分布式应用系统。它提供了服务器端组件模型、服务和API,支持...

    J2EE 学习规划 学习java

    ### J2EE学习规划与Java技能提升路径 在IT领域,Java作为一种广泛应用的编程语言,其生态系统的丰富性尤其体现在企业级应用上,而J2EE(Java Platform, Enterprise Edition)便是这一领域的核心标准。对于希望深入...

    大连理工大学——J2EE复习资料:复习提纲+题库+ppt

    大连理工J2EE课程,学习资料+复习资料。包括提纲、题库、知识点等。 把手头上的都拖进去了,所以有点乱,请自行选择合适的取用。

    工作5年J2EE经验文档总结

    工作5年J2EE经验文档总结, 文档包括69个J2EE相关文档 Extjs学习笔记 ...j2ee学习总结 JAVA经典总结 spring经验总结 struts2标签库总结 Spring_AOP_学习小结 自己总结的spring 等几十个总结大全

    RAD--J2EE,Servlet and JSP

    在探讨具体的Servlet和JavaServer Pages (JSP)之前,首先需要了解J2EE(Java 2 Platform, Enterprise Edition)框架的基本概念及其组成部分。 - **J2EE概述**:J2EE是一种企业级应用开发平台,它基于Java标准版,...

    j2ee学习基本功 jsp_DAO jsp_Servlet jsp_sql jsp_smartupload

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是一个用于构建企业级Web应用程序的框架。这个压缩包文件的标题和描述提到了几个关键的技术概念,它们是学习J2EE开发的基础,包括JSP(JavaServer Pages)...

    j2ee简单学习总结

    j2ee的个人简单总结,主要是针对基础的汇总。

    j2ee学习路径 路线图

    在IT行业中,Java 2 Platform, Enterprise Edition (J2EE) 是一个用于开发和部署企业级应用程序的平台,尤其适合构建分布式、多层的Web应用。对于初学者来说,掌握J2EE的学习路径至关重要,这将帮助他们系统地构建...

    jsp技术与j2ee技术

    5. **JSP生命周期**:JSP页面在首次请求时被转换为Servlet,然后经历初始化、服务、销毁三个阶段。 6. **EL(Expression Language)**:提供简洁的方式来访问JavaBean属性和其他Java对象,减少了HTML和Java代码的...

    韩顺平 j2ee视频实战教程》servlet + jsp的视频

    #### 第2讲:JSP语法与指令 - **JSP指令标签**:讲解page、include等指令的作用和用法。 - **JSP脚本元素**:介绍scriptlet、声明和表达式的使用方法。 - **JSP动作标签**:探讨include、useBean、setProperty等...

    J2EE学习笔记(J2ee初学者必备手册)

    **J2EE学习笔记概述** J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台上用于构建企业级分布式应用程序的框架。它为开发者提供了丰富的功能,包括Web服务、事务处理、安全控制以及数据库连接等,使得...

    不错的j2ee学习资料

    【标题】"不错的J2EE学习资料"指出这是一份关于J2EE技术的学习资源集合。J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台的一个版本,专为构建企业级分布式应用程序而设计。它包含了多种服务、API和...

Global site tag (gtag.js) - Google Analytics