drop database if exists liuyan;
create database liuyan;
use liuyan;
create table user_inf
(
id int auto_increment primary key,
name varchar(255),
pass varchar(255)
);
insert into user_inf
values(null,'crazyit','123');
insert into user_inf
values(null,'tiger','123');
<%-- 网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> author yeeku.H.lee kongyeeku@163.com version 1.0 Copyright (C), 2001-2016, yeeku.H.Lee This program is protected by copyright laws. Program Name: Date: --%> <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <!DOCtype html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> 收集参数的表单页 </title> <meta name="website" content="http://www.crazyit.org" /> </head> <body> <form id="form1" method="post" action="aa"> 用户名:<br/> <input type="text" name="name"><hr/> 性别:<br/> 男:<input type="radio" name="gender" value="男"> 女:<input type="radio" name="gender" value="女"><hr/> 喜欢的颜色:<br/> 红:<input type="checkbox" name="color" value="红"> 绿:<input type="checkbox" name="color" value="绿"> 蓝:<input type="checkbox" name="color" value="蓝"><hr/> 来自的国家:<br/> <select name="country"> <option value="中国">中国</option> <option value="美国">美国</option> <option value="俄罗斯">俄罗斯</option> </select><hr/> <input type="submit" value="提交"> <input type="reset" value="重置"> </form> </body> </html>
<%-- 网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> author yeeku.H.lee kongyeeku@163.com version 1.0 Copyright (C), 2001-2016, yeeku.H.Lee This program is protected by copyright laws. Program Name: Date: --%> <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> 用户登录 </title> <meta name="website" content="http://www.crazyit.org" /> </head> <body> <!-- 输出出错提示 --> <span style="color:red;font-weight:bold"> <% if (request.getAttribute("err") != null) { out.println(request.getAttribute("err") + "<br/>"); } %> </span> 请输入用户名和密码: <!-- 登录表单,该表单提交到一个Servlet --> <form id="login" method="post" action="login"> 用户名:<input type="text" name="username"/><br/> 密  码:<input type="password" name="pass"/><br/> <input type="submit" value="登录"/><br/> </form> </body> </html>
<%-- 网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> author yeeku.H.lee kongyeeku@163.com version 1.0 Copyright (C), 2001-2016, yeeku.H.Lee This program is protected by copyright laws. Program Name: Date: --%> <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> 欢迎页面 </title> <meta name="website" content="http://www.crazyit.org" /> </head> <body> <h3>欢迎登录</h3> <%=session.getAttribute("name")%>,欢迎登录! </body> </html>
<?xml version="1.0" encoding="GBK"?> <!-- 定义生成文件的project根元素,默认的target为空 --> <project name="web" basedir="." default=""> <!-- 定义三个简单属性 --> <property name="src" value="src"/> <property name="classes" value="classes"/> <!-- 定义一组文件和目录集 --> <path id="classpath"> <fileset dir="lib"> <include name="*.jar"/> </fileset> <pathelement path="${classes}"/> </path> <!-- 定义compile target,用于编译Java源文件 --> <target name="compile" description="编译Java源文件"> <!-- 先删除classes属性所代表的文件夹 --> <delete dir="${classes}"/> <!-- 创建classes属性所代表的文件夹 --> <mkdir dir="${classes}"/> <!-- 编译Java文件,编译后的class文件放到classes属性所代表的文件夹内 --> <javac destdir="${classes}" debug="true" includeantruntime="yes" deprecation="false" optimize="false" failonerror="true"> <!-- 指定需要编译的Java文件所在的位置 --> <src path="${src}"/> <!-- 指定编译Java文件所需要第三方类库所在的位置 --> <classpath refid="classpath"/> </javac> </target> </project>
<?xml version="1.0" encoding="GBK"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- 配置Servlet的名字 --> <servlet> <!-- 指定Servlet的名字, 相当于指定@WebServlet的name属性 --> <servlet-name>firstServlet</servlet-name> <!-- 指定Servlet的实现类 --> <servlet-class>lee.FirstServlet</servlet-class> </servlet> <!-- 配置Servlet的URL --> <servlet-mapping> <!-- 指定Servlet的名字 --> <servlet-name>firstServlet</servlet-name> <!-- 指定Servlet映射的URL地址, 相当于指定@WebServlet的urlPatterns属性--> <url-pattern>/aa</url-pattern> </servlet-mapping> <servlet> <!-- Servlet名 --> <servlet-name>timerServlet</servlet-name> <!-- Servlet的实现类 --> <servlet-class>lee.TimerServlet</servlet-class> <!-- 配置应用启动时,创建Servlet实例 ,相当于指定@WebServlet的loadOnStartup属性--> <load-on-startup>1</load-on-startup> </servlet> <servlet> <!-- 配置Servlet名 --> <servlet-name>testServlet</servlet-name> <!-- 指定Servlet的实现类 --> <servlet-class>lee.TestServlet</servlet-class> <!-- 配置Servlet的初始化参数:driver --> <init-param> <param-name>driver</param-name> <param-value>com.mysql.jdbc.Driver</param-value> </init-param> <!-- 配置Servlet的初始化参数:url --> <init-param> <param-name>url</param-name> <param-value>jdbc:mysql://localhost:3306/javaee</param-value> </init-param> <!-- 配置Servlet的初始化参数:user --> <init-param> <param-name>user</param-name> <param-value>root</param-value> </init-param> <!-- 配置Servlet的初始化参数:pass --> <init-param> <param-name>pass</param-name> <param-value>32147</param-value> </init-param> </servlet> <servlet-mapping> <!-- 确定Servlet名 --> <servlet-name>testServlet</servlet-name> <!-- 配置Servlet映射的URL --> <url-pattern>/testServlet</url-pattern> </servlet-mapping> </web-app>
package lee; import java.sql.*; /** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */ public class DbDao { private Connection conn; private String driver; private String url; private String username; private String pass; public DbDao() { } public DbDao(String driver , String url , String username , String pass) { this.driver = driver; this.url = url; this.username = username; this.pass = pass; } // 下面是各个成员属性的setter和getter方法 public void setDriver(String driver) { this.driver = driver; } public void setUrl(String url) { this.url = url; } public void setUsername(String username) { this.username = username; } public void setPass(String pass) { this.pass = pass; } public String getDriver() { return (this.driver); } public String getUrl() { return (this.url); } public String getUsername() { return (this.username); } public String getPass() { return (this.pass); } // 获取数据库连接 public Connection getConnection() throws Exception { if (conn == null) { Class.forName(this.driver); conn = DriverManager.getConnection(url,username, this. pass); } return conn; } // 插入记录 public boolean insert(String sql , Object... args) throws Exception { PreparedStatement pstmt = getConnection().prepareStatement(sql); for (int i = 0; i < args.length ; i++ ) { pstmt.setObject( i + 1 , args[i]); } if (pstmt.executeUpdate() != 1) { return false; } pstmt.close(); return true; } // 执行查询 public ResultSet query(String sql , Object... args) throws Exception { PreparedStatement pstmt = getConnection().prepareStatement(sql); for (int i = 0; i < args.length ; i++ ) { pstmt.setObject( i + 1 , args[i]); } return pstmt.executeQuery(); } // 执行修改 public void modify(String sql , Object... args) throws Exception { PreparedStatement pstmt = getConnection().prepareStatement(sql); for (int i = 0; i < args.length ; i++ ) { pstmt.setObject( i + 1 , args[i]); } pstmt.executeUpdate(); pstmt.close(); } // 关闭数据库连接的方法 public void closeConn() throws Exception { if (conn != null && !conn.isClosed()) { conn.close(); } } }
package lee; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.*; /** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */ // Servlet必须继承HttpServlet类 @WebServlet(name="firstServlet" , urlPatterns={"/firstServlet"}) public class FirstServlet extends HttpServlet { // 客户端的响应方法,使用该方法可以响应客户端所有类型的请求 public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,java.io.IOException { // 设置解码方式 request.setCharacterEncoding("GBK"); response.setContentType("text/html;charSet=GBK"); // 获取name的请求参数值 String name = request.getParameter("name"); // 获取gender的请求参数值 String gender = request.getParameter("gender"); // 获取color的请求参数值 String[] color = request.getParameterValues("color"); // 获取country的请求参数值 String national = request.getParameter("country"); // 获取页面输出流 PrintStream out = new PrintStream(response.getOutputStream()); //输出HTML页面标签 out.println("<html>"); out.println("<head>"); out.println("<title>Servlet测试</title>"); out.println("</head>"); out.println("<body>"); // 输出请求参数的值:name out.println("您的名字:" + name + "<hr/>"); // 输出请求参数的值:gender out.println("您的性别:" + gender + "<hr/>"); // 输出请求参数的值:color out.println("您喜欢的颜色:"); for(String c : color) { out.println(c + " "); } out.println("<hr/>"); out.println("您喜欢的颜色:"); // 输出请求参数的值:national out.println("您来自的国家:" + national + "<hr/>"); out.println("</body>"); out.println("</html>"); } }
package lee; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.PrintWriter; import java.io.IOException; import java.sql.*; /** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */ @WebServlet(name="login" , urlPatterns={"/login"}) public class LoginServlet extends HttpServlet { // 响应客户端请求的方法 public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,java.io.IOException { String errMsg = ""; // Servlet本身并不输出响应到客户端,因此必须将请求转发到视图页面 RequestDispatcher rd; // 获取请求参数 String username = request.getParameter("username"); String pass = request.getParameter("pass"); try { // Servlet本身并不执行任何的业务逻辑处理,它调用JavaBean处理用户请求 DbDao dd = new DbDao("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/liuyan","root","32147"); // 查询结果集 ResultSet rs = dd.query("select pass from user_inf" + " where name = ?", username); if (rs.next()) { // 用户名和密码匹配 if (rs.getString("pass").equals(pass)) { // 获取session对象 HttpSession session = request.getSession(true); // 设置session属性,跟踪用户会话状态 session.setAttribute("name" , username); // 获取转发对象 rd = request.getRequestDispatcher("/welcome.jsp"); // 转发请求 rd.forward(request,response); } else { // 用户名和密码不匹配时 errMsg += "您的用户名密码不符合,请重新输入"; } } else { // 用户名不存在时 errMsg += "您的用户名不存在,请先注册"; } } catch (Exception e) { e.printStackTrace(); } // 如果出错,转发到重新登录 if (errMsg != null && !errMsg.equals("")) { rd = request.getRequestDispatcher("/login.jsp"); request.setAttribute("err" , errMsg); rd.forward(request,response); } } }
package lee; import java.sql.*; import javax.servlet.http.*; import javax.servlet.*; import javax.servlet.annotation.*; import java.io.*; /** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */ @WebServlet(name="testServlet" , urlPatterns={"/testServlet"} , initParams={ @WebInitParam(name="driver", value="com.mysql.jdbc.Driver"), @WebInitParam(name="url", value="jdbc:mysql://localhost:3306/javaee"), @WebInitParam(name="user", value="root"), @WebInitParam(name="pass", value="32147")}) public class TestServlet extends HttpServlet { // 重写init方法 public void init(ServletConfig config) throws ServletException { // 重写该方法,应该首先调用父类的init()方法 super.init(config); } // 响应客户端请求的方法 public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,java.io.IOException { try { // 获取ServletConfig对象 ServletConfig config = getServletConfig(); // 通过ServletConfig对象获取配置参数:dirver String driver = config.getInitParameter("driver"); // 通过ServletConfig对象获取配置参数:url String url = config.getInitParameter("url"); // 通过ServletConfig对象获取配置参数:user String user = config.getInitParameter("user"); // 通过ServletConfig对象获取配置参数:pass String pass = config.getInitParameter("pass"); // 注册驱动 Class.forName(driver); // 获取数据库连接 Connection conn = DriverManager.getConnection(url,user,pass); // 创建Statement对象 Statement stmt = conn.createStatement(); // 执行查询,获取ResuletSet对象 ResultSet rs = stmt.executeQuery("select * from news_inf"); response.setContentType("text/html;charSet=gbk"); // 获取页面输出流 PrintStream out = new PrintStream(response.getOutputStream()); // 输出HTML标签 out.println("<html>"); out.println("<head>"); out.println("<title>访问Servlet初始化参数测试</title>"); out.println("</head>"); out.println("<body>"); out.println("<table bgcolor=\"#9999dd\" border=\"1\"" + "width=\"480\">"); // 遍历结果集 while(rs.next()) { // 输出结果集内容 out.println("<tr>"); out.println("<td>" + rs.getString(1) + "</td>"); out.println("<td>" + rs.getString(2) + "</td>"); out.println("</tr>"); } out.println("</table>"); out.println("</body>"); out.println("</html>"); } catch (Exception e) { e.printStackTrace(); } } }
package lee; import javax.servlet.http.*; import javax.servlet.*; import javax.servlet.annotation.*; import javax.swing.*; import java.awt.event.*; import java.util.Date; /** * Description: * <br/>网站: <a href="http://www.crazyit.org">疯狂Java联盟</a> * <br/>Copyright (C), 2001-2016, Yeeku.H.Lee * <br/>This program is protected by copyright laws. * <br/>Program Name: * <br/>Date: * @author Yeeku.H.Lee kongyeeku@163.com * @version 1.0 */ @WebServlet(loadOnStartup=1) public class TimerServlet extends HttpServlet { public void init(ServletConfig config)throws ServletException { super.init(config); Timer t = new Timer(1000,new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println(new Date()); } }); t.start(); } }