java web项目入门了解
目录
- 一、项目流程
- 1. 使用servle
- 2. 使用框架
- 二、了解java web项目构造
- 1. 项目目录结构
- 2. 查看页面访问顺序
- 3. 发起请求:jquery+ajax
- 4. 接受参数
- 5. JSON
- JSON 数组
- 三、get和post请求区别
一、项目流程
1. 使用servle
有客户端和服务端,客户端和服务端进行交互
- 客户端的诉求传给服务端,服务端实现诉求,实现的效果在返回给客户端
- 客户端使用
jquery+ajax
发起请求request
,请求内容:url
:请求路径,明确使用那个servlet
type
:请求方式,有get
和post
两种请求方式data
:参数域
- 请求传到服务端,使用
Tomcat
web容器,servle
t操作:- 接受参数
- 逻辑处理
- 操作数据库
- 逻辑处理
- 数据返回
response
- 服务端数据返回
response
给客户端后,客户端反馈请求是否成功success
:请求成功回调函数error
:请求失败回调函数
问题: servle
处理高并发,效率不好;可以使用框架。
2. 使用框架
框架分为三层:
- 表现层
Controller
,作用:接受url
请求,返回响应结果 - 业务逻辑层
Service
,作用:对数据进行逻辑处理,例如:爬虫,数据计算等 - 持久层
Dao
,作用:负责与数据库进行操作 - 这三层也会进行数据交互,使用实体层
Entity
进行交互
二、了解java web项目构造
1. 项目目录结构
WebContent
放置前端内容Java Resources·下的
src`放置后端内容- 项目运行后,目录上会多一个
servers
文件夹,这是放置Tomcat的配置文件地方
2. 查看页面访问顺序
WebContent
下的WEB-INF
下的web.xml配置文件,可以查看页面访问先后顺序,有两种查看方式:
- 方式一:
Design
- 方式二:
Source
首页起名一般使用的是
index
,index是默认访问页面
3. 发起请求:jquery+ajax
- 从官网下载
jquery-3.7.1.min.js
,在 WebContent 下新建一个 js 文件夹,将jquery文件放置文件夹 js 下 - 在 WebContent 下新建一个 html 文件
- ajax基础内容包括:
- url:请求路径,对应@WebServlet(“/index”)中的路径
- type:请求方式,get和post两种请求方式,分别对应doGet方法和doPost方法
- data:参数域,可有可无
- success:请求反馈 value:后端给前端反馈响应的信息
- error:初学者可加,有助于判断是否有问题
结果:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script src="js/jquery.js"></script> <script>$.ajax({url:"index",type:"get",data:{user:"admin",password:"123456"},success:function(value){console.log("请求成功")},error:function(){console.log("出错啦")}}) </script> </head> <body> hello </body> </html>
扩展: 报Uncaught ReferenceError: $ is not defined
,说明jquery
没有引进成功。
4. 接受参数
- 在 Java Resources 下的 src ,创建包,在包中创建 servlet 的java文件
request
:请求getParameter()
方法:获取参数
equals()
方法:相等response
:返回,把响应返回到value
处getWriter().write("")
方法:返回内容setContentType()
方法:返回格式
setCharacterEncoding()方法
:设置编码/*** Servlet implementation class IndexServlet*/ @WebServlet("/index")//这个名字与下面的名字可以不一致,不能重名 public class IndexServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public IndexServlet() {super();// TODO Auto-generated constructor stub}/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("get请求接受到了");//接受参数String acc = request.getParameter("user");String bcc = request.getParameter("password");String res = "";//判断用户名是否等于adminif(acc.equals("admin")) {System.out.println("登录成功");res = "ok";}else {System.out.println("登录失败");res = "no";}//设置编码response.setCharacterEncoding("UTF-8");//返回response.getWriter().write(res);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("post请求接受到了");} }
5. JSON
- 是javascript对象表示法
- 是存储和交换文本信息的语法
- json对象使用大括号
{}
书写 - 对象中可包含多个键值对
key/value
,key
必须是字符串
JSON 数组
- 数组值为:字符串、数字、对象、数组、布尔值、null,也可以是JavaScript的表达式,包括函数、日期、undefined
- 语法:
{属性1:属性值1, 属性2:属性值2}
,例如:{"name":"zhangsna", "site":null }
⭐面对大量数据,使用json格式
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("get请求接受到了");//接受参数String acc = request.getParameter("user");String bcc = request.getParameter("password");String res = "";//判断用户名是否等于adminif(acc.equals("admin")) {System.out.println("登录成功");res = "{\"name\":\"zhangsna\", \"site\":null }";}else {System.out.println("登录失败");res = "no";}//设置后端给前端返回的信息为json格式response.setContentType("text/json;charset=utf-8");//设置编码response.setCharacterEncoding("UTF-8");//返回response.getWriter().write(res);
}
注意: 设置response.setContentType("text/json;charset=utf-8");
这句话,必须设置json格式,否则报错。
三、get和post请求区别
get | post | |
---|---|---|
主要用途 | 用于获取数据(查询操作) 适合请求不会改变服务器状态的资源 例如:搜索、分页、查看详情 | 用于提交数据(修改操作) 适合创建、更新、删除数据 例如:登录、注册、文件上传、下单 |
数据传输方式 | 数据通过 URL的查询字符串(Query String) 传递,例如:/user?id=123&name=zhang 数据可见 受URL长度限制 | 数据通过 请求体(Request Body) 会暴露在URL中 数据不可见 没有严格长度限制,适合大数据 |
安全性 | 不安全:数据在URL中明文传输 多次请求结果相同(无副作用) | 相对安全:数据在请求体中,适合传输敏感信息 多次提交肯产生不同结果(如重复下单) |
缓存 | 适合静态资源请求(如图片、CSS) | 不适合缓存动态数据 |
后端接受方式(以Java Serevlet 为例) | String id = request.getParameter("id"); // 从 URL 提取参数 | // 需要设置字符编码(防止中文乱码)request.setCharacterEncoding("UTF-8");String username = request.getParameter("username"); // 从请求体提取参数 |
使用场景 | 获取数据:页面加载、搜索等 数据量小且不敏感 | 提交表单,如登录、注册 上传文件或大数据,如照片 修改服务器状态,如删除资源 |
扩展知识:location.href=""
跳转