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: