1 使用idea创建maven-web项目
2 idea 配置tomcat
3 在web项目中创建html页面并正常访问
4 页面上书写form表单 , 点击提交表单将数据提交到后台Servlet
5 后台编写Servlet类型 , 书写service方法
6 在项目的web.xml文件中配置 Servlet---Mapping映射关系
1 用户登录案例
1.1 步骤
1 编写一个login的页面 在页面上写 form表单 用户名 密码 登录
2 将页面的请求用户名和密码发送到后台的Servlet
3 编写Servlet , service方法接收页面的请求参数 用户名和密码
4 去mysql的数据库那张用户表中去根据用户名和密码查询数据
select * from tb_user where username = '' and password = '' ;
5 返回结果 , 可能有值, 可能没有值(登录失败)
1.2 页面
<form action="Login" method="get">用户名:<input type="text" name="username" /> <br/>密码:<input type="password" name="pwd" /> <br/><button type="submit">登录</button>
</form>
1.3 web.xml
<servlet><servlet-name>Login</servlet-name><servlet-class>com._51doit.controller.Login</servlet-class></servlet><servlet-mapping><servlet-name>Login</servlet-name><url-pattern>/Login</url-pattern></servlet-mapping>
1.4 Servlet
public class Login extends HttpServlet {/*** 能接受get请求 也能接受post请求** @param req* @param resp* @throws ServletException* @throws IOException*/@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {try {// 1 接受页面的请求参数 用户名和密码String username = req.getParameter("username");// 和页面对应的输入框中的name属性的值一致//接受密码String pwd = req.getParameter("pwd");// 2 根据用户名和密码 操作数据库 JDBC// 2.1 导入mysql的驱动依赖//2.3 1 获取连接 2 执行SQL的对象 3 执行查询 4 返回结果 5 释放资源Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/doit18", "root", "root");PreparedStatement ps = conn.prepareStatement("select * from tb_user where username = ? and password = ?");// 对SQL进行预编译ps.setString(1, username);ps.setString(2, pwd);ResultSet rs = ps.executeQuery();String res = "登录失败..." ;while (rs.next()) {String job = rs.getString("job");res = "登录成功..." ;}System.out.println(res);rs.close();ps.close();conn.close();// 响应结果resp.getWriter().write(res);} catch (Exception throwables) {throwables.printStackTrace();}}
}
编写service
package com._51doit.service;import com._51doit.pojo.User;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;public class UserService {public User login(String username, String password) throws Exception {// 2 根据用户名和密码 操作数据库 JDBC// 2.1 导入mysql的驱动依赖//2.3 1 获取连接 2 执行SQL的对象 3 执行查询 4 返回结果 5 释放资源Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/doit18?characterEncoding=UTF-8", "root", "root");PreparedStatement ps = conn.prepareStatement("select * from tb_user where username = ? and password = ?");// 对SQL进行预编译ps.setString(1, username);ps.setString(2, password);ResultSet rs = ps.executeQuery();User user = null ;while (rs.next()) {user = new User() ;int uid = rs.getInt("uid");int age = rs.getInt("age");String username2= rs.getString("username");String password2 = rs.getString("password");String gender = rs.getString("gender");String job = rs.getString("job");user.set(uid,username2,password2,age,gender,job);}rs.close();ps.close();conn.close();return user;}
}
中文乱码
1 响应到页面的中文是乱码
resp.setHeader("Content-Type","text/html;charset=UTF-8");
2 请求的中文乱码
1) get请求 new String( req.getParameter("username").getBytes() , "UTF-8")
2)post请求 req.setCharacterEncoding("UTF8");
3 JDBC中文乱码 ,jdbc:mysql://localhost:3306/doit18?characterEncoding=UTF-8"