编写代码要实现的业务:
登录:完成连接数据库判断登陆信息是否有误
注册:将信息填写完毕后点击注册,跳转到登陆页面
主页:展示项目信息并且可以在页面内进行增删改操作
完整文件目录如下:
![](https://i-blog.csdnimg.cn/blog_migrate/b46fcda88ca6f2a5bec480f48602a612.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a99b65cd338a85d8f95a381364cb9806.png)
文件目录:
bean包中填写的代码为实体类
dao模型就是写一个类,把访问数据库的代码封装起来
servlet包是Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容
Util是一个多功能、基于工具的包
代码中易出现的问题:
1.中文乱码问题
中文乱码就是值在请求信息或者响应信息中包含的中文字符不能正常显示。产生原因无非就是客户端与服务器采用的编码方式不同导致的。
根据请求方式的不同,请求一般可以被分为两种:GET请求和POST请求,
POST请求
乱码的原因:POST 提交的数据在请求体中,其所使用的编码格式时页面一致(即utf-8)。request 对象接收到数据之后,会将数据放到request缓冲区,缓冲区的默认字符集是SO-8859-1(该字符集不支持中文),两者使用的字符集不一致导致乱码。
解决方案:在获取请求参数之前设置request缓冲区字符集为utf-8。
// 设置获取数据的格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
GET请求和POST请求的区别: 1、 get是从服务器上获取数据,post是向服务器传送数据。 2、 get请求时通过URL直接请求数据,数据信息可以在URL中直接看到,比如浏览器访问;而post请求是放在请求头中的,用户无法直接看到。
所以一般不会使用GET请求
MYSQL代码部分
#判断存在即删除数据库
drop database if exists mydb;
#创建数据库
create database mydb;
#使用数据库
use mydb;
#创建表
create table t_user
(
uid int primary key auto_increment,
username varchar(20),
password varchar(20),
phone varchar(11),
address varchar(50)
);
insert into t_user(username,password,phone,address) values('张三','666','18965423548','南阳');
insert into t_user(username,password,phone,address) values('李四','333','18754263548','许昌');
insert into t_user(username,password,phone,address) values('小美','123','18565234759','信阳');
select * from t_user;
create table t_goods
(
gid int primary key auto_increment,
gname varchar(20),
price double,
mark varchar(100)
);
insert into t_goods(gname,price,mark) values('泡面',4.5,'够香够辣就是这个味!');
insert into t_goods(gname,price,mark) values('火腿',8.5,'肉质细腻Q弹!');
insert into t_goods(gname,price,mark) values('雪碧',3.5,'清爽冰凉随心爽!');
select * from t_goods;
![](https://i-blog.csdnimg.cn/blog_migrate/916588595a69ef2f61d5335ee3c5616b.png)
首页的编写(.jsp文件)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
</head>
<body>
<h1>欢迎学习WEB!</h1>
<a href="login.jsp">去登陆</a><br>
<a href="register.jsp">去注册</a>
</body>
</html>
给客户两个选项(登陆/注册)---完成页面如下
![](https://i-blog.csdnimg.cn/blog_migrate/ec6addd54624e4bbd1575c43cd8eec00.png)
1.1登陆页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陆页面</title>
</head>
<body>
<h1>登陆页面</h1>
<h2>欢迎学习WEB!</h2>
<form action="login" method="post">
账号:<input type="text" name="username" value=""> <br>
密码:<input type="password" name="password" value=""> <br>
<input type="submit" value="登录">
<a href="register.jsp">没有账号?点击注册</a>
</form>
</body>
</html>
1.2注册页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>注册页面</title>
</head>
<body>
<h1>注册页面</h1>
<form action="register" method="post">
账号:<input type="text" name="username" value=""> <br>
密码:<input type="password" name="password" value=""> <br>
再次输入密码:<input type="password" name="password" value=""> <br>
手机号:<input type="text" name="phone" value=""> <br>
地址:<input type="text" name="address" value=""> <br>
<input type="submit" value="注册">
<a href="login.jsp">已有账号?点击登录</a>
</form>
</body>
</html>
1.3项目页面
由后台数据库传递过来的商品数据:
a:<%之间可以写服务器端代码%>
<%=%>获取后台的变量值
session在网络应用中称为“会话控制”,是服务器为了保存用户状态而创建的一个特殊的对象。 session就是一个对象,用于存储信息
(这段代码可以不写)
<%
// 获取session
HttpSession session1 = request.getSession();
// 从session中取出数据
List<Goods> goodsList = (List<Goods>) session1.getAttribute("goodsList");
// 遍历集合中的元素
for (Goods goods : goodsList) {
%>
<!--使用java脚本获取集合中对象的元素,放入html标签中-->
<tr>
<td><%=goods.getGid()%></td>
<td><%=goods.getGname()%></td>
<td><%=goods.getPrice()%></td>
<td><%=goods.getMark()%></td>
</tr>
<%
}
%>
b: <%--导入JSTL包--%>
<%@taglib prefix="m" uri="http://java.sun.com/jsp/jstl/core" %>
现在导入JSTL包后
可以使用 ${} 直接获取数据 注意:在${}的括号中不能出现空格
<%@ page import="java.util.List" %>
<%@ page import="com.man.bean.Goods" %><%--
Created by IntelliJ IDEA.
User: 小m
Date: 2023/2/16
Time: 12:21
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--导入JSTL包--%>
<%@taglib prefix="m" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>主页</title>
</head>
<body>
<h1>欢迎来自${user.address}的${user.username}登录项目主页</h1>
<h2>主页信息展示</h2>
<table>
<form action="seach" method="post">
<input type="text" name="keyword" value="">
<input type="submit" value="搜索">
</form>
<br>
<a href="addgoods.jsp">添加商品</a>
<thead>
<tr>
<th>商品编号</th>
<th>商品名称</th>
<th>商品价格</th>