1 部署 Tomcat
1.1 Tomcat文件夹介绍
1.2 添加Tomcat
说明:根据工程路径访问资源,因此只留 / 是为了更方便访问
1.3 测试Tomcat
2 实例——简单的用户登录框
实例说明:实现一个简单的用户登录框
2.1 封装用户类
package pers.syx.beans;
public class User {
private String username; //用户名
private String password; //密码
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
}
2.2 添加jar包
将下面这个文件复制粘贴到建立的lib
目录下
2.3 写servlet
package pers.syx.servlet;
import pers.syx.beans.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
public class LoginSevlet extends HttpServlet {
/**
*
* @param req 请求对象
* @param resp 响应对象
* @throws ServletException
* @throws IOException
*/
@Override
public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//处理中文乱码
req.setCharacterEncoding("utf-8");
//根据标识确定要调用哪个方法
//前端传递过来的标识
String method = req.getParameter("method");
if(method.equals("login")){
toLogin(req,resp);//要将两个对象传递过去
}
}
/**
* 用户登录功能
*/
public void toLogin(HttpServletRequest req, HttpServletResponse resp) {
//记得修改访问权限标识符 private -> public
//接收前端传的用户名的值
String username = req.getParameter("username");
//接收前端传的密码的值
String password = req.getParameter("password");
System.out.println("用户名的值为:"+username+";密码的值为:"+password);
//1 获取容器对象
ArrayList<User> users = getUsers();
//定义一个标识,判断输入的用户名和密码是否合法
boolean flag = false;
//遍历集合对象
for(User user:users){
if(user.getUsername().equals(username) && user.getPassword().equals(password)){
//用户名和密码必须都相等才可以登录成功
flag=true;
break;
}
}
if(flag==true){
// //可以登录成功,响应前端,用到resp给前端响应标识
// resp.getWriter().print("true");//resp.getWriter自动获取流对象,给前端响应回去
//上面那个语句先不用,先直接跳转到别的界面进行测试,用到sendRedirect重定向
try {
resp.sendRedirect("http://localhost:8080/jsp/list.jsp");
} catch (Exception e) {//需要捕获异常,鼠标放在sendRedirect上点alt+enter,然后点第二个,给一个最大的父类异常Exception去接收异常
e.printStackTrace();
}
}
else{
System.out.println("用户名和密码不匹配!!!");
}
}
/**
* 用集合模拟一个容器
*/
public ArrayList<User> getUsers(){//写ArrayList<User>不用强转,写List需要
/*这样写不太规范,因为功能很多,都写在一个方法里不规范。
* 不要把所有功能写在一个方法里
*/
//创建一个集合对象
ArrayList<User> users = new ArrayList<>();
//创建用户对象
User user1 = new User();
user1.setUsername("张三");
user1.setPassword("123456");
User user2 = new User("韩信","qwe123");
User user3 = new User("百里守约","qwe123");
User user4 = new User("百里玄策","434544");
User user5 = new User("李白","ssddd");
User user6 = new User("貂蝉","www111");
User user7 = new User("吕布","30222");
//把用户对象装进容器
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
users.add(user5);
users.add(user6);
users.add(user7);
return users;//测试用
}
}
2.4 写登录界面
在web
目录下新建目录jsp
<%--
Created by IntelliJ IDEA.
User: nosteglic
Date: 2021/1/2
Time: 20:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- 编码和语言 -->
<html>
<head>
<title>登录界面</title>
<!-- 设置样式 css语法 元素选择器-->
<style>
body{
background-color: aliceblue;
}
</style>
</head>
<body>
<h1 align="center">用户登录界面</h1>
<!-- form表单 -->
<form action="http://localhost:8080/login?method=login" method="post">
<!-- 通过问号?拼接一个method属性 见LoginServlet-->
<!-- 表格标签 -->
<table border="1px" bgcolor="pink" align="center">
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="5" align="center">
<!-- 注意:type为submit,进行表单提交 -->
<input type="submit" value="登录">
</td>
</tr>
</table>
</form>
</body>
</html>
<%--
Created by IntelliJ IDEA.
User: nosteglic
Date: 2021/1/2
Time: 21:06
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>列表界面</title>
</head>
<body>
恭喜你,登录成功!
</body>
</html>
2.5 配置资源路径
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0">
<!-- 必须写在web-app里面 -->
<servlet>
<!-- 别名 -->
<servlet-name>login</servlet-name>
<!-- 后端资源路径的权限定位名 -->
<!-- 配置资源-->
<servlet-class>pers.syx.servlet.LoginSevlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<!-- 配置资源路径的地址 -->
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
2.6 测试
3 目录结构
1 login.jsp
- 访问当前工程时默认访问web文件夹下的资源,之前设置的工程路径【/】
- 若想访问jsp文件夹下的资源:
localhost:8080/jsp/login.jsp
- 所有网页由标签形成
<html>
标签声明
<head>
头部
<body>
身体
<inout type="不同的框">
<input type="text">
用户名框
<input type="password">
密码框
<input type="button"value="登录">
登录按钮
<br>
换行
<h1></h1>
最大标题
2 访问资源
- 现在浏览器访问的是前端静态资源,那如何访问后端资源呢?浏览器要访问到Servlet类 在web.iml中配置
3 form表单
根据action属性可以访问相应界面
现在浏览器访问的是前端静态资源,那如何访问后端资源呢?浏览器要访问到Servlet类 在web.iml中配置
4 前后端交互
\login为后端资源路径