一、页面–web页面–java代码之间的逻辑关系
首先在java文件夹下创建一个java类
@Controller//类上面要加入注解
public class TestController {
@GetMapping("login")//对应web请求--localhost:9991/Login
//类方法,用于处理逻辑
public String login(String user,int pass){
if(user.equals("张三") && pass==123456)
{
return "index";//跳转到index.html页面
}
else
return "login";//跳转到login.html页面
}
@GetMapping("test")
public String test(){
return "index";
}
}
java类用于写后台代码,进行逻辑处理
其中,关于@Controller注解的作用
1、@Controller 是Spring框架提供的注解。
1)@Controller注解可以将该类交由spring管理,从而能够使用getBean()或者@Autowired的方式从Spring中获取Bean实例。
2)@Controller标识的类,在语义上,表示该类代表控制器类。
这里控制层里面的每个方法,都可以去调用@Service标识的类,@Service标识的类中的方法可以继续调用@Resposity标识的接口实现类。
2、@Controller一般使用在Spring的包扫描开启的时候,例如在此案例中的配置。配置包扫描后,Spring会自动寻找指定包下的@Component , @Controller , @Service , @Repository等标注的类,并自动将其注册到Spring中。
其次,关于@GetMapping()的作用及注意事项
1.同一个方法在浏览器中直接输入地址是不能进入@PostMapping注解的方法中的,因为浏览器提交的是get请求
2.直接在浏览器地址栏输入某个地址、点击链接、表单默认的提交方式都是会发送get请求进入@GetMapping注解的方法中
3.直接在浏览器地址栏输入某个地址、点击链接、表单默认的提交方式都是会发送get请求进入@GetMapping注解的方法中。表单method = “post”时会进入@PostMapping的方法中
关于@GetMapping和@PostMapping的小结
之后创建两个html文件
login.html
从login页面发起web请求,form用于提交数据,数据用于判断,判断逻辑由java负责,
action中需要填写提交路径--java请求路径:需要将数据提交给哪个后台的java方法 @GetMapping("login")
name属性用于在后台中区分数据来自哪个输入框
<form action="/login">
用户名<input type="text" name="user"/><br/>
密 码<input type="password" name="pass"/><br/>
<input type="submit" value="登录"/>
</form>
index.html
<body>
主页
</body>
关于数据如何流通?页面之间数据如何传递?
1, 访问localhost:9991/test
这里的test对应的是web请求 ,
即localhost:9991/test 的运行结果是直接进行web请求,进而直接执行test方法
2, 访问localhost:9991/login.html
而这种访问方式,是从login页面发起web请求。
使用form进行提交数据,提交的数据用于后台代码进行逻辑判断;
action中需要填写的是提交路径–java请求路径,即需要将数据提交给哪个后台的java方法(或web请求) @GetMapping(“login”)
name属性用于在后台中区分数据来自哪个输入框
需要将在login.html页面上填写的数据,通过form表单提交给名为login的web请求
之后进入名为login的web请求的注解方法,即login 类方法,然后进行判断。
二、关于默认访问
常见一个空的index.html
<body>
</body>
1, 访问http://localhost:9991/
结果为空白页面
2, 访问http://localhost:9991/login.html
出现原因:index.html和login.html页面没有被创建时,访问localhost:9991/ 会出现404
默认 访问项目根地址(localhost:9991)是去项目中找index页面,如果index.html没有创建,则出现错误(404),有则进入index界面。
测试
当我的index.html中为如下内容时
<body>
<h1>主页</h1>
</body>
再次访问localhost:9991时,为以下结果
三、关于java代码和数据库连接问题
数据库使用的是mysql
首先关于Mysql的安装以及可视化图形工具的安装遇到的问题
**查看是否已安装mysql:**cmd–>mysql -V或者mysql -version
查看自己的mysql安装路径:还可以通过cmd来查看:如何通过cmd来查看路径
安装可视化图形工具及破解:关于工具的下载及破解方法
其次,关于代码如何连接数据库
需要配置application.yml文件
只需要修改以上两处位置,一个为root的密码,另一个为数据库名
以上就可以完成连接数据库!!!
之后通过java代码进行数据库的查询
1、创建一个文件夹pojo,之后在此文件夹下创建一个实体类Users,Users与数据库中的表名相同
User类
public class Users {//Users与数据库表名相同 实体类
//数据库中每一条记录也是使用实体类存储
private int id;//与对应数据库表中的属性名相同
private String user;
private String pass;
public Users(){
}
public Users(int id, String user, String pass) {//有参数的构造方法
this.id = id;
this.user = user;
this.pass = pass;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
@Override
public String toString() {
return "Users{" +
"id=" + id +
", user='" + user + '\'' +
", pass='" + pass + '\'' +
'}';
}
}
2、之后创建一个Dao文件夹,在此文件夹下创建一个名为UsersDao的Interface类文件,其中此文件的固定命名格式为:与表名一一对应+Dao
**
UsersDao类文件就可以实现从数据库到java代码的数据流通
**
UsersDao.java
@Mapper//注解
public interface UsersDao {//接口类
@Select("select * from users where user ='admin' and pass = '123'")//select括号中写select查询语句
Users show();//show():接口中的方法名 Users:返回值类型
}
当我调用show()方法时,他会执行@select中的查询语句,select查询语句会从数据库中查询到一条记录
之后,show()会将查询到的记录放到Users中
具体过程如下
最后,如何调用show()方法:
其中,UsersDao usersDao;的意思为定义一个类型为UsersDao的接口变量
运行结果