day01搭建项目、参数传递
搭建第一个项目
使用idea创建项目,选择Web依赖
static目录下新建index页面
访问localhost:8080页面,显示hello springboot.
处理客户端的动态请求
新建controller包,controller类
添加@Controller注解
方式一.编写方法,添加@RequestMapping注解
@RequestMapping("/hello")
public void hello(HttpServletResponse response) throws IOException {
System.out.println("服务器收到了请求");
//设置响应类型及字符集
response.setContentType("text/html;charset=utf-8");
//得到输出对象并输出内容
PrintWriter pw = response.getWriter();
pw.print("Hello Spring!");
//关闭资源
pw.close();
}
方式二:编写方法,添加@RequestMapping @ResponseBody注解
@RequestMapping("/hello")
@ResponseBody
public String hello(){
return "responseBody";
}
访问localhost:8080/hello页面,即可看到相应页面。
客户端发出请求的四种方式
- 在浏览器的地址栏中写请求地址
- 在html页面中通过超链接发出请求
- 通过form表单发出请求
- 通过前端技术发出异步请求
获取客户端传递参数的方式
1.通过HttpServeletRequest获取参数
@RequestMapping("/parameter")
@ResponseBody
public String parameter(HttpServletRequest request){
String info = request.getParameter("info");
return "我是参数" + info;
}
2.在处理请求方法的参数列表位置直接声明获取
1.新建html表单
<form action="/reg" method="get">
<input type="text" name="username" placeholder="用户名">
<input type="text" name="password" placeholder="密码">
<input type="text" name="nick" placeholder="昵称">
<input type="text" name="age" placeholder="年龄">
<input type="submit" value="提交">
</form>
2.新建reg方法,添加注解
@RequestMapping("/reg")
@ResponseBody
public String reg(String username,String password,String nick,int age){
System.out.println("username = " + username + ", password = " +
password + ", nick = " + nick + ", age = " + age);
return "提交成功";
}
通过创建实体类,封装数据
创建一个封装参数的对象User,在处理请求的方法参数列表中直接声明该类型的对象,SpringMVC框架会自动实例化该对象并通过调用set方法的方式,把接收到的参数封装到对象中,
切记:属性名和form表单中的参数名必须一致
创建vo包,创建User类
@RequestMapping("/reg")
@ResponseBody
public String reg(User user){
System.out.println("user = " + user);
return "提交成功";
}
day02 引入数据库_实现简单的注册登录功能
1.新建Spring initializr模块,添加SpringWeb依赖
2.pom文件导入JDBC驱动,数据库连接池驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
3.新建controller包-UserController类;vo包-User类;Utils包-DBUtils类;
4.新建reg.html,login.html页面
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import java.sql.Connection;
import java.sql.SQLException;
public class DBUtils {
private static DruidDataSource dds;/*dds定义全局变量,
静态块或者静态方法只能访问静态变量*/
static {
//创建连接池对象
dds = new DruidDataSource();
//设置数据库链接信息
dds.setUrl("jdbc:mysql://localhost:3306/empdb?" +
"characterEncoding=utf8&serverTimezone=Asia/Shanghai");
dds.setUsername("root");
dds.setPassword("root");
//设置初始连接数量
dds.setInitialSize(3);
//设置最大连接数量
dds.setMaxActive(5);
}
//1.封装一个方法获取链接
public static Connection getConn() throws SQLException {
//从连接池对象中获取链接
DruidPooledConnection conn = dds.getConnection();
System.out.println(conn);
//得到的链接对象return
return conn;
}
}
@Controller
public class UserController {
@RequestMapping("/reg")
@ResponseBody
public String reg(User user){
System.out.println("user = " + user);
if (user.getUsername() == null){
return "返回首页";
}
//1.判断用户名是否已存在
try (Connection conn = DBUtils.getConn()){
String sql = "select * from user where username = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,user.getUsername());
ResultSet rs = ps.executeQuery();
if (rs.next()){
return "用户名已存在!";
}
String insertSql = "insert into user values (null,?,?,?)";
PreparedStatement insertPs = conn.prepareStatement(insertSql);
insertPs.setString(1,user.getUsername());
insertPs.setString(2,user.getPassword());
insertPs.setString(3,user.getNick());
insertPs.executeUpdate();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return "恭喜你,注册成功";
}
}
注:JDBC驱动的依赖版本要与DBUtils中dds.setUrl相匹配,否则数据库可能会出现连接失败的情况。
登录功能代码:
@RequestMapping("/login")
@ResponseBody
public String login(User user){
System.out.println(user);
try(Connection conn = DBUtils.getConn()) {
String sql = "select password from user where username = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,user.getUsername());
ResultSet rs = ps.executeQuery();
if (rs.next()){
String password = rs.getString(1);
if (password.equals(user.getPassword())){
return "登录成功";
}else {
return "密码错误";
}
}
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return "用户不存在";
}