springMVC-JNDI

最近在学习JNDI,今天整出来一个demo,拿出来大家分享下。

先上一个项目结构的截图:

1、配置JNDI数据源

  首先,修改一下tomcat的配置文件conf/context.xml

  在Context属性中加入


<Resource name="jndi-web"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"
username="scott"
password="tigger"
maxIdle="40"
maxWait="4000"
maxActive="250"
removeAbandoned="true"
removeAbandonedTimeout="100"
logAbandoned="true"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
/>

  其次,项目中的web.xml中加入

<resource-ref>
<description>DB Connection</description>
<res-ref-name>jndi-web</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

  最后,就是在spring的配置文件applicationContext.xml中加入

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jndi-web</value>
</property>
</bean>

  到这里,JNDI的配置就算是结束了。注意:上面3个配置文件中都用到了“jndi-web”的名称,请保持一致性。

2、SpringMVC的配置

  首先,在项目中的web.xml文件中加入


<servlet>
<servlet-name>test</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

  其次,加入controller代码<HelloController.java>:


package com.blanddrift.controller;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import com.blanddrift.util.DataBaseUtil;

public class HelloController implements Controller {

@Override
public ModelAndView handleRequest(HttpServletRequest req,
HttpServletResponse resp) throws Exception {
Connection conn = DataBaseUtil.getConn();
List<Map<String, String>> list = new ArrayList<Map<String,String>>();
try {
Statement stt = conn.createStatement();
ResultSet rs = stt.executeQuery("select * from emp");
while(rs.next()) {
Map<String, String> map = new HashMap<String, String>();
map.put("empno", rs.getString(1));
map.put("ename", rs.getString(2));
map.put("job", rs.getString(3));
map.put("mgr", rs.getString(4));
map.put("hiredate", rs.getString(5));
map.put("sal", rs.getString(6));
map.put("comm", rs.getString(7));
map.put("deptno", rs.getString(8));
list.add(map);
}
req.setAttribute("emp", list);
} catch (Exception e) {
e.printStackTrace();
} finally {
DataBaseUtil.closeConn(conn);
}
req.setAttribute("hello", "Welcome to spring!!!");
return new ModelAndView("welcome");
}

}

  上面用到一个的DataBaseUtil的代码如下<DataBaseUtil.java>:


package com.blanddrift.util;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DataBaseUtil {

private static DataSource ds;

static {
try {
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jndi-web");
} catch (NamingException e) {
e.printStackTrace();
}
}

private DataBaseUtil(){}

public synchronized static Connection getConn(){

try {
return ds.getConnection() != null ? ds.getConnection() : null;
} catch (SQLException e) {
e.printStackTrace();
}

return null;
}

public static void closeConn(Connection conn) {
try{
if(conn != null) {
conn.close();
conn = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}

}

  最后,在WEB-INF下新建test-servlet.xml的配置文件(文件名称为web.xml中的<servlet-name>属性
+ “-servlet.xml”),文件内容如下:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>

<!--缺省映射处理器,不需要明确声明,但声明后就非常清楚使用的是哪个映射处理器 -->
<bean id="beanNameUrlMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
</bean>

<!-- 这里的name属性有两个职责,既定义Bean的名字,也定义需要这个控制器处理的URL样式 -->
<bean name="/hello.do" class="com.blanddrift.controller.HelloController">
</bean>

<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

</beans>

  根据test-servlet.xml的配置文件可以知道我们需要编写的jsp文件,即/WEB-INF/jsp/welcome.jsp,下面提供welcome.jsp的代码:


<%@page import="java.util.Map"%>
<%@page import="java.util.List"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Hello World!</title>
</head>
<body>
<h2>
  This is a note which come from Java !!!
</h2>
<h3>
${hello }
</h3>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td>empno</td>
<td>ename</td>
<td>job</td>
<td>mgr</td>
<td>hiredate</td>
<td>sal</td>
<td>comm</td>
<td>deptno</td>
</tr>
<%
List<Map<String, String>> list = (List<Map<String, String>>)request.getAttribute("emp");
for(int i = 0; i < list.size(); i++) {
Map<String, String> map = list.get(i);
%>
<tr>
<td><%=map.get("empno")%></td>
<td><%=map.get("ename")%></td>
<td><%=map.get("job")%></td>
<td><%=map.get("mgr")%></td>
<td><%=map.get("hiredate")%></td>
<td><%=map.get("sal")%></td>
<td><%=map.get("comm")%></td>
<td><%=map.get("deptno")%></td>
</tr>
<%
}
%>
</table>
</body>
</html>

3、部署工程,启动刚才修改过context.xml文件的tomcat,访问http://localhost:8080/jndi-web/hello.do,就会得到下面的页面:

项目的war包:jndi-web.zip

springMVC-JNDI

时间: 2024-10-11 01:42:41

springMVC-JNDI的相关文章

Springmvc +JNDI 在Tomcat下 配置数据源(转)

一.             简介 jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用名称访问对象.目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性. 二.             tomcat配置jndi有三种方式. 第一种:单个应用独享数据源 在Tomcat的server.xml找到工程的Context节点,添加一个私有数据源 <

springMVC+MyBatis+Spring 整合(3)

spring mvc 与mybatis 的整合. 加入配置文件: spring-mybaits.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xm

springmvc事务回滚失效

转载:http://blog.csdn.net/z69183787/article/details/37819831 前文提到,最新换了框架,新项目用SpringMVC + Spring JdbcTemplate.搭框架时,发现了一个事务无法正常回滚的问题,记录如下: 首先展示问题: Spring applicationContext.xml配置: [html] view plaincopy <bean id="dataSource" class="org.spring

spring security+mybatis+springMVC构建一个简单的项目

1.引用 spring security ,这是一种基于spring AOP和Servlet的过滤安全框架.它提供全面的安全性解决方案,同时在web请求级和方法的调用级处理身份确认和授权.在spring framework基础上,spring security充分利用了依赖注入(DI,Dependency Injection)和AOP技术. 下面就让我们用一个小的晓得项目来出初步了解Spring Security 的强大功能吧. 2.项目实战    1)项目的技术架构:maven+spring

SpringMVC+Spring+Mybatis -- 集成之旅

准备 首先介绍一下,我的工具使用的是STS, 需要的童鞋可以到官网下载:http://spring.io/tools/sts/all 使用STS是因为她集成了Maven进行 “包“ 管理以及自带 Web server 方便部署(不用配置啦~),个人感觉还是挺方便的.如果大家想要自己配置Tomcat,也未尝不可 :) 我下载的是压缩包的STS,下载完成后解压缩 -> 启动STS.exe ->指定 workspace ->创建Maven项目 -> 选择建立 webapp 项目. 等待片

Springmvc+spring+maven+Mybatis整合

随着springmvc及maven越来越受到众多开发者的青睐,笔者主要结合springmvc+maven+spring+Mybatis,搭建一套用于开发和学习的框架.本文将一步步展示整个框架的搭建过程,方便交流和学习. 一.开发环境: windows 8.1 eclipse Luna Service Release 1 (4.4.1) mysql-5.6.19-winx64 maven-3.2.3 jdk 1.7 apache-tomcat-7.0.57 二.主要技术: springmvc +

Spring MVC 使用 JNDI 配置的DataSource

稍微看了下,Spring 中JNDI 的使用,弄了个小例子.有很多不完备的地方,以后慢慢看,再改吧. <一> 技术使用 Spring MVC JDBC Template Maven JNDI <二> 一些配置 Maven POM 配置 spring-context.spring-webmvc.spring-orm.spring-jdbc.mysql-connector-java等 创建数据库 create database usersdb; CREATE TABLE `users`

springMVC原理

1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标Controller 4.Controller进行业务逻辑处理后,会返回一个ModelAndView 5.Dispathcher查询一个或多个ViewResolver视图解析器,找到Mo

三分钟解读springmvc依赖

长期以来都在写SSM框架的项目,却未能深入理解框架的搭建原理,而只是浅薄的理解前辈的架构,然后不断套用,项目做过几个,但框架的内涵却没有把握.小编打算今天从SpringMVC的依赖分析做起,一步步进行系统化学习. 从springFramework的官方文档入手: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#overview-getting-started-with-spring

原:maven+springMVC+mybatis+junit详细搭建过程

阅读目录 1.  工程目录结构整理清楚 2.  引入依赖包 3. 配置数据库连接属性 4.  配置spring配置文件 5.  java代码编写(model,dao,service层代码) 6.  mybatis配置 7.  junit测试插入功能 8.  springMVC模块搭建 9.  log4j日志记录搭建 10.  测试运行 整体包下载地址: springMVC+mybatis框架搭建 首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些? (假设效