JAVA WEB学习随笔
JAVA WEB
一.创建第一个web项目
1.创建第一个maven文件
使用idea软件 创建一个Maven 文件
2.在maven中加入servlet依赖
1)双击打开pom.xml
2)加入servlet依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!--jsp的依赖(jsp相关的jar加进来)-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
3)重载文件(不然不会下载)
右键 pom.xml文件----->选择maven----->选择Reload project
二.servlet 的使用
1.request 和 response
request--请求(浏览器发给服务器)\我们可以通过请求获取到用户的信息来进行相应的处理
response--响应(服务器返回给浏览器)\通过对数据的处理而对浏览器作出的响应
1)获取request 和 response
首先让我的类继承 HttpServlet 然后 通过重写方法来获取
public class request extends HttpServlet { //引用servlet
@Override //重写方法
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
模拟获取用户登录的数据小案例
1)写一个简单的登录页面
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="" method="post">
用户名<input name="Username" type="text" > <br>
密 码<input name="Password" type="password" ><br>
<input type="submit" value="登录">
</form>
</body>
</html>
2)通过request获取 到用户提交的表单数据
通过request.getParameter("表单name")来进行获取
注:getParameter的参数要保持和表单中的name一致才能够获取到
String Username = request.getParameter("Username");
String Password = request.getParameter("Password");
3)在用户登录后输出欢迎某某
我们通过response.getWriter();来向用户输出文本
Writer writer = response.getWriter();
writer.write("欢迎"+Username+"的访问,您的密码为"+Password);
这样我们一个简单的测试就完成了
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.io.Writer;
public class request extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String Username = request.getParameter("Username");
String Password = request.getParameter("Password");
Writer writer = response.getWriter();
writer.write("欢迎"+Username+"的访问,您的密码为"+Password);
}
}
4)调用写的方法
通过使用@WebServlet(urlPatterns = "Url")注解的方式来运行我们的代码
Url 指的是拦截的地址 加入此处填写的是 pass ,那么服务器就会拦截关于url为pass的请求来运行我们的代码
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Writer;
@WebServlet(urlPatterns = "/request") //添加注解拦截
public class request extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String Username = request.getParameter("Username");
String Password = request.getParameter("Password");
Writer writer = response.getWriter();
writer.write("欢迎"+Username+"的访问,您的密码为"+Password);
}
}
当我们这些处理完成后 还需要在提交表单的 action="" 中添加Url
<html>
<head>
<title>Title</title>
</head>
<body>
<form action="127.0.0.1:8080/request" method="post">
用户名<input name="Username" type="text" > <br>
密 码<input name="Password" type="password" ><br>
<input type="submit" value="登录">
</form>
</body>
</html>
下面开始测试
用户名 :zhangsan 密码:123456
当我们按登录按钮时,用户的表单数据就会被提交到 127.0.0.1:8080/request
因为我们的方法是拦截 request 所以表单的数据就在被拦截的类中进行处理 然后返回给用户的浏览器中
成功获取到 但是中文会出现乱码的情况 所以我们要整改一下
5)解决乱码问题
只需要在类中添加以下代码 就可以解决乱码问题
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("UTF-8");
response.setHeader("content-type","text/html;charset=UTF-8");
//整改后
@WebServlet(urlPatterns = "/request")
public class request extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("UTF-8");
response.setHeader("content-type","text/html;charset=UTF-8");
String Username = request.getParameter("Username");
String Password = request.getParameter("Password");
Writer writer = response.getWriter();
writer.write("欢迎"+Username+"的访问,您的密码为"+Password);
}
}
重启服务器再次测试一遍 发现解决完成
2.请求转发 forward 和 include
(1)请求转发的作用
将请求转发到别的地方进行处理。对于一个web服务器来说,我们处理的问题往往是多方面的,但是我们总不能将所有问题处理都写在一个类中,而是有多个类,每个类处理自己相关的问题,如果出现处理不了的情况 这时候我们就需要请求转发来帮助我们找到合适的类去处理问题
(2)forward和include的区别
①forward
当浏览器发送请求后,服务器接收到请求无法处理时就会将请求转发给“外援”,“外援”收到处理完成后就会将结果直接返回给用户
②include
浏览器发送请求后,服务器接收到请求无法处理时就会将请求转发给“外援”,“外援”收到处理完成后就会将结果返回给服务器,服务器再响应给浏览器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术