🙈作者简介:练习时长两年半的Java up主
🙉个人主页:老茶icon
🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎
📚系列专栏:Java全栈,计算机系列(火速更新中)
💭 格言:种一棵树最好的时间是十年前,其次是现在
🏡动动小手,点个关注不迷路,感谢宝子们一键三连
目录
- 课程名:JavaWeb
- 内容/作用:知识点/设计/实验/作业/练习
- 学习:在IDEA中创建基于Maven的Web项目
- 在IDEA中创建基于Maven的Web项目
- 1.新建webapp模板
- 2.在src目录下新建文件夹,之后在此创建java文件
- 3.修改项目中web.xml版本为4.0
- 4.配置tomcat服务器
- 5.将项目部署在tomcat中
- 6.启动项目
- web资源目录结构
- 项目上下文路径
- 修改项目编译时的jdk版本
- 解决tomcat控制台中文乱码
- Servlet
- 编写Servlet的步骤
- 1.在项目中导入Servlet所需依赖
- 2.在项目的java目录下,新建一个类,继承HttpServlet,重写doGet和doPost方法
- 3.在web.xml文件下,配置Servlet
- 解决tomcat控制台中输出中文时的乱码
- 三层架构
- 访问服务器某个URL的方式
- 页面向服务器端提交数据的方式
- 服务器端获取前端提交的数据
- 解决请求和响应时的中文乱码
- 总结
课程名:JavaWeb
内容/作用:知识点/设计/实验/作业/练习
学习:在IDEA中创建基于Maven的Web项目
在IDEA中创建基于Maven的Web项目
1.新建webapp模板
2.在src目录下新建文件夹,之后在此创建java文件
选择main\java
3.修改项目中web.xml版本为4.0
打开项目结构
移除默认2.3版本的web.xml文件,移除后一定要apply应用
重新添加web.xml文件,选择4.0版本
4.配置tomcat服务器
5.将项目部署在tomcat中
6.启动项目
启动tomcat
默认启动成功后会自动打开浏览器访问项目,也可以通过"localhost:8080/项目名"访问。
这里看到的页面,是web项目中自带的index.jsp文件
web资源目录结构
webapp下如果有index文件,访问项目后会自动访问index文件,如果没有名为index的文件,就会出现404,表示index页面不存在
项目上下文路径
域名+端口+项目名 称为项目上下文路径
如localhost:8080/web01就是项目上下文路径,可以理解为项目根目录
webapp目录直接通过项目上下文路径访问,无需显式写出
更新了项目中的内容后,根据需要选择重启还是重新部署
修改项目编译时的jdk版本
修改web模块的jdk版本
修改当前项目的jdk版本
解决tomcat控制台中文乱码
重启IDEA
Servlet
Servlet表示Server+Applet,意味运行在服务器上的程序。是一个被动运行程序,每次请求都要执行。
BS结构客户端访问服务器端的流程
编写Servlet的步骤
1.在项目中导入Servlet所需依赖
<!-- servlet所需依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
粘贴在pom.xml文件中的dependencies标签下
2.在项目的java目录下,新建一个类,继承HttpServlet,重写doGet和doPost方法
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/*
* 编写Servlet的步骤
* 1.导入依赖
* 2.创建一个类,继承HttpServlet,重写doGet和doPost方法
* 3.在web.xml中设置访问该类的url映射
* */
public class FirstServlet extends HttpServlet {
//普通的控制台项目,需要主动运行main方法执行程序
//web项目中的java程序,需要被动运行,在用户通过浏览器访问某个程序的url映射时执行
/*
* 当浏览器发送的是get类型的请求,执行这个方法
* */
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
System.out.println("get请求");
}
/*
* 当浏览器发送的是post类型的请求,执行这个方法
* */
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
System.out.println("post请求");
}
}
3.在web.xml文件下,配置Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--xml是一个配置文件,属于一种标记语言,通过标签定义内容-->
<!--声明Servlet-->
<servlet>
<!--servlet命名-->
<servlet-name>firstServlet</servlet-name>
<!--servlet类的全限定名(路径+文件名)-->
<servlet-class>FirstServlet</servlet-class>
</servlet>
<!--定义Servlet的请求映射-->
<servlet-mapping>
<!--要映射的servlet名,与上方定义的servlet-name一致-->
<servlet-name>firstServlet</servlet-name>
<!--请求映射url,必须以/开头-->
<!--之后通过项目上下文路径+该路径,就能访问FirstServlet类-->
<url-pattern>/first</url-pattern>
</servlet-mapping>
</web-app>
复制资源的相对路径
启动tomcat,访问"localhost:8080/项目路径/first"即可访问自定义servlet类中的doGet方法
解决tomcat控制台中输出中文时的乱码
三层架构
在软件开发中,并不是将所有的功能集成到一个类或文件中实现,而是要将其分层处理。从而达到"高内聚,低耦合"的目的。
低耦合是指降低各个模块之间的关联程度,便于开发和维护,各个模块各司其职。
高内聚指各个模块的功能不开再分。
通常所说的三层架构中的三层,指"数据访问层、业务逻辑层和视图表现层"
- 数据访问层:用于连接操作数据库的类。对数据进行增删改查。
- 业务逻辑层:用于处理业务逻辑,在适当的情况下访问数据访问层中的内容。
- 视图表现层:用于展示和提供用户输入的渠道,在适当的情况下访问业务逻辑层中的内容
访问服务器某个URL的方式
- 在浏览器的地址栏中输入对应URL,属于get请求
- 使用a标签,在href中定义对应的URL,属于get请求
- 使用form表单,在action中定义对应的URL,根据method属性的值控制get或post请求
页面向服务器端提交数据的方式
-
使用form表单的name属性显式提交
<form action="http://localhost:8080/web01/getOne" > <input type="text" name="id"> <input type="submit"> </form>
提交的数据会暴露在浏览器的地址栏中
-
使用form表单的name属性隐式提交
<form action="http://localhost:8080/web01/getOne" method="post" > <input type="text" name="id"> <input type="submit"> </form>
提交的数据不会暴露在浏览器的地址栏中
-
通过"?参数1=值&参数2=值"方式显示提交
-
在浏览器的地址栏中输入
http://localhost:8080/web01/getOne?id=23
-
使用a标签
<a href="http://localhost:8080/web01/login?username=admin&password=123123">登录</a>
提交的数据会暴露在浏览器的地址栏中
-
服务器端获取前端提交的数据
前端页面传递数据
<a href="URL?id=123">访问</a>
<form action="URL">
<input name="id">
<input type="submit">
</form>
在Servlet的doGet或doPost方法中,
通过**request.getParameter(“name值或?后的参数”)**获取数据,返回值为String
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取页面提交的名为id的参数,返回值为String
String id = req.getParameter("id");
if (service.delete(Integer.parseInt(id))) {
//跳转至另一个URL
resp.sendRedirect("http://localhost:8080/Web01/queryEmps");
} else {
resp.getWriter().print("删除失败");
}
}
解决请求和响应时的中文乱码
public class MServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解决请求时的乱码
req.setCharacterEncoding("utf-8");
//解决响应时的乱码
resp.setContextType("text/html;charset=utf-8");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
总结
好好学习,天天向上。
往期专栏 |
---|
Java全栈开发 |
数据结构与算法 |
计算机组成原理 |
操作系统 |
数据库系统 |
物联网控制原理与技术 |