JavaWeb(一)【Tomcat和Servlet入门】

一、Tomcat
1.使用Tomcat7.0:在8.0以后的版本,对编码作了优化,较少出现乱码问题。使用7.0是为了学习如何处理乱码问题。
2.解压即可使用。首先要设置环境变量JAVA_HOME.不然会出现Tomcat启动一闪而过,导致开启失败。
startup.bat:启动服务器
shutdown.bat:停止服务器
3.Tomcat载入Eclipse开发环境:
  Windows->Prepferences->Server->Runtime Environments
  显示Tomcat窗口栏:Window->showView->Servers;
4.项目加入Tomcat。Servers窗口中,对Tomcat7.0右键->add and remove...
当运行tomcat出现错误时,先移除项目,再运行。如果还是有错,是tomcat的错误。没有错,是项目的错误
5.tomcat解决乱码方式:
1)请求乱码:
  post请求:request.setCharacterEncoding("utf-8");
2)响应乱码:
  response.setContentType("text/html;charset=utf-8");
6.端口冲突问题:
1)将占用端口的应用结束:
  cmd->netstat -ano 查看进程所使用的端口
2)修改自身应用的端口号:
  修改tomcat/conf/server.xml中的端口号




HTTP协议:
1.协议规定了不同浏览器和不同软件服务器统一所要遵循的规则,规范浏览器和服务器之间的数据传递。
2.每次请求必须要得到回应,请求错误也会回应。1.1版本的协议增加了请求超时会挂断协议。
3.HTTP协议的内容形式:
1)使用高级浏览器(Goole,FireFox)抓包:
FireFox,按F12->网络选项卡->跳转到新的页面,会显示请求的协议;
2)协议内容:
(1)GET方式:
请求行:请求方式 请求路径 协议版本
请求头:请求头一般都是key.value键值对的形式,一般情况下一个key对应一个value.也有一些是一个key对应多个value
(2)POST方式:多了一个请求体
(3)响应部分:
响应头:键值对,一般一个key对应一个value,也有一个key对应多个value;
*Last-Modefied: 与请求中的IF-Modified-Since 一起使用查找本地缓存。
*Content-Dispistion:文件下载的使用的一个头信息
*Location          :重定向的跳转的路径 
*Refresh           :定时刷新/定时跳转 
*响应体:显示到浏览器页面的内容

Servlet部分:
1.概念理解:
 Servlet只是一个运行在WEB服务器上的小的java程序,用来接收和响应从客户端发过来的请求,通常使用HTTP协议。
2.在web方面使用Servlet的具体步骤:
1).新建一个普通java类,实现Servlet接口,载入所有接口方法。把server()方法放到前面。
2).新建一个Servlet,良好的习惯是先到web.xml中配置servlet。理解一下web.xml运行原理就知道怎么配置了:
web.xml是web项目的核心配置。一旦写错,项目就无法运行。web.xml作为前端和后台服务器的中间件。或者说,作为form表单与Servlet联系的中间件。
当一个form表单做出提交的请求后,首先是转发到web.xml中,通过表单的action里面提供的servlet虚拟路径名,与标签的设置的虚拟路径匹配,然后找到servlet-name相同的
得到servlet的路径。进而再把表单交给servlet处理。
因此,配置方式如下:
(1)在之间加入和映射标签。注意,两个是并列关系,不是包含
(2)在标签中,添加两个标签:
mytest:名字随便取,但是要和标签中的标签名字一样。
/aa:虚拟路径名,随便取,但是要和前端form表单的action里面设置的虚拟路径名一样。
(3)在标签中。设置两个值
mytest:与标签中的名字一样。
Servlet类所在的包路径名
(4)form表单中action属性写虚拟路径名的两个写法:
绝对路径名:/day0531/aa
相对路径名:aa
这两个写法都可以,推荐用绝对路径名。
3.request获取请求参数的常用方法:
注意,返回的都是String类型的数据,string->int:Integer.parseToInt()
String getParameter(String name):通过表单名字获取参数
String[] getParameterValues(String name); 通过表单名字获取多个值:比如下拉框,多选框
Map getParameterMap():以【name:value】的键值对应封装在map集合。
Enumeration getParamterNames();用于获取所有的表单组件名字。

你可能感兴趣的:(JavaWeb)