首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

servlet 项目筹建步骤

2012-10-06 
servlet 项目搭建步骤注:以下仅为自己方便记忆搭建项目步骤。若想详细解析步骤可不必看此文章使用MySql建库

servlet 项目搭建步骤
注:以下仅为自己方便记忆搭建项目步骤。若想详细解析步骤可不必看此文章



使用MySql建库,名字为test,代码如下

CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 



建表,名为 users 代码如下

create table users(id int PRIMARY KEY NOT NULL auto_increment,testname varchar(45))



新建项目名为test后,

在lib文件中导入以下包
commons-logging-1.1.jarlog4j-1.2.13.jarmysql-connector-java-5.1.6-bin.jar


建个基本的dao父类,代码如下

-----------DAO父类-----------放在src目录下com.test.dao中-----

import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.Properties;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public abstract class ABaseDao {public static ResultSet rs = null;public static Connection conn = null;public static PreparedStatement pstmt = null;private Log logger = LogFactory.getLog(getClass());private static Properties p = null;//public static CallableStatement proc=null; //用于调用已储存过??public Connection getConnection() {Connection conn = null;try {if (p == null) {p = new Properties();p.load(new FileInputStream(new File(this.getClass().getResource("Config.ini").getPath())));}Class.forName(p.getProperty("database.driverClassName"));conn = DriverManager.getConnection(p.getProperty("database.url"), p.getProperty("database.username"), p.getProperty("database.password"));logger.info("Get connection success");} catch (FileNotFoundException e) {logger.error("Getconnection error " + e.toString());} catch (IOException e) {logger.error("Getconnection error " + e.toString());} catch (Exception e) {logger.error("Getconnection error " + e.toString());}return conn;}public void close() {try {if (rs != null) {rs.close();}if (conn != null) {conn.close();}if (pstmt != null) {pstmt.close();}logger.info("Close database success");} catch (Exception e) {logger.error("Close database error " + e.toString());}}}



---------------Config.ini文件--------放在src目录下com.test.dao中------------

database.driverClassName=com.mysql.jdbc.Driverdatabase.username=rootdatabase.password=rootdatabase.url=jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8


----------------DAO基本接口------放在src目录下com.test.dao中----

import java.io.Serializable;import java.util.List;public interface IBaseDao {public void add(T t);public void edit(T t);public void delete(T t);public T get(ID id);public List getAll();public List findBySql(String sql);public void batchDelete(String ids);public void batchUpdate(String ids);}


--------------建立相应povo---Users.java---放在src目录下com.test.povo中---

import java.io.Serializable;public class Users implements Serializable { /**  *   */ private static final long serialVersionUID = 8781467488122156922L; private int Id; private String testName;  public int getId() {  return Id; } public void setId(int id) {  Id = id; } public String getTestName() {  return testName; } public void setTestName(String testName) {  this.testName = testName; }}



----------建立子类DAO--UsersDao----放在src目录下com.test.dao中---
import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import com.test.povo.Users;public class UsersDao extends ABaseDao implements IBaseDao<Users, Integer> {private Log log = LogFactory.getLog(getClass());public void add(Users t) {conn = super.getConnection();try {pstmt = conn.prepareStatement("insert into users (testname)"+ " values (?,?,?,?)");pstmt.setString(1, t.getTestName());pstmt.execute();log.info("Add users success");} catch (SQLException e) {log.error("Add users error " + e.toString());} finally {super.close();}}public void batchDelete(String ids) {conn = super.getConnection();try {pstmt = conn.prepareStatement("delete from users where id in (?)");pstmt.setString(1, ids);pstmt.execute();log.info("batchDelete users success");} catch (SQLException e) {log.error("batchDelete users error " + e.toString());} finally {super.close();}}public void batchUpdate(String ids) {}public void delete(Users t) {conn = super.getConnection();try{pstmt=conn.prepareStatement("delete from users where id=? ");pstmt.setInt(1,t.getId());pstmt.execute();log.info("delete users success");}catch(SQLException e){log.error("delete users error " + e.toString());}finally{super.close();}}public void edit(Users t) {conn = super.getConnection();try{ pstmt=conn.prepareStatement("update users set testname=? where id=? ");pstmt.setString(1, t.getTestName());pstmt.setInt(2, t.getId());pstmt.execute();log.info("edit users success");}catch(SQLException e){log.error("edit users error" + e.toString());}finally{super.close();}}public List<Users> findBySql(String sql) {conn = super.getConnection();List<Users> nList=new ArrayList<Users>();try{pstmt=conn.prepareStatement(sql);rs=pstmt.executeQuery();while(rs.next()){Users album=new Users();album.setId(rs.getInt(1));album.setTestName(rs.getString(2));nList.add(album);}log.info("findBySql users success");}catch(SQLException e){log.error("findBySql users error" + e.toString());}finally{super.close();}return nList;}public Users get(Integer id) {conn = super.getConnection();Users album=new Users();try{pstmt=conn.prepareStatement("select id,testname from users where id=?");pstmt.setInt(1, id);rs=pstmt.executeQuery();while(rs.next()){album.setId(rs.getInt(1));album.setTestName(rs.getString(2));album.setId(rs.getInt(3));}log.info("get users success");}catch(SQLException e){log.error("get users error" + e.toString());}finally{super.close();}return album;}public List<Users> getAll() {conn = super.getConnection();List<Users> nList=new ArrayList<Users>();try{pstmt=conn.prepareStatement("select id,testname from users");rs=pstmt.executeQuery();while(rs.next()){Users album=new Users();album.setId(rs.getInt(1));album.setTestName(rs.getString(2));nList.add(album);}log.info("getAll Album success");}catch(SQLException e){log.error("getAll Album error" + e.toString());System.out.println("sdfsdf");}finally{super.close();}return nList;}public List<Users> findPage(int pageSize, int startRow) {conn = super.getConnection();List<Users> nList=new ArrayList<Users>();try {String hql = "select * from album limit ?,?";pstmt = conn.prepareStatement(hql);pstmt.setInt(1, startRow);pstmt.setInt(2, pageSize);rs=pstmt.executeQuery();while(rs.next()){Users album=new Users();album.setId(rs.getInt(1));album.setTestName(rs.getString(2));album.setId(rs.getInt(3));nList.add(album);}log.info("findPage users success");}catch(SQLException e){log.error("findPage users error" + e.toString());}finally{super.close();}return nList;}public List<Users> getList(int total) {conn = super.getConnection();List<Users> nList=new ArrayList<Users>();try{pstmt=conn.prepareStatement("select id,testname from users order by id desc limit 0," + total);rs=pstmt.executeQuery();while(rs.next()){Users album=new Users();album.setId(rs.getInt(1));album.setTestName(rs.getString(2));album.setId(rs.getInt(3));nList.add(album);}log.info("getAll users success");}catch(SQLException e){log.error("getAll users error" + e.toString());}finally{super.close();}return nList;}}

----------建立log4j.properties文件,为日志的配置文件--放在src目录下----
 # Set log levels     log4j.rootLogger = DEBUG, LogFile, ErrorFile    # Save the log info to the log file     log4j.appender.LogFile = org.apache.log4j.RollingFileAppender    log4j.appender.LogFile.File = /logs/powersave_info.log    log4j.appender.LogFile.Append = true   log4j.appender.LogFile.ImmediateFlush = true   log4j.appender.LogFile.MaxFileSize = 8MB    log4j.appender.LogFile.MaxBackupIndex = 256   log4j.appender.LogFile.Threshold = INFO    log4j.appender.LogFile.layout = org.apache.log4j.PatternLayout    log4j.appender.LogFile.layout.ConversionPattern = <%-d{yyyy-MM-dd HH:mm:ss}> <%t> %l %n<%p> %m%n%n       # Save the error info to the error file. A file one day.     log4j.appender.ErrorFile = org.apache.log4j.DailyRollingFileAppender    log4j.appender.ErrorFile.File = /logs/powersave_error.log    log4j.appender.ErrorFile.Append = true   log4j.appender.ErrorFile.ImmediateFlush = true   log4j.appender.ErrorFile.Threshold = ERROR    log4j.appender.ErrorFile.layout = org.apache.log4j.PatternLayout    log4j.appender.ErrorFile.layout.ConversionPattern = <%-d{yyyy-MM-dd HH:mm:ss}> <%t> %l %n<%p> %m%n%n  


dao层架构完毕

开始service层,src新建目录com.test.service

--------在该目录下新建--TestService.java---
package com.test.service;import java.util.List;import com.test.povo.Users;import com.test.dao.UsersDao;public class TestService {private UsersDao testDao;public TestService(){testDao=new UsersDao();}public Users getMember(int id){return testDao.get(id);}public void addMember(Users m){testDao.add(m);}public void deleteMember(int id){testDao.batchDelete(id+"");}public void deleteMember(String ids){testDao.batchDelete(ids);}public void updateMember(Users m){testDao.edit(m);}public List<Users> getList(){return testDao.getAll();}}


到servlet层--新建com.test.servlet目录
新建--TestServlet.java------
package com.test.servlet;import java.io.IOException;import java.io.PrintWriter;import java.net.URLDecoder;import java.net.URLEncoder;import java.util.List;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.test.povo.Users;import com.test.service.TestService;/** * Servlet implementation class AdminManagerServlet */public class TestServlet extends HttpServlet {private static final long serialVersionUID = 1L;    private TestService testService;    /**     * @see HttpServlet#HttpServlet()     */    public TestServlet() {    testService=new TestService();    }/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubString method=request.getParameter("method");if("list".equals(method)){testList(request,response);}}private void testList(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {List<Users> list=testService.getList();request.setAttribute("list", list);getServletContext().getRequestDispatcher("/jsp/list.jsp").forward(request, response); }}


--------配置web.xml-添加一下代码---
<display-name>testServlet</display-name><servlet><description></description><display-name>TestServlet</display-name><servlet-name>TestServlet</servlet-name><servlet-class>com.test.servlet.TestServlet</servlet-class></servlet><servlet-mapping><servlet-name>TestServlet</servlet-name><url-pattern>/TestServlet</url-pattern></servlet-mapping>


整个项目架构搭建完毕

测试   在WebContent下建名为jsp文件夹
新建 test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="<%=basePath%>style/css/page.css" /><title>list</title><script type="text/javascript"></script></head><body><form id="myform" name="myform" method="post" action="<%=basePath%>TestServlet?method=list"><input type="submit" value="查看用户"></input></form></body></html>


list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%@page import="java.util.List"%><%@page import="com.test.povo.Users"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="<%=basePath%>style/css/page.css" /><title>list</title><script type="text/javascript"></script></head><body>   用户名为:<br/><%List<Users> testlist=(List)request.getAttribute("list");if(!testlist.equals(null)){for(Users t:testlist){%><%=t.getTestName() %><br/><%}}%></body></html>



热点排行