HTML发送请求的方式:
1.超链接
2.表单
3.利用js的语法 本质就是超链接
这些请求既可以指向前台也可以指向后台Java
<a href="http://www.baidu.com">外部的百度链接</a>
<a href="aaa.html">内部的本地链接</a>
<form action="aaa.html" method="post" >
<input type="submit" value="提交">
</form>
<button id="btn">点击我利用JS发送请求</button>
<script>
document.getElementById("btn").onclick = function (){
location.href = "aaa.html";
}
=</script>
Java如何编写代码 来处理前台的请求
通过编写servlet(专门和前台进行交互)即可
servlet类名的规范 XxxServlet Xxx表示该servlet是处理什么前台请求的 例如LoginServlet
如何让一个普通的Java类变成可以处理前台请求的servlet类
1.导入jar包 servlet-api.jar 导入了jar包才可以使用Servlet的相关功能
2.在类上加上@WebServlet("/xxx") 注意/表示绝对路径 Xxx表示请求的路径名,表示该类是可以和前台进行交互了
3.继承HttpServlet类 让子类拥有父类的相关方法。
4.重写父类的service方法。(处理请求的相关代码)
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/test123")
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进来了");
}
}
前台如何发送数据给后台
1.超链接发送数据,只需要在后面加上?key=value&key=value...的形式即可
<a href="AServlet?id=123&name=张三&age=18">发送若干数据</a>
2.利用js的语法 本质就是超链接
<script>
document.getElementById("btn").onclick = function (){
location.href = "/BServlet?id=123&sex=男";
}
</script>
3.表单, 通过加上name属性即可
<form action="/CServlet" method="post" >
账号:<input type="text" name="username" > <br>
密码:<input type="password" name="password" > <br>
性别:
<input type="radio" name="sex" checked value="男" >男
<input type="radio" name="sex" value="女" >女
<br>
地址:
<select name="address" >
<option>湖南</option>
<option>广东</option>
<option>云南</option>
</select>
<br>
爱好:
<input type="checkbox" name="likes" value="吃">吃
<input type="checkbox" name="likes" value="喝">喝
<input type="checkbox" name="likes" value="玩">玩
<input type="checkbox" name="likes" value="乐">乐
<br>
简介:
<textarea name="jieshao">自我介绍:</textarea> <br>
生日:
<input name="birthday" type="date"> <br>
<br>
<input type="submit" value="提交">
</form>
注意事项:
内部的表达元素都要加上name来修饰。因为后台都是通过name来获取值
单选框:加上若干个相同的name即可,记得补充value
多选框:加上若干个相同的name即可,记得补充value
下拉框:内部的option的value值可以省略的,但是你要知道,如果省略了以option标签的内部为准。如果没省略就以value为准
如何接受前台传递过来的参数
注意事项:接受的返回值全是String 需要自行转换
req.getParameter("id");只能获取单个参数
String id = req.getParameter("id");
String age = req.getParameter("age");
String name = req.getParameter("name");
System.out.println(id + "~~" + name + "~~" +age);
}
}
类似于多选框的 就不能用上面的方式 因为上面的只能获取单个
String[] likes = req.getParameterValues("likes");
for(int i = 0 ;i<likes.length;i++){
System.out.println(likes[i]);
}
前台传递数据 如果出现中文,就会乱码。
如何解决,只需要在接受数据的前面加上 如下代码即可:
req.setCharacterEncoding("utf-8");
补充:
1. 修改tomcat的conf文件夹的logging.properties文件 将下面这行改成GBK
#java.util.logging.ConsoleHandler.encoding = GBK 默认是UTF-8
2.File-setting-console编码改成GBK
3.File-setting-FileEncoding 三个地方改成UTF-8
web项目是存在缓存问题的:
好处就是节省流量节省加载时间。
坏处就是无法得到理想的正确的结果。
Web缓存存在的两个地方 :
1.浏览器内部--更多工具--清除浏览数据
2.idea项目内部的out目录(加载web项目的缓存目录)