lingling

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿(1)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案

  • 2011年1月 (2)
  • 2010年12月 (5)
  • 2010年11月 (7)
  • 2010年10月 (15)

搜索

  •  

最新评论

  • 1. re: QQ发送消息[未登录]
  • X脑子有问题?
  • --1
  • 2. re: QQ发送消息
  • sdg sdgsdfgsdf
  • --风格
  • 3. re: listener监听器
  • 不是,应该是同时多个人访问一台服务器时,服务器的承受能力@咖啡
  • --风铃
  • 4. re: listener监听器[未登录]
  • @小小


    考虑并发,什么意思?如果一秒钟内同时有2人进入网站,监听不到?
  • --咖啡
  • 5. re: listener监听器
  • 初学者,没考虑到那么多@小小
  • --lingling

阅读排行榜

  • 1. 过滤器—防止未登录直接访问网站内部(2938)
  • 2. listener监听器(2193)
  • 3. Junit测试(2083)
  • 4. MVC小程序(1883)
  • 5. 邮箱自动登录(1593)

评论排行榜

  • 1. 学生成绩处理程序(7)
  • 2. listener监听器(4)
  • 3. MVC小程序(4)
  • 4. 过滤器—防止未登录直接访问网站内部(4)
  • 5. Http乱码过滤器(4)

Powered by: 博客园
模板提供:沪江博客
BlogJava | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2010年12月14日

Junit测试

 

 

Junit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

 

1 junit特性

  

  

junit

Junit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。它包括以下特性:

  ① 用于测试期望结果的断言(Assertion)

  ② 用于共享共同测试数据的测试工具

  ③ 用于方便的组织和运行测试的测试套件

④ 图形和文本的测试运行器

 
2 Eclipse中配置Junit

右击要使用的junit的项目,点击properties—java bulid path-libraries,点击Add External JARs,加上JUNIT包。

 

 3 用法

- 创建,从junit.framework.TestCase派生nuit test需要的test case.

- 书写测试方法

- 编译 书写玩test case后,编译所写的test case类

- 运行,启动junit test runnner 来运行这个test case。

 

 

实例代码:

package com.dr.test;

 

import java.util.List;

 

import junit.framework.TestCase;

import com.dr.dao.StudentDao;

import com.dr.dao.impl.StudentDaoImpl;

import com.dr.vo.Student;

 

public class StudentDaoImplTest extends TestCase{

   

    StudentDao dao;

   

    protected void setUp() throws Exception{

       dao=new StudentDaoImpl();

      

    }

    protected void tearDown() throws Exception{

      

    }

    public void testAdd(){

       Student stu=new Student();

       stu.setName("ling");

       stu.setAge(1);

       stu.setEmail("ling@126.com");

       dao.addStudent(stu);

    }

    public void testListStudent(){

       List<Student> list=dao.getStudentList();

       System.out.println(list.size());

    }

   

}

 

Junit中的两个函数:setUp与tearDown,是junit framework中提供初始化金额反初始化每个测试方法的。setUp在每个测试方法调用前被调用,负责初始化测试方法所需要的测试环境;teardown在每个测试方法被调用之后被调用,负责撤销测试环境。

 

测试结果:

 

在JUnit的窗口中显示了一个绿条,绿条证明测试成功。

 

posted @ 2011-01-23 10:20 向日葵 阅读(2083) | 评论 (0) | 编辑 收藏
 
listener监听器
 

Listener是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样就可以给在线人数加1。常用的监听接口有以下几个:

ServletContextListener监听ServletContext。当创建ServletContext时,激发 contextInitialized(ServletContextEvent sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。

ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。

HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed (HttpSessionEvent se)方法。

HttpSessionAttributeListener监听HttpSession中的属性的操作。当在Session增加一个属性时,激发 attributeAdded(HttpSessionBindingEvent se) 方法;当在Session删除一个属性时,激发attributeRemoved(HttpSessionBindingEvent se)方法;当在Session属性被重新设置时,激发attributeReplaced(HttpSessionBindingEvent se) 方法。

下面我们开发一个具体的例子,这个监听器能够统计在线的人数。

程序源代码:

package com.dr.web.listener;

import javax.servlet.ServletContext;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

publicclass UserCountListener implements ServletContextListener,

       HttpSessionListener {

    //每个web应用都有且仅有一个ServletContext对象,这个对象在所有的Servlet都可以使用。

    /**

     * 因为一个web应用就一个ServletContext 对象,因此可以使用ServletContext 来做一些全局性的属性设置等。

     * 比如网站访问计数器等等

     *

     *

     * ServletContext 是一个应用程序与Web容器(tomcat之类)交互的接口,同时它也是管理应用程序资源的对象,

                                                   通过它可以读取web.xml中一些配置,如<context-param>中的信息,读取应用中的资源等。

       Session 是一个会话对象,也就是说当客户端访问服务器页面时,它才产生,

                                        原理是服务器对每个客户端产生一个sessionid值,并把它也保存在客户端,

                                        每次请求时验证这个sessionid是否是创建了sessionid的客户端,在服务器端对应这个sessionid会创建一个缓存区,

                                        存储一些相关信息,程序员可以操作,如被用于购物车,存储用户信息等,这个区域只有对特定用户有访问权限,对其他客户是拒绝访问的,这就是一个会话。

       Request 是一个请求对象,也就是说它的生命很短暂,只在一个请求中存在,如一个页面到另一个页面,

                                     一个页面到servlet或action,一个servlet或action到jsp页面等,你可以用它的setAttribute方法传递需要的信息(对象),验证请求方的信息,获得请求方发过来的文件内容等。

     */

    private ServletContext sc;

    publicvoid contextDestroyed(ServletContextEvent arg0) {

   

    }

    publicvoid contextInitialized(ServletContextEvent event) {

      

       ServletContext sc = event.getServletContext();

       sc.setAttribute("Users", new Integer(0));

       this.sc = sc;

    }

    publicvoid sessionCreated(HttpSessionEvent event) {//在线

       System.out.println("new user login our web site");

       Integer users = (Integer)sc.getAttribute("Users");

       sc.setAttribute("Users", ++users);

    }

    publicvoid sessionDestroyed(HttpSessionEvent event) {

       Integer users = (Integer)sc.getAttribute("Users");

       sc.setAttribute("Users", --users);

    }

}

Web.xml中配置如下:

    <listener>

       <listener-class>com.dr.web.listener.UserCountListener</listener-class>

    </listener>

在UserCountListener里,用users代表当前在线的人数,UserCountListener将在Web服务器启动时自动执行。当UserCountListener构造好后,把users设置为 0。每增加一个Session,UserCountListener会自动调用sessionCreated(HttpSessionEvent event)方法;每销毁一个Session,UserCountListener会自动调用 sessionDestroyed(HttpSessionEvent se)方法。当调用sessionCreated(HttpSessionEvent event)方法时,说明又有一个客户在请求,此时使在线的人数(users)加1,并且把user写到ServletContext中。 ServletContext的信息是所有客户端共享的,这样,每个客户端都可以读取到当前在线的人数。

运行结果:


posted @ 2011-01-18 21:39 向日葵 阅读(2193) | 评论 (4) | 编辑 收藏
 
MVC小程序
     摘要:   MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Control)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Control层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可...  阅读全文
posted @ 2010-12-14 10:35 向日葵 阅读(1883) | 评论 (4) | 编辑 收藏
 
过滤器—防止未登录直接访问网站内部
 

有些网站需要登录以后才能访问网站内部资源,这就需要我们做一个过滤器,当用户访问网站内部资源时,要先经过过滤器,过滤器判断是否有这个用户,有则跳转进入网站内部页面,没有则返回登录页面。

 

过滤器代码:

package com.dr.course;

 

import java.io.IOException;

 

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpSession;

 

import com.dr.common.Global;

import com.dr.vo.User;

 

public class IsLoginFilter implements Filter {

 

       public void destroy() {

             

       }

 

       public void doFilter(ServletRequest request, ServletResponse response,

                     FilterChain filterChain) throws IOException, ServletException {

             

              System.out.println("every request pass here");

              HttpServletRequest hrequest=(HttpServletRequest)request;

              HttpSession session=hrequest.getSession();

              User user =     (User)session.getAttribute(Global.USER);

              if(user == null){

                     //跳转到登陆页面

            hrequest.getRequestDispatcher("/index.jsp").forward(request,response);                 

              }

              filterChain.doFilter(request, response);

       }

 

       public void init(FilterConfig filterConfig) throws ServletException {

             

       }

 

}

 

LoginServlet类,进行登录之后的处理:

package com.dr.course;

 

import java.io.IOException;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

 

import com.dr.common.Global;

import com.dr.vo.User;

 

public class LoginServlet extends HttpServlet{

      

       public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{

             

              String userName=request.getParameter("username");

              String passWord=request.getParameter("password");

             

          

            System.out.println("userName | " + userName);

            System.out.println("passWord | " + passWord);

            User user = new User();

            user.setUserName(userName);

            user.setPassWord(passWord);

            HttpSession session = request.getSession();

            //登录成功,把User放到session,然后在拦截器中判断

            //key--value

            session.setAttribute(Global.USER, user);

            request.getRequestDispatcher("/admin/main.jsp").forward(request, response);

             

             

             

       }

 

}

 

web.xml中配置如下:

- <filter>

  <filter-name>isLogin</filter-name>

  <filter-class>com.dr.course.IsLoginFilter</filter-class>

  </filter>

- <filter-mapping>

  <filter-name>isLogin</filter-name>

  <url-pattern>/admin/*</url-pattern>

  </filter-mapping>

- <servlet>

  <servlet-name>login</servlet-name>

  <servlet-class>com.dr.course.LoginServlet</servlet-class>

  </servlet>

- <servlet-mapping>

  <servlet-name>login</servlet-name>

  <url-pattern>/login</url-pattern>

  </servlet-mapping>


 未登录界面:

成功登录的界面:

posted @ 2010-12-14 10:26 向日葵 阅读(2938) | 评论 (4) | 编辑 收藏