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");
}
}
}
小型的应用中,我们并不常需要国际化。但是,如果网站要中文版和英文版的话,这个就不错啦。使用时很简单,把资源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
相关推荐
- **JSP运行原理**:JSP文件首先被转换为Servlet源码,然后编译为Servlet类,最后由Web容器执行。 5. **实验步骤**: - 安装并配置JDK,确保环境变量JAVA_HOME正确设置。 - 安装Jboss应用服务器和Eclipse IDE,...
在J2EE(Java 2 Platform, Enterprise Edition)课程中,学生管理系统是一个常见的实验项目,旨在帮助学习者深入理解J2EE平台的各种技术及其在实际应用中的整合。这个实验通常涵盖了诸如Servlet、JSP、JavaBeans、...
1. J2EE基础:学习者需要掌握Servlet、JSP、JDBC等技术,理解MVC设计模式。 2. 数据库设计:包括数据库表的结构设计,如用户表、书籍表、订单表等,以及相关的数据操作(CRUD)。 3. Web应用部署:理解如何将项目...
### J2EE学习经验和流程 在IT领域,Java平台一直占据着重要的位置,而Java 2 Platform, Enterprise Edition(简称J2EE)则是用于开发可移植、健壮、可伸缩且安全的多层Web应用的企业级解决方案。本文将根据提供的...
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
Java 企业版(Java 2 Platform, Enterprise Edition,简称 J2EE)是 Sun Microsystems 推出的用于构建分布式、多层企业级应用的框架。它为开发者提供了多种服务和组件模型,包括Java Servlets、JavaServer Pages ...
《韩顺平j2EE视频实战教程:JSP源码时尚购物网站》是一套全面讲解J2EE技术在实际开发中的应用的教程。本教程由知名讲师韩顺平主讲,旨在通过实战案例帮助学员深入理解和掌握J2EE平台的核心技术,特别是JSP在构建动态...
### J2EE学习经验和流程深度解析 在IT领域,Java技术体系中,J2EE(Java 2 Platform, Enterprise Edition)作为企业级应用开发的重要框架,一直是开发者关注的焦点。本文将深入探讨J2EE的学习经验和流程,为初学者...
**J2EE学习笔记概述** J2EE(Java 2 Platform, Enterprise Edition)是一个由Sun Microsystems(现已被Oracle收购)开发的平台,主要用于构建企业级的分布式应用系统。它提供了服务器端组件模型、服务和API,支持...
### J2EE学习规划与Java技能提升路径 在IT领域,Java作为一种广泛应用的编程语言,其生态系统的丰富性尤其体现在企业级应用上,而J2EE(Java Platform, Enterprise Edition)便是这一领域的核心标准。对于希望深入...
大连理工J2EE课程,学习资料+复习资料。包括提纲、题库、知识点等。 把手头上的都拖进去了,所以有点乱,请自行选择合适的取用。
工作5年J2EE经验文档总结, 文档包括69个J2EE相关文档 Extjs学习笔记 ...j2ee学习总结 JAVA经典总结 spring经验总结 struts2标签库总结 Spring_AOP_学习小结 自己总结的spring 等几十个总结大全
在探讨具体的Servlet和JavaServer Pages (JSP)之前,首先需要了解J2EE(Java 2 Platform, Enterprise Edition)框架的基本概念及其组成部分。 - **J2EE概述**:J2EE是一种企业级应用开发平台,它基于Java标准版,...
在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是一个用于构建企业级Web应用程序的框架。这个压缩包文件的标题和描述提到了几个关键的技术概念,它们是学习J2EE开发的基础,包括JSP(JavaServer Pages)...
j2ee的个人简单总结,主要是针对基础的汇总。
在IT行业中,Java 2 Platform, Enterprise Edition (J2EE) 是一个用于开发和部署企业级应用程序的平台,尤其适合构建分布式、多层的Web应用。对于初学者来说,掌握J2EE的学习路径至关重要,这将帮助他们系统地构建...
5. **JSP生命周期**:JSP页面在首次请求时被转换为Servlet,然后经历初始化、服务、销毁三个阶段。 6. **EL(Expression Language)**:提供简洁的方式来访问JavaBean属性和其他Java对象,减少了HTML和Java代码的...
#### 第2讲:JSP语法与指令 - **JSP指令标签**:讲解page、include等指令的作用和用法。 - **JSP脚本元素**:介绍scriptlet、声明和表达式的使用方法。 - **JSP动作标签**:探讨include、useBean、setProperty等...
**J2EE学习笔记概述** J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台上用于构建企业级分布式应用程序的框架。它为开发者提供了丰富的功能,包括Web服务、事务处理、安全控制以及数据库连接等,使得...
【标题】"不错的J2EE学习资料"指出这是一份关于J2EE技术的学习资源集合。J2EE,全称为Java 2 Platform, Enterprise Edition,是Java平台的一个版本,专为构建企业级分布式应用程序而设计。它包含了多种服务、API和...