一个完整Structs2例子(JNDI创建数据源)
2011-11-01 23:32
369 查看
UserDao.java
register.jsp
配置JNDI数据源
步骤一、在Tomcat6.0解压目录conf下找到context.xml,在其中的<Context></Context> 中加入如下代码(要根据自己的情况稍加修改):
步骤二、在工程应用中/WEB-INF/下的web.xml中加入如下代码(要根据自己的情况稍加修改):
步骤三、把jar包(可换更高版本)加到Tomcat安装目录中的lib目录下和工程中的lib目录下。
通过这三步,一个基本的数据源就配置成功了!
package dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; import model.ex01.User; public class UserDao { private DataSource dataSource; /** * 在构造方法中初始化数据源对象。 */ public UserDao() { Context ctx; try { ctx = new InitialContext(); dataSource = (DataSource) ctx.lookup("java:comp/env/jdbc/CH11"); } catch (NamingException e) { e.printStackTrace(); } } /** * dataSource的访问器方法。 * * @return 数据源对象 */ public DataSource getDataSource() { return dataSource; } /** * 实现用户注册功能,将用户信息保存到数据库表reg_user中。 * * @param user * User对象,保存了用户提交的注册信息 * @return 注册成功后的User对象 */ public User register(User user) throws SQLException { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try { conn = getDataSource().getConnection(); String sql = "insert into reg_user(username,password,sex,email,pwd_question,pwd_answer,reg_date) values(?,?,?,?,?,?,?)"; pstmt = conn.prepareStatement(sql); int index = 0; pstmt.setString(++index, user.getUsername()); pstmt.setString(++index, user.getPassword()); pstmt.setString(++index, user.getSex()); pstmt.setString(++index, user.getEmail()); pstmt.setString(++index, user.getPwdQuestion()); pstmt.setString(++index, user.getPwdAnswer()); pstmt.setString(++index, user.getRegDate()); pstmt.execute(); pstmt.close(); sql = "select @@identity"; pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); if (rs.next()) user.setId(rs.getInt(1)); else { return null; } } catch (SQLException e) { throw e; } finally { closeResultSet(rs); closePreparedStatement(pstmt); closeConnection(conn); } return user; } /** * 关闭ResultSet对象 * * @param rs */ private void closeResultSet(ResultSet rs) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } } /** * 关闭PreparedStatement对象 * * @param pstmt */ private void closePreparedStatement(PreparedStatement pstmt) { if (pstmt != null) { try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } pstmt = null; } } /** * 关闭数据库链接 * * @param conn */ private void closeConnection(Connection conn) { if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } }User.java
package model.ex01; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String username; private String password; private String sex; private String email; private String pwdQuestion; private String pwdAnswer; private String regDate; private String lastLoginDate; private String lastLoginIp; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPwdQuestion() { return pwdQuestion; } public void setPwdQuestion(String pwdQuestion) { this.pwdQuestion = pwdQuestion; } public String getPwdAnswer() { return pwdAnswer; } public void setPwdAnswer(String pwdAnswer) { this.pwdAnswer = pwdAnswer; } public String getRegDate() { return regDate; } public void setRegDate(String regDate) { this.regDate = regDate; } public String getLastLoginDate() { return lastLoginDate; } public void setLastLoginDate(String lastLoginDate) { this.lastLoginDate = lastLoginDate; } public String getLastLoginIp() { return lastLoginIp; } public void setLastLoginIp(String lastLoginIp) { this.lastLoginIp = lastLoginIp; } public static long getSerialversionuid() { return serialVersionUID; } }RegisterAction.java
package action.ex01; import java.text.SimpleDateFormat; import java.util.Date; import dao.UserDao; import model.ex01.User; import com.opensymphony.xwork2.ActionSupport; public class RegisterAction extends ActionSupport { private static final long serialVersionUID = 1L; private User user; private UserDao userDao; /** * 在构造方法中初始化UserDao对象 */ public RegisterAction() { userDao = new UserDao(); } public void setUserDao(UserDao userDao) { this.userDao = userDao; } /** * 请求register!default.action,调用doDefault方法 */ public String doDefault() throws Exception { return INPUT; } /** * 调用UserDao的register方法注册用户 */ public String execute() throws Exception { Date dt = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); user.setRegDate(sdf.format(dt)); userDao.register(user); return SUCCESS; } /** * 为user对象提供getter方法 * * @return */ public User getUser() { return user; } /** * 为user对象提供setter方法 * * @param user */ public void setUser(User user) { this.user = user; } }struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.i18n.encoding" value="UTF-8" /> <package name="default" extends="struts-default"> <action name="register" class="action.ex01.RegisterAction"> <!-- 配置异常映射,当RegisterAction抛出Exception异常时,向用户显示error.jsp页面 --> <exception-mapping result="error" exception="java.lang.Exception" /> <result name="input">/WEB-INF/pages/register.jsp</result> <result name="success">/WEB-INF/pages/success.jsp</result> <result name="error">/WEB-INF/pages/error.jsp</result> </action> </package> </struts>web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>/WEB-INF/pages/register.jsp</welcome-file> </welcome-file-list> <resource-ref> <description>SQL DataSource</description> <res-ref-name>jdbc/CH11</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>
register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>用户注册</title> </head> <body> <form action="register.action" method="post"> <table border="0"> <tr> <td>用户名:</td> <td><input type="text" name="user.username" /></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="user.password" /></td> </tr> <tr> <td>性别:</td> <td> <input type="radio" name="user.sex" value="男" checked/>男 <input type="radio" name="user.sex" value="女" />女 </td> </tr> <tr> <td>邮件地址:</td> <td><input type="text" name="user.email"/></td> </tr> <tr> <td>密码问题:</td> <td><input type="text" name="user.pwdQuestion"/></td> </tr> <tr> <td>密码答案:</td> <td><input type="text" name="user.pwdAnswer"/></td> </tr> <tr> <td><input type="submit" value="注册"/></td> <td><input type="reset" value="重填"/></td> </tr> </table> </form> </body> </html>success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>注册成功</title> </head> <body> <s:property value="user.username"/>,恭喜你注册成功! </body> </html>error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <% //得到Web应用程序的上下文路径 String path = request.getContextPath(); //构建Web应用程序上下文路径的完整URL String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>注册失败</title> </head> <body> 注册失败,原因是:<s:property value="exception"/>。<br> 请<a href="<%=basePath%>register!default.action">重新注册</a> </body> </html>
配置JNDI数据源
步骤一、在Tomcat6.0解压目录conf下找到context.xml,在其中的<Context></Context> 中加入如下代码(要根据自己的情况稍加修改):
<Resource name="jdbc/CH11" auth="Container" type="javax.sql.DataSource" driverClassName="net.sourceforge.jtds.jdbc.Driver" url="jdbc:jtds:sqlserver://localhost:1433/CH11" username="sa" password="" maxActive="200" maxIdle="30" maxWait="-1"/>
步骤二、在工程应用中/WEB-INF/下的web.xml中加入如下代码(要根据自己的情况稍加修改):
<resource-ref> <description>SQL DataSource</description> <res-ref-name>jdbc/CH11</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
步骤三、把jar包(可换更高版本)加到Tomcat安装目录中的lib目录下和工程中的lib目录下。
通过这三步,一个基本的数据源就配置成功了!
相关文章推荐
- Tomcat6.0配置JNDI数据源完整例子
- Tomcat8.0配置JNDI数据源完整例子
- Tomcat6.0配置JNDI数据源完整例子
- 一个oracle 完整创建 tablespace 的例子
- Oracle学习笔记_05_ 一个创建表空间、创建用户、授权的完整过程
- 创建一个shiro例子(未完成)
- 一个理解js动态创建节点并注册事件及传递参数的例子
- .net C# 跨越线程调用窗体上的控件一个完整的例子
- Flex中如何利用PopUpButton控件创建一个弹出TitleWindow的例子
- 一个完整的语法分析、词法分析例子——Universal Pasrser
- 【3】创建一个简单的Laravel例子
- struts+spring+hibernate的一个完整的例子
- 一个完整openlayer的例子,包括marker,popup等
- Flex:在LineChart图表中创建一个自定义的LinearAxis函数标签(Tip提示)的例子
- Flex中通过isPopUp属性创建一个不可拖动TitleWindow的例子
- Flex中如何创建一个线性斜度填充列图(ColumnChart)的例子
- oracle一个创建用户、创建表空间、授权、建表的完整过程
- 用java接收lotus邮件一个完整例子
- C++调用C# com组件:一个完整的的小例子
- 一个完整的MapXtreme例子