当前位置: 代码迷 >> 综合 >> JAVAWEB-DAY01(代码演示)
  详细解决方案

JAVAWEB-DAY01(代码演示)

热度:68   发布时间:2023-11-30 12:02:37.0

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"