spring mvc + ibatis + Oracle + ajax 轻量级架构搭建及详解 研究(后续接着跟进)
1、新建Web Project 工程,编辑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">
<!--配置Sring MVC的核心控制器DispatcherServlet -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring-*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 为DispatcherServlet建立映射 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/log4j.properties</param-value>
</context-param>
<!-- 配置log4j.xml监听器 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
<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">
<!--配置Sring MVC的核心控制器DispatcherServlet -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring-*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 为DispatcherServlet建立映射 -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:/log4j.properties</param-value>
</context-param>
<!-- 配置log4j.xml监听器 -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
2、添加spring mvc 架构所需要的JAR包
3、设置spring-data.xml、spring-servlet.xml文件
spring-data.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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 获取数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>${db.dirverClass}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
</bean>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<!-- 获取数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>${db.dirverClass}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
</bean>
</beans>
spring-servlet.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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:config.properties</value>
</property>
</bean>
<!-- 定义映射 -->
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="helloWorld.html">helloWorldAction</prop>
<prop key="userAction.html">userAction</prop>
</props>
</property>
</bean>
<bean id="userDao" class="com.examp.dao.UserDao">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 定义视图 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.InternalResourceView</value>
</property>
</bean>
<!-- 定义控制器 -->
<bean id="helloWorldAction" class="com.examp.ch23.HelloWorldAction">
<property name="helloWorld">
<value>${helloWorld}</value>
</property>
<property name="helloWorld1">
<value>${name}</value>
</property>
<property name="viewPage">
<value>${toUrl}</value>
</property>
</bean>
<!-- 根据请求参数决定方法 userAction.html?action=toDetail -->
<bean id="userAction" class="com.examp.ch23.UserAction">
<property name="dao">
<ref bean="userDao"/>
</property>
<property name="methodNameResolver">
<bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<!-- 指定参数名为action -->
<property name="paramName" value="action" />
</bean>
</property>
</bean>
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:config.properties</value>
</property>
</bean>
<!-- 定义映射 -->
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="helloWorld.html">helloWorldAction</prop>
<prop key="userAction.html">userAction</prop>
</props>
</property>
</bean>
<bean id="userDao" class="com.examp.dao.UserDao">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 定义视图 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.InternalResourceView</value>
</property>
</bean>
<!-- 定义控制器 -->
<bean id="helloWorldAction" class="com.examp.ch23.HelloWorldAction">
<property name="helloWorld">
<value>${helloWorld}</value>
</property>
<property name="helloWorld1">
<value>${name}</value>
</property>
<property name="viewPage">
<value>${toUrl}</value>
</property>
</bean>
<!-- 根据请求参数决定方法 userAction.html?action=toDetail -->
<bean id="userAction" class="com.examp.ch23.UserAction">
<property name="dao">
<ref bean="userDao"/>
</property>
<property name="methodNameResolver">
<bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<!-- 指定参数名为action -->
<property name="paramName" value="action" />
</bean>
</property>
</bean>
</beans>
4、日志配置文件 log4j.properties
################ FATAL, ERROR, WARN, INFO, DEBUG log4j.rootLogger=WARN,stdout,D,E ### stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern= %d{ABSOLUTE} %5p %c{1}\:%L - %m%n ### logFile ### ### save error to another file ### log4j.appender.D=org.apache.log4j.DailyRollingFileAppender log4j.appender.D.File=D\:/logs/info.log log4j.appender.D.Append=true #error only in this file log4j.appender.D.Threshold =INFO log4j.appender.D.layout=org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH\:mm\:ss} [%t\:%r] - [%p] %m%n
5、配置文件 config.properties
helloWorld=Good Luck! name=\u738B\u4E94 toUrl=/jsp/MyJsp.jsp db.dirverClass= oracle.jdbc.driver.OracleDriver db.url= jdbc:oracle:thin:@192.168.11.110:1521:ebank db.username=ebank db.password=ebank
6、编写实体类 UserPO.java
package com.examp.po; import java.io.Serializable; public class UserPO implements Serializable { private String id; private String name; private String password; private int type; private String email; private String phone; private int sex; private String qq; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getType() { return type; } public void setType(int type) { this.type = type; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public String getQq() { return qq; } public void setQq(String qq) { this.qq = qq; } }
7、添加数据处理类 UserDao.java
package com.examp.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.support.JdbcDaoSupport; import com.examp.po.UserPO; public class UserDao extends JdbcDaoSupport { public Collection<UserPO> doquery() { String sql = "SELECT T.ID,T.NAME,T.EMAIL,T.SEX FROM T_USER T"; return super.getJdbcTemplate().query(sql, new RowMapper() { public Object mapRow(ResultSet rs, int num) throws SQLException{ UserPO user = new UserPO(); user.setId(rs.getString("ID")); user.setName(rs.getString("NAME")); user.setEmail(rs.getString("EMAIL")); user.setSex(rs.getInt("SEX")); return user; } }); } public Collection<UserPO> getUserByID(String id) { String sql = "SELECT T.ID,T.NAME,T.EMAIL,T.SEX FROM T_USER T WHERE T.ID='"+id+"'"; return super.getJdbcTemplate().query(sql, new RowMapper() { public Object mapRow(ResultSet rs, int num) throws SQLException{ UserPO user = new UserPO(); user.setId(rs.getString("ID")); user.setName(rs.getString("NAME")); user.setEmail(rs.getString("EMAIL")); user.setSex(rs.getInt("SEX")); return user; } }); } }
8、业务处理类 HelloWorldAction.java、UserAction.java
package com.examp.ch23; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class HelloWorldAction implements Controller{ private static final Log logger = LogFactory.getLog(HelloWorldAction.class); private String helloWorld; private String viewPage; private String helloWorld1; public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse res) throws Exception { System.out.println("是否进入。。。"); logger.warn("进入HelloWorldAction 包..."); Map<String,String> model = new HashMap<String,String>(); model.put("helloWorld", getHelloWorld()); model.put("helloWorld1", getHelloWorld1()); return new ModelAndView(getViewPage(),model); } public String getHelloWorld() { return helloWorld; } public void setHelloWorld(String helloWorld) { this.helloWorld = helloWorld; } public String getViewPage() { return viewPage; } public void setViewPage(String viewPage) { this.viewPage = viewPage; } public String getHelloWorld1() { return helloWorld1; } public void setHelloWorld1(String helloWorld1) { this.helloWorld1 = helloWorld1; } }
package com.examp.ch23; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; import com.examp.dao.UserDao; import com.examp.po.UserPO; //public class UserAction implements Controller{ public class UserAction extends MultiActionController{ private static final Log logger = LogFactory.getLog(UserAction.class); private UserDao dao; public ModelAndView list(HttpServletRequest request, HttpServletResponse response) throws Exception { logger.warn("UserAction list 方法..."); Map<String,Object> model = new HashMap<String,Object>(); Collection<UserPO> list = dao.doquery(); List<UserPO> users = new ArrayList<UserPO>(); for (UserPO userPO : list) { UserPO user = new UserPO(); user.setId(userPO.getId()); user.setName(userPO.getName()); user.setSex(userPO.getSex()); user.setEmail(userPO.getEmail()); users.add(user); } model.put("list", users); return new ModelAndView("/jsp/userList.jsp",model); } public ModelAndView detail(HttpServletRequest req,HttpServletResponse res) throws Exception{ String id = req.getParameter("id"); Collection<UserPO> list = dao.getUserByID(id); logger.warn("UserAction detail 方法..."); List<UserPO> users = new ArrayList<UserPO>(); for (UserPO userPO : list) { UserPO user = new UserPO(); user.setId(userPO.getId()); user.setName(userPO.getName()); user.setSex(userPO.getSex()); user.setEmail(userPO.getEmail()); users.add(user); } Map<String,Object> model = new HashMap<String,Object>(); model.put("list", users); return new ModelAndView("/jsp/userDetail.jsp",model); } public UserDao getDao() { return dao; } public void setDao(UserDao dao) { this.dao = dao; } }
9、编辑jsp页面 MyJsp.jsp、userDetail.jsp、userList.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'MyJsp.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <% String str = (String)request.getAttribute("helloWorld"); String param = (String)request.getAttribute("param"); %> <body> This is my JSP page. <%=str %>${helloWorld1}<br> ${helloWorld} + </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@page import="com.examp.po.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'MyJsp.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <% String str = (String)request.getAttribute("helloWorld"); //List list = (List)request.getAttribute("list"); %> <body> <div>用户个人信息</div> <table> <tr> <td> 用户ID </td> <td> 用户名 </td> <td> 性别 </td> <td> 邮件 </td> </tr> <c:forEach var="user" items="${list}"> <tr> <td><a href="/ch23/userAction.html?action=detail&id=${user.id}">${user.id}</a></td> <td>${user.name}</td> <td> <c:if test="${user.sex == 0}"> 保密 </c:if> <c:if test="${user.sex == 1}"> 男 </c:if> <c:if test="${user.sex == 2}"> 女 </c:if> </td> <td>${user.email}</td> </tr> </c:forEach> </table> </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@page import="com.examp.po.*" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'MyJsp.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <% String str = (String)request.getAttribute("helloWorld"); //List list = (List)request.getAttribute("list"); %> <body> <%-- This is my JSP page. <%=str %><br> --%> <%-- <% for(int i = 0; i < list.size();i++){ UserPO user = (UserPO)list.get(i); %> <%=user.getName()%><br/> <% } %> --%> <table> <tr> <td> 用户ID </td> <td> 用户名 </td> <td> 性别 </td> <td> 邮件 </td> </tr> <c:forEach var="user" items="${list}"> <tr> <td><a href="/ch23/userAction.html?action=detail&id=${user.id}">${user.id}</a></td> <td>${user.name}</td> <td> <c:if test="${user.sex == 0}"> 保密 </c:if> <c:if test="${user.sex == 1}"> 男 </c:if> <c:if test="${user.sex == 2}"> 女 </c:if> </td> <td>${user.email}</td> </tr> </c:forEach> </table> </body> </html>
10、项目结构图