PetStore 代码 MainServlet.java
package com.sun.j2ee.blueprints.waf.controller.web;
import java.io.PrintWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletConfig;
// J2EE Imports
import javax.naming.NamingException;
// WAF imports
import com.sun.j2ee.blueprints.waf.util.I18nUtil;
import com.sun.j2ee.blueprints.waf.exceptions.GeneralFailureException;
import com.sun.j2ee.blueprints.util.tracer.Debug;
import com.sun.j2ee.blueprints.waf.controller.web.URLMappingsXmlDAO;
import com.sun.j2ee.blueprints.waf.controller.web.RequestProcessor;
import com.sun.j2ee.blueprints.waf.controller.web.util.WebKeys;
import com.sun.j2ee.blueprints.waf.util.JNDINames;
import com.sun.j2ee.blueprints.waf.controller.web.flow.FlowHandlerException;
import com.sun.j2ee.blueprints.waf.controller.web.flow.ScreenFlowManager;
import com.sun.j2ee.blueprints.waf.controller.web.WebController;
public class MainServlet extends HttpServlet {
private ServletContext context;
private HashMap urlMappings;
private HashMap eventMappings;
private Locale defaultLocale = null;
private RequestProcessor requestProcessor;
public void init(ServletConfig config) throws ServletException {
String defaultLocaleString = config.getInitParameter("default_locale");
defaultLocale = I18nUtil.getLocaleFromString(defaultLocaleString);
this.context = config.getServletContext();
String requestMappingsURL = null;
try {
requestMappingsURL = context.getResource("/WEB-INF/mappings.xml").toString();
} catch (java.net.MalformedURLException ex) {
System.err.println("MainServlet: initializing ScreenFlowManager malformed URL exception: " + ex);
}
urlMappings = URLMappingsXmlDAO.loadRequestMappings(requestMappingsURL);
context.setAttribute(WebKeys.URL_MAPPINGS, urlMappings);
eventMappings = URLMappingsXmlDAO.loadEventMappings(requestMappingsURL);
context.setAttribute(WebKeys.EVENT_MAPPINGS, eventMappings);
getScreenFlowManager();
getRequestProcessor();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doProcess(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doProcess(request, response);
}
private void doProcess(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// set the locale of the user to default if not set
if (request.getSession().getAttribute(WebKeys.LOCALE) == null) {
request.getSession().setAttribute(WebKeys.LOCALE, defaultLocale);
}
try {
getRequestProcessor().processRequest(request);
getScreenFlowManager().forwardToNextScreen(request,response);
} catch (Throwable ex) {
String className = ex.getClass().getName();
String nextScreen = getScreenFlowManager().getExceptionScreen(ex);
// put the exception in the request
request.setAttribute("javax.servlet.jsp.jspException", ex);
if (nextScreen == null) {
// send to general error screen
ex.printStackTrace();
throw new ServletException("MainServlet: unknown exception: " + className);
}
context.getRequestDispatcher(nextScreen).forward(request, response);
}
}
private RequestProcessor getRequestProcessor() {
RequestProcessor rp = (RequestProcessor)context.getAttribute(WebKeys.REQUEST_PROCESSOR);
if ( rp == null ) {
rp = new RequestProcessor();
rp.init(context);
context.setAttribute(WebKeys.REQUEST_PROCESSOR, rp);
}
return rp;
}
private ScreenFlowManager getScreenFlowManager() {
ScreenFlowManager screenManager = (ScreenFlowManager)context.getAttribute(WebKeys.SCREEN_FLOW_MANAGER);
if (screenManager == null ) {
screenManager = new ScreenFlowManager();
screenManager.init(context);
context.setAttribute(WebKeys.SCREEN_FLOW_MANAGER, screenManager);
}
return screenManager;
}
/**
* The UrlMapping object contains information that will match
* a url to a mapping object that contains information about
* the current screen, the HTMLAction that is needed to
* process a request, and the HTMLAction that is needed
* to insure that the propper screen is displayed.
*/
private URLMapping getURLMapping(String urlPattern) {
if ((urlMappings != null) && urlMappings.containsKey(urlPattern)) {
return (URLMapping)urlMappings.get(urlPattern);
} else {
return null;
}
}
}
//读取Hibernate.cfg.xml配置文件,并读到内存中为后续操作作准备
Configuration config = new Configuration().configure();
//SessionFactory缓存了生成的SQL语句和Hibernate在运行时使用的映射元数据。
SessionFactory sessionFactory = config.buildSessionFactory();
//Session是持久层操作的基础,相当于JDBC中的Connection。
Session session = sessionFactory.openSession();
try{
//为保持事务的原子性,必须捕捉异常。所有事务都放在这一代码块里。
//操作事务时(增、删、改)必须显式的调用Transaction(默认:autoCommit=false)。
Transaction tx = session.beginTransaction();
for(int i=0; i<=1000; i++){
Student stu = new Student(...);
session.save(stu);//set value to stu
//批量更新:为防止内存不足,分成每20个一批发送过去。
if(i%20==0){session.flush();session.clear();}//不是大批量更新,则不需要写这一行
//默认时,会自动flush:查询之前、提交时。
} tx.commit();//提交事务,Hibernate不喜欢抛异常,如有需要,自己捕捉。
//查询方法。如果有必要,也可以用事务(调用Transaction)
String hql = "from Student s where s.stuNo like ? and s.Sal > ?";//Student是类而不是表
List list = session.createQuery(hql)
.setString(0, "a00_").setDouble(1, 3000.0)//设置HQL的第一二个问号取值
.list();//Hibernate里面,没有返回值的都默认返回List
StringBuffer sb = new StringBuffer();
for(Student st :(List<Student>)list){//(List<Student>)强制类型转换
sb.append(st.getOid()+" "+st.getName()+"\n");//拿到Student类里的属性
}System.out.print(sb.toString());//直接打印sb也可以,它也是调用toString,但这样写效率更高
} catch (HibernateException e) {
e.printStackTrace();
session.getTransaction().rollback();//如果事务不成功,则rollback
} finally {
session.close();//注意关闭顺序,session先关,Factory最后关(因为它可以启动多个session)
sessionFactory.close();//关闭SessionFactory,虽然这里没看到它,但在HbnUtil里开启了。
}
分享到:
相关推荐
这个压缩包文件"CEC2010~2015测试函数及代码"包含了从2010年到2015年历届CEC竞赛中使用的测试函数及其MATLAB实现,对于理解和评估各种优化算法的性能极其有价值。 1. **CEC测试函数简介** CEC测试函数集是由一系列...
加拿大University of British Columbia 大学计算机科学系教授 David G....作者在其学术网站上发表的Matlab程序代码(注意,这个程序代码的初始版本是 D. Alvaro and J.J. Guerrero, 来自Universidad de Zaragoza。)
在提供的Web功能测试步骤中,我们可以看到一系列的交互操作,包括登录网易云音乐平台,浏览排行榜,收藏歌曲,创建歌单,发表和点赞评论,调整播放器设置,搜索商品,添加到购物车,以及进行结算操作。这些步骤涵盖...
2. **发帖与回帖**:BBS的核心功能是讨论,所以测试代码会验证用户能否创建新主题、发表回复,并检查这些帖子是否正确显示在相应的板块。 3. **板块管理**:测试可能涵盖了板块创建、编辑和删除,以及板块权限设置...
在本文中,我们将深入探讨如何使用Symfony的Panther组件进行功能测试,特别是在编写“Panther测试代码1”时涉及的步骤。Symfony是一个流行的PHP框架,而Panther是其提供的一个用于Web爬虫和自动化测试的工具,它允许...
本文是一系列发表在我的个人博客,关于安卓单元测试的文章的实例代码。 代码与文章的对应关系如下: Android单元测试: 首先,从是什么开始 代码和测试代码都在what子package下面 Android单元测试(三):JUnit单元测试...
这个代码经过了全面的修改和测试,确保在不同的网站环境中都能稳定运行,提高了用户体验的同时,也增强了网站的功能性。 首先,该留言板系统的安全性是其一大亮点。它具备了对留言内容进行审核的能力,支持三种状态...
没办法要用stc的,居然还有块最老的型号,就凑合着先写了些测试代码,最后选型了60s2做红外学习遥控,其实不需要选这个,画原理图的人图方便随便画了一个,失败的一个项目,个人上传只为留个脚印,也供大家参考 ************...
这是我在研习如何使用LINQ to SQL在N层体系架构中进行开放式并发冲突检查时的一个测试代码。欢迎各位下载。关于此代码的相信说明可以查看:http://blog.csdn.net/GJYSK/archive/2010/10/11/5933250.aspx 如果你只想...
标题中的“一种动静结合的高代码覆盖率模糊测试方法”直接指向了本文核心研究的内容,即探讨如何通过结合动态测试和静态分析的方法来提高代码的覆盖率,进而强化模糊测试的效果。模糊测试(Fuzz Testing)是一种通过...
书中内容不仅涉及到理论知识,也与实践紧密结合,并使用伪代码来实现与具体编程语言的独立性,增加了UML在面向对象测试中的集成,并通过大量的图表和案例研究来强化内容。 本书具有以下显著特点: 1. 使用独立于...
为了编译和测试Java源代码,开发者必须在他们的电脑上设置好JDK环境。 在标签中,“iPhone”和“空间”暗示了这个项目可能涉及到移动社交应用的开发。在iPhone上发布空间说说,可能需要集成Facebook、QQ空间、微信...
JSP是Java平台上的动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码,以实现服务器端的业务逻辑。 **1. 被测试软件项目介绍** 1.1 项目背景 美食大都项目是一个融合了社交元素的电商平台,旨在为用户提供...
9. **测试**:一个好的Java项目通常会有单元测试,使用JUnit或其他测试框架确保代码统计的准确性。 10. **文档注释**:源代码中可能会包含Javadoc注释,用于解释类、方法的功能和使用方法。 综上所述,这个Java...
共现(co-occurrence network)网络分析日益成为微生物生态学分析中重要的组成部分,成为目前文章发表的热点技术。利用spearman相关性分析是构建共现网络的重要方法,但由于OTU table往往有成千上万行,用R自带的...
除了方便的环境和模型集成,本代码集还有一个显著的特点:其背后的算法和模型已经被用于多篇SCI论文的发表。这意味着,这些代码不仅是经过实践检验的成熟技术,而且还得到了学术界的认可,其价值和有效性得到了充分...
【个人网站论坛代码】是一个基于Web的互动交流平台,它为用户提供了一个在线讨论、分享信息和建立社区的环境。在毕业设计中实现这样的系统,通常会涉及到多种编程语言和技术,如HTML、CSS、JavaScript用于前端界面,...
测试报告中的数据分析部分,可以提供对产品质量的直观认知,帮助开发团队确定是否需要进一步的测试或者修改代码。 通过一个博客系统的测试项目,我们可以了解到测试的基本概念,包括测试用例的设计、自动化测试的...