Java 使用MyEclipse创建一个简单的Servlet demo
一、使用MyEclipse创建一个Web项目File ---- New ---- Web Project创建完成后,目录结构如下:二、在src(源码)目录下创建一个package三、在创建的这个package下创建Servlet鼠标右键点击这个package --- new --- Servlet打开这个创建的Servlet文件:MyServlet.ja...
一、使用MyEclipse创建一个Web项目
File ---- New ---- Web Project
创建完成后,目录结构如下:
二、在src(源码)目录下创建一个package
三、在创建的这个package下创建Servlet
鼠标右键点击这个package --- new --- Servlet
打开这个创建的Servlet文件:MyServlet.java,可以看到里面生成的Servlet常见的方法
package MyFirstServlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
/**
* Constructor of the object.
*/
public MyServlet() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
这里只需要doGet()和doPost()方法,所以,最后代码为:
package MyFirstServlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
四、配置Servlet配置文件(web.xml)
在创建的web工程下(Web6)---- WebRoot ---- web.xml
Servlet一个大致的数据流程是:首先客户在浏览器输入一串地址 ---- 然后根据地址找到web.xml中配置的url-pattern --- 然后根据servlet-nam 找到 servlet-class。
五、创建一个login.html页面
在WebRoot下创建一个login.html文件,代码如下:
<html>
<head>
<title>用户登录</title>
</head>
<body>
<h2 style="color: red">登录</h2>
<form action="/Web6/myServlet" method="post">
账号:<input type="text" name="name"><br/>
密码:<input type="password" name="pwd"><br/>
<input type="submit" value="登陆"><br/>
</form>
</body>
</html>
六、导入相关的jar包
因为这个demo是模拟用户登录,首先需要用户输入用户名和密码,然后再和数据库里的用户名和密码进行比较,相同就可以登录,不相同就登录失败。所以,这里需要用到mysql数据库,因此,需要导入mysql数据库相关的包。
c3p0-0.9.1.2.jar mysql-connector-java-5.1.39-bin.jar commons-dbutils-1.4.jar
将已准备号的jar包复制 --- 粘贴到 Web6 --- WebRoot --- WEB-INF --- lib下,然后鼠标右键点击这几个包 --- Build Path --- Add to Build Path 。
七、导入已封装好的DataSourceUtils.java工具类
在工程(Web6) --- src --- 创建package:utils ---- 将拷贝的DataSourceUtils.java粘贴在package中。内容如下:
package utils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DataSourceUtils {
private static DataSource dataSource = new ComboPooledDataSource();
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
// 直接可以获取一个连接池
public static DataSource getDataSource() {
return dataSource;
}
public static Connection getConnection() throws SQLException{
return dataSource.getConnection();
}
// 获取连接对象
public static Connection getCurrentConnection() throws SQLException {
Connection con = tl.get();
if (con == null) {
con = dataSource.getConnection();
tl.set(con);
}
return con;
}
// 开启事务
public static void startTransaction() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.setAutoCommit(false);
}
}
// 事务回滚
public static void rollback() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.rollback();
}
}
// 提交并且 关闭资源及从ThreadLocall中释放
public static void commitAndRelease() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.commit(); // 事务提交
con.close();// 关闭资源
tl.remove();// 从线程绑定中移除
}
}
// 关闭资源方法
public static void closeConnection() throws SQLException {
Connection con = getCurrentConnection();
if (con != null) {
con.close();
}
}
public static void closeStatement(Statement st) throws SQLException {
if (st != null) {
st.close();
}
}
public static void closeResultSet(ResultSet rs) throws SQLException {
if (rs != null) {
rs.close();
}
}
}
八、导入c3p0-config.xml文件
在src的根目录下导入c3p0-config.xml文件,并修改文件,修改后内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="user">root</property>
<property name="password">root</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///web?useSSL=false</property>
</default-config>
</c3p0-config>
九、创建数据库实体模型
在src下创建一个包:domain --- 创建类:Test.java(创建数据表实体模型) ,并生成set和get方法,另外生成toString方法内容如下:
package domain;
public class Test {
private int id;
private String username;
private String password;
private String email;
public int getId() {
return id;
}
public void setId(int 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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Test [id=" + id + ", username=" + username + ", password="
+ password + ", email=" + email + "]";
}
}
十、重写MyServlet.java中的方法
package MyFirstServlet;
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import domain.Test;
import utils.DataSourceUtils;
public class MyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1、获得用户名和密码
//username = zhangsan&password=123
String username = request.getParameter("username");
String password = request.getParameter("password");
//2、从数据库中验证该用户名和密码是否正确
QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource());
//执行SQL语句
String sql = "select * from test where username = ? and password = ?";//传递可变参数username和password
Test test = null;
try {
test = runner.query(sql, new BeanHandler<Test>(Test.class), username,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3、根据返回的结果给用户不同的显示信息
if(test!=null){
//用户登录成功
response.getWriter().write(test.toString());
response.getWriter().write(test.toString());
//System.out.println("xxxxxx");
}else{
//用户登录失败
response.getWriter().write("Login False!");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
十一、测试结果
启动Tomcat服务,浏览器输入:http://localhost:8080/Web6/login.html 然后输入用户名/密码登录,成功获取到toString方法的返回值。
更多推荐
所有评论(0)