您好,欢迎来到九壹网。
搜索
您的当前位置:首页javaweb项目基础步骤

javaweb项目基础步骤

来源:九壹网
目录

先连接数据库:新建DBTest类代码如下: ................................................ 错误!未定义书签。 导入web.xml文件放在WEB-INF文件夹下,修改其内部代码: ............. 错误!未定义书签。 导入mysql.jar包放在lib文件夹下 .............................................................. 错误!未定义书签。 编写context.xml文件放入META-INF文件夹下,并修改内部代码: ...... 错误!未定义书签。 新建一个com.ambow.myweb.util的包 ........................................................ 错误!未定义书签。 新建DBUtil类: ............................................................................................ 错误!未定义书签。 新建一个com.ambow.myweb.pojo的包 ...................................................... 错误!未定义书签。 新建一个VIP的类:根据数据库表中的列名,声明私有变量名(与列名相同,数据类型与数据库中数据类型相同),并同时生命get,set方法:部分代码: ........... 错误!未定义书签。 新建一个com.ambow.myweb.dao的包 ....................................................... 错误!未定义书签。 新建一个名为BaseDao的接口,具体代码如下: ..................................... 错误!未定义书签。 在com.ambow.myweb.dao中另新建一个名为VIPDao的接口,并继承BaseDao接口,具体代码如下:......................................................................................................... 错误!未定义书签。 新建一个包名为com.ambow.dao.impl; ..................................................... 错误!未定义书签。 在此包中新建一个BaseDaoImpl抽象类去实现BaseDao的方法; .......... 错误!未定义书签。 在com.ambow.dao.impl;包中新建一个VIPDAOImpl的类 ....................... 错误!未定义书签。 在WebContent的文件下新建一个名为login的jsp文件。作为起始页:错误!未定义书签。 新建一个名为com.ambow.myweb.servlet的包; ...................................... 错误!未定义书签。 新建一个LoginServlet的类。 ....................................................................... 错误!未定义书签。 新建com.ambow.myweb.factory;新建一个DAOFactory类......................... 错误!未定义书签。 新建一个server包;创建一个VIPServer接口 ........................................... 错误!未定义书签。 新建一个server.impl包创建一个VIPServerImpl类 .................................... 错误!未定义书签。 在factory包中新建一个ServerFactory的类。 ........................................... 错误!未定义书签。 在loginservlet中写进入主页代码 ................................................................ 错误!未定义书签。

先连接数据库:新建DBTest类代码如下:

packagecom.ambow.myweb.test; importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.SQLException; publicclassDBTest {

publicstaticvoid main(String[] args) {

try {

Class.forName(\"com.mysql.jdbc.Driver\"); Connection

conn=DriverManager.getConnection(\"jdbc:mysql://localhost:3306/test\", \"root\", \"\"); }

}

System.out.println(conn);

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block e.printStackTrace();

} catch (SQLException e) { }

// TODO Auto-generated catch block e.printStackTrace();

导入web.xml文件放在WEB-INF文件夹下,修改其内部代码:

最后配置

login

com.ambow.bbs.servlet.LoginServlet

login /login

导入mysql.jar包放在lib文件夹下 编写context.xml文件放入META-INF文件夹下,并修改内部代码:

auth=\"Container\"

type=\"javax.sql.DataSource\"

driverClassName=\"com.mysql.jdbc.Driver\"

url=\"jdbc:mysql://localhost:3306/myweb\"//myweb为工程名 username=\"root\" password=\"root\" maxWait=\"-1\" maxActive=\"30\" maxIdle=\"10\"/>

新建一个com.ambow.myweb.util的包 新建DBUtil类:

packagecom.ambow.myweb.util; importjava.sql.Connection; importjava.sql.SQLException; importjavax.naming.Context; importjavax.naming.InitialContext; importjavax.naming.NamingException; importjavax.sql.DataSource; publicclassDBUtil {

privatestaticDataSourcedataSource;

//获取连接池 static {

try {

//找到本地Java命名服务(JNDI)的根 Context context = (Context)

newInitialContext().lookup(\"java:comp/env\");

}

publicstatic Connection getConnection() { }

publicstaticvoid close(Connection conn) {

if(conn!=null) {

try {

//将连接还回连接池中 conn.close();

Connection conn = null; try {

//从连接池中取一个连接 conn = dataSource.getConnection();

//从JNDI根上查找目标数据库连接池

dataSource = (DataSource) context.lookup(\"jdbc/bbs\");

} catch (NamingException e) { }

// TODO Auto-generated catch block e.printStackTrace();

} catch (SQLException e) { }

return conn;

// TODO Auto-generated catch block e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

}

}

}

}

e.printStackTrace();

新建一个com.ambow.myweb.pojo的包 新建一个VIP的类:根据数据库表中的列名,声明私有变量名(与列名相同,数据类型与数据库中数据类型相同),并同时生命get,set方法:部分代码:

publicclass VIP {

privateStringusername; privateStringpassword; privateintexperience; publicStringgetUsername() {

}

publicvoidsetUsername(String username) { }

public String getPassword() { }

publicvoidsetPassword(String password) { }

publicintgetExperience() { }

returnexperience; this.password = password; returnpassword;

this.username = username; returnusername;

publicvoidsetExperience(int experience) { }

this.experience = experience;

新建一个com.ambow.myweb.dao的包 新建一个名为BaseDao的接口,具体代码如下:

packagecom.ambow.myweb.dao; importjava.util.List; /*

* 泛型接口,用于定义DAO层所有表的CRUD * T:表的类型 * ID:表的主键类型

* 此接口的所有CRUD行为都是基于对象的 */

publicinterfaceBaseDAO { //增删改 void add(T t); void update(T t); void delete(T t);

//根据主键查找一个对象 T getObject(ID id); //查所有对象

ListgetObjectsAll(); //根据sql语句查询对象 ListgetObjects(String sql); //有条件的分页查询

ListgetObjects(String sql,intstart,int range); //无条件分页查询

ListgetObjectsAll(intstart,int range);

}

//根据sql语句计算查询总记录数 intgetCount(String sql);

在com.ambow.myweb.dao中另新建一个名为VIPDao的接口,并继承BaseDao接口,具体代码如下:

packagecom.ambow.myweb.dao;

importcom.ambow.myweb.pojo.VIP; /*

* 针对vip表的CRUD的定义

* BaseDAO中的所有T,在这里替换成了VIP * BaseDAO中的所有ID,在这里替换成了String */

publicinterfaceVIPDaoextendsBaseDAO { }

新建一个包名为com.ambow.dao.impl; 在此包中新建一个BaseDaoImpl抽象类去实现BaseDao的方法;

代码如下:

packagecom.ambow.myweb.dao.impl; importjava.sql.Connection; importjava.sql.ResultSet; importjava.sql.SQLException; importjava.sql.Statement;

importcom.ambow.myweb.dao.BaseDAO;

importcom.ambow.myweb.util.DBUtil; /*

* BaseDAO的实现类

* 主要功能:实现一些与表结构无关的公共的行为 */

publicabstractclassBaseDaoImplimplementsBaseDAO {

@Override

//?????????为什么用到抽象类

//根据sql语句计算查询总记录数 }

publicintgetCount(String sql) { }

Connection conn = DBUtil.getConnection(); try {

//得到容器对象

Statement stm = conn.createStatement(); //发送sql语句,得到结果

ResultSetrs = stm.executeQuery(sql); //遍历结果集 if(rs.next()) { }

returnrs.getInt(1);

} catch (SQLException e) { } return 0;

// TODO Auto-generated catch block e.printStackTrace();

在com.ambow.dao.impl;包中新建一个VIPDAOImpl的类

代码如下:packagecom.ambow.myweb.dao.impl;

importjava.sql.Connection; importjava.sql.PreparedStatement; importjava.sql.ResultSet; importjava.sql.SQLException; importjava.util.ArrayList; importjava.util.List;

importcom.ambow.myweb.dao.VIPDao; importcom.ambow.myweb.pojo.VIP; importcom.ambow.myweb.util.DBUtil; /*

* 实现vip表的具体的CRUD */

publicclassVIPDAOImplextendsBaseDaoImpl

@Override

publicvoid add(VIP t) {

Connection conn = DBUtil.getConnection();

String sql = \"insert into vip values(?, ?, 0, ?, ?, ?, ?, ?, 0)\"; try {

PreparedStatementpstm = conn.prepareStatement(sql);

pstm.setString(1, t.getUsername());

implementsVIPDao{

}

pstm.setString(2, t.getPassword()); pstm.setString(3, t.getHeadImage()); pstm.setString(4, t.getPhone()); pstm.setString(5, t.getEmail()); pstm.setInt(6, t.getState());

pstm.setTimestamp(7, t.getRegistTime());

pstm.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block e.printStackTrace();

} finally { }

DBUtil.close(conn);

@Override

publicvoid update(VIP t) {

Connection conn = DBUtil.getConnection(); //注册时间不能修改

String sql = \"update vip set password=?, experience=?, \" +

\"head_image=?, phone=?, email=?, state=?, \" + \"sign_days=? where username=?\";

try {

PreparedStatementpstm = conn.prepareStatement(sql);

pstm.setString(1, t.getPassword()); pstm.setInt(2, t.getExperience()); pstm.setString(3, t.getHeadImage()); pstm.setString(4, t.getPhone()); pstm.setString(5, t.getEmail());

}

pstm.setInt(6, t.getState()); pstm.setInt(7, t.getSignDays()); pstm.setString(8, t.getUsername());

pstm.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block e.printStackTrace();

} finally { }

DBUtil.close(conn);

@Override

publicvoid delete(VIP t) { }

Connection conn = DBUtil.getConnection();

String sql = \"delete from vip where username='\"+t.getUsername()+\"'\"; try {

conn.createStatement().executeUpdate(sql);

} catch (SQLException e) {

// TODO Auto-generated catch block e.printStackTrace();

} finally { }

DBUtil.close(conn);

@Override

public VIP getObject(String id) {

String sql = \"select username, password, experience, head_image, \" +

}

\"phone, email, state, regist_time, sign_days from vip \" + \"where username='\"+id+\"'\";

Listvips = getObjects(sql);

//按主键查询,最多能查询一条记录,因此没有记录时,返回null if(vips.size()>0) {

returnvips.get(0);

} else { }

returnnull;

@Override

public ListgetObjectsAll() { }

String sql = \"select username, password, experience, head_image, \" +

returngetObjects(sql, 0, Integer.MAX_VALUE);

\"phone, email, state, regist_time, sign_days from vip\";

@Override

public ListgetObjects(String sql) { }

// TODO Auto-generated method stub

returngetObjects(sql, 0, Integer.MAX_VALUE);

@Override

public ListgetObjects(String sql, int start, int range) {

//start从0开始

sql = sql + \" limit \"+start+\+range;

Connection conn = DBUtil.getConnection();

//创建一个集合,用于存放查询的数据 Listvips = newArrayList(); try {

ResultSetrs = conn.createStatement().executeQuery(sql);

//循环遍历结果集,并将结果集中的每一行数据取出放到一个vip对象

while (rs.next()) { }

//创建一个vip对象,用于存放一行数据 VIP vip = newVIP();

vip.setUsername(rs.getString(1)); vip.setPassword(rs.getString(2)); vip.setExperience(rs.getInt(3)); vip.setHeadImage(rs.getString(4)); vip.setPhone(rs.getString(5)); vip.setEmail(rs.getString(6)); vip.setState(rs.getInt(7));

vip.setRegistTime(rs.getTimestamp(8)); vip.setSignDays(rs.getInt(9));

//将一个vip对象放到集合中 vips.add(vip);

} catch (SQLException e) {

// TODO Auto-generated catch block e.printStackTrace();

} finally {

DBUtil.close(conn);

}

}

}

returnvips;

@Override

public ListgetObjectsAll(int start, int range) { }

String sql = \"select username, password, experience, head_image, \" +

returngetObjects(sql, start, range);

\"phone, email, state, regist_time, sign_days from vip\";

在WebContent的文件下新建一个名为login的jsp文件。作为起始页:

<%@pagelanguage=\"java\"contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>

Insert title here

functionshowError() {

//如果error属性有值,说明有错误信息,显示div if('${error}'!='') {

//得到div对象

vardivObj = document.getElementById(\"showDiv\");

//设置div的内容,innerHTML是设置一个元素开始标签和结束标签中

间的内容

}

}

divObj.innerHTML = '${error}'; //显示div

divObj.style.display = 'block';

//post、get能在地址栏里显示不显示文本

框所输入的内容,post不显示,get显示

用户名

密码

忘记密码   注册

新建一个名为com.ambow.myweb.servlet的包;

新建一个LoginServlet的类。

publicclassLoginServletextendsHttpServlet {

@Override

protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response) }

@Override

protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

throwsServletException, IOException {

doPost(request, response);

//设置请求和响应的编码方式 request.setCharacterEncoding(\"UTF-8\");

response.setContentType(\"text/html;charset=UTF-8\");

//获取上传参数,参数名和表单中数据的name属性一致 String username = request.getParameter(\"username\");

String password = request.getParameter(\"password\");//所有的都这么写

新建com.ambow.myweb.factory;新建一个DAOFactory类

代码如下:packagecom.ambow.myweb.factory;

importcom.ambow.myweb.dao.VIPDao;

importcom.ambow.myweb.dao.impl.VIPDAOImpl;

publicclassDAOFactory { }

publicstaticVIPDaogetVipdao() { }

returnnewVIPDAOImpl();

新建一个server包;创建一个VIPServer接口

packagecom.ambow.bbs.server;

importcom.ambow.bbs.pojo.VIP;

publicinterfaceVIPServer { }

VIP login(String username, String password); /*

* 添加一个查看某个用户是否存在的方法定义 * 形参:用户名 * 返回:用户邮箱 */

String findEmailByUsername(String username);

新建一个server.impl包创建一个VIPServerImpl类

packagecom.ambow.myweb.server.impl;

importjava.util.List;

importcom.ambow.myweb.dao.VIPDao; importcom.ambow.myweb.factory.DAOFactory; importcom.ambow.myweb.pojo.VIP; importcom.ambow.myweb.server.VIPServer;

public class VIPServerImpl implements VIPServer {

@Override

public VIP login(String username, String password) { }

String sql = \"select username, password, experience, head_image, \" +

Listvips = vipDao.getObjects(sql); //如果用户名、密码正确返回当前用户 if(vips.size()>0) { }

return null;

if(vips.get(0).getPassword().equals(password)) { }

returnvips.get(0);

\"phone, email, state, regist_time, sign_days from vip \" + \"where username='\"+username+\"' or email='\"+username+\"' or\" + \" phone='\"+username+\"'\";

privateVIPDaovipDao = DAOFactory.getVipdao();

}}

@Override

public String findEmailByUsername(String username) {

//根据主键找到一个对象

//如果对象为null,返回null

//否则,返回对象邮箱

return null;

在factory包中新建一个ServerFactory的类。

packagecom.ambow.myweb.factory;

importcom.ambow.myweb.server.VIPServer; importcom.ambow.myweb.server.impl.VIPServerImpl;

public class ServerFactory { }

public static VIPServergetVipServer() { }

return new VIPServerImpl();

在loginservlet中写进入主页代码

if(vip==null) {

//在request中设置错误信息,以便下一个页面使用 request.setAttribute(\"error\", \"用户名或密码错误\"); //如果登陆失败,返回登陆页面

request.getRequestDispatcher(\"login.jsp\").forward(request, response);

} else { }

}

运行ok!

//登陆成功后,将用户信息存放到session作用域中 //定位或创建一个session对象

HttpSession session = request.getSession(); session.setAttribute(\"user\", vip); //进入主页

request.getRequestDispatcher(\"main.jsp\").forward(request, response);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务