javaweb学习

javaweb就是实现浏览器和服务器之间的交互

1、服务器配置

Run->Edit Configurations,点击右上角的+号,选择Tomcat Server的local:

选择server下的Configure...,在弹出的界面里点击有上角的+号,选择自己解压的合适的tomcat版本,选择apply,再选择Deployment,点击加号,添加第一个,点击apply后点击ok即可

2、导入servlet-api.jar

File-->Project Structure-->Libraries-->绿色的+图标-->Java-->选择自己上一步导入的Tomcat文件夹下面lib文件夹的servlet-api.jar

3、静态页面(.html)与服务器通过post交互

form表单提交的数据会通过action属性知道要将数据给哪个服务器处理

比如下面这个表单actioon的值是hello1

那么点击运行之后会自动跳转到浏览器,在地址栏后面接着输入hello1.html就会进入上述表单所在静态页面,提交表单后系统会自动将/hello1.html路径变成action中的 /hello1 ,然后到会到web配置文件里找<url-pattern>是/hello1的配置,按以下顺序找到服务器,将数据交给该服务器

只要前端路径发生变化(加了 /hello1)也就是说提交了表单就会将数据传递给相应服务器,执行服务器中的service方法

在找到的服务器中通过

复制代码
request.getParameter("参数名")

接收前端传来的数据(注意参数名与前端name的对应)

通过输出流来将处理过的数据输出到浏览器页面,不过要先设置输出数据的类型

复制代码
response.setContentType("text/html;charset=utf-8");

服务器接收数据的其他情况:

1)浏览器里有多选框,多选框里选择的数据通过数组传递

复制代码
String[] mps = request.getParameterValues("mp");

2)希望接收的数据可以支持中文:

复制代码
request.setCharacterEncoding("utf-8");

刚刚是地址变化为 /hello1 会触发服务器处理数据,/地址是准确地址,只有输入地址准确才会与服务器交互,如果<url-pattern>的值是以*开头的代表的是任何地址

意味着表单的action可以是A.do 或者ABC.do都没有关系

只要是.do结尾的地址都可以与该服务器交互

4、动态页面(.jsp)与服务器交互

在动态页面中html(css,js)可以直接写,但是java代码要通过

1)<% java语句 %>

2)<%=java表达式%>

来实现。

Servlet给静态页面传递东西直接通过输出流out.println(数据)即可

但是动态页面其实也是一个servlet,两个servlet之间传递数据需要用到转发

一个jsp页面:

5、Cookie

可以把Cookie比喻成一个充值卡,用户(浏览器)到商家(服务器)消费并充值,商家就会给一个充值卡交给用户,用户保存好商家给的卡,当用户下次来就可以通过充值卡来消费

当服务器添加Cookie到response,将其传送到浏览器时,浏览器存储Cookie,如果里面数据包含中文,因为浏览器识别中文就是识别ASII码,所以会将中文通过编码转换为ASII码才能存储起来,当下一次浏览器访问服务器,将Cookie传递过去,服务器要接收Cookie里的数据,接收到的中文也是ASII形式的,所以要解码成中文形式

添加Cookie:Cookie以name-value形式存储

在浏览器地址栏后面加上 /addCookie 就会执行AddCookieServlet 中的service方法,就可以将Cookie传递给浏览器了,

在浏览器的设置中可以找到叫local的Cookie,查看里面的cookie可以发现中文是以ASII码存储的

服务器读取Cookie:

相关推荐
_oP_i3 分钟前
.NET Core 项目配置到 Jenkins
运维·jenkins·.netcore
weixin_4373982111 分钟前
Linux扩展——shell编程
linux·运维·服务器·bash
小燚~13 分钟前
ubuntu开机进入initramfs状态
linux·运维·ubuntu
小林熬夜学编程20 分钟前
【Linux网络编程】第十四弹---构建功能丰富的HTTP服务器:从状态码处理到服务函数扩展
linux·运维·服务器·c语言·网络·c++·http
上海运维Q先生25 分钟前
面试题整理15----K8s常见的网络插件有哪些
运维·网络·kubernetes
hhhhhhh_hhhhhh_35 分钟前
ubuntu18.04连接不上网络问题
linux·运维·ubuntu
QQ同步助手41 分钟前
如何正确使用人工智能:开启智慧学习与创新之旅
人工智能·学习·百度
冷心笑看丽美人42 分钟前
探秘 DNS 服务器:揭开域名解析的神秘面纱
linux·运维·服务器·dns
wenxiaocsdn1 小时前
某科技局国产服务器PVE虚拟化技术文档
运维·服务器
流浪的小新1 小时前
【AI】人工智能、LLM学习资源汇总
人工智能·学习