Servlet 基础知识与新手常遇到的错及解决方法 (01)
什么是服务器
服务器就是一台高性能的电脑
- 电脑上安装什么样的服务器软件,就可以称为 xxx 服务器 
- 举例: 
- 安装了数据库软件(mysql/Oracle…),就是数据库服务器 
- 安装了 ftp 服务软件,就是 ftp 服务器 
- 安装了邮件服务器软件,就是邮件服务器 
- 安装了 web 服务软件,就是 web 服务器 
web 服务软件做了那些事儿?
- 负责建立底层的网络连接 
- 负责将客户端请求的文件返回给客户端 
- web 服务软件又称为 web 容器,web 容器用来装组件(Servlet), web 服务软件根据客户端发出的请求路径,找到对应的 Servlet 做出响应 
什么是 Servlet
Servlet 是用于扩展 web 服务软件业务功能得组件,每一种业务请求都需要对应一个单独的 Servlet
如何在 eclipse 中关联 Tomcat
- 从 doc.canglaoshi.org 中下载 Tomcat 7.0.96 解压到一个指定目录 
- 打开 eclipse 中 window->preferences->Server->Runtime->add->找到对应的版本 Create a new Local servet 打钩->下一步->选择下载的文件夹 finish 
- 确认 eclipse 为 JavaEE 视图模式,并且工程目录为 Project Explorer 
- 找到 servers 选项卡,在里面的 Tomcat 上双击 把里面的单选选择中间的一个 保存 
- 在 servers 里面 Tomcat 上面右键 start 
- 打开谷歌浏览器在地址栏中输入 http://localhost:8080 在页面中显示出猫 说明安装完成! 
创建 web 工程
- 创建 maven 工程 02servlet_1_1 把 jar 改 war 
- 改错: 在最长的文件名上面右键点击最长的(在 src/main/webapp 下面生成了 web.xml 配置文件) 
- 让工程和 Tomcat 建立关系:工程上右键 properties->Targeted Runtimes->打钩后关闭 
- 在 JavaResources 里面的 src/main/java 上面右键新建 Servlet 添加包名 cn.tedu 类名 HelloServlet 
- 在 HelloServlet 里面删除注释和类里面所有代码,重写 service 方法,删除方法里面的内容添加一个输出,代码如下: 
- 在工程上右键 Run As-> Run on Server 打钩 完成 
- 在弹出的浏览器中 或自己的谷歌浏览器中 写以下地址 - http://localhost:8080/02servlet_1_1/HelloServlet 回车访问 - 如果页面显示空白,并且在 eclipse 控制台中输出 恭喜你… ,说明一切成功! 
Servlet 响应流程
请求由浏览器发出到 web 服务器,由 web 服务器的 web 服务软件(Tomcat)拦截,Tomcat 拦截到请求后,获取出请求的字地址(/HelloServlet),通过该字地址去 web.xml 找到处理该请求的 Servlet 的完整类名,得到完整类名后 Tomcat 通过反射技术将该对象实例化,然后调用对象的 service 方法,从而导致程序员写在 Servlet 里面的代码执行
如果只是修改了代码没有创建新的 Servlet 是不需要重新运行工程的
浏览器发出请求的几种方式
- 在浏览器的地址栏中写请求路径 回车后发出请求 get 
- 在页面中通过超链接发出请求 get 
- 在页面中通过 form 表单发出请求 默认 get/post 
请求方式 get 和 post
- get: 请求参数放在请求地址的后面,请求参数大小受限 只能传递几 k 的数据, 由于参数用户可见 不能传递敏感信息(密码) 
- post: 请求参数放在请求体里面,没有大小限制通常上传文件时使用,参数内容用户不可见 敏感数据通过 post 请求 
获取传递到服务器的参数
- String info = request.getParameter(“info”); 
请求参数中包含中文
- post 请求中有中文解决方案: - 在获取参数之前执行以下代码 - request.setCharacterEncoding(“UTF-8”); 
- get 请求中有中文如果是 tomcat8.0 以上版本不存在乱码问题,如果 8.0 以下版本找到 Servers 工程中的 server.xml 找到 65 行 添加 URIEncoding=“UTF-8” 改完后保存并重新运行工程 ,只需要改一次 以后所有 Servlet 都搞定 - <Connector URIEncoding=“UTF-8” connectionTimeout=“20000” 
sayhello 练习
- 在 webapp 下创建 sayhello.html 页面在页面中准备 form 表单 提交地址为 SayHelloServlet,表单中有一个文本框文本框的 name 值为 info 和一个提交按钮 
sayhello.html
- 创建 SayHelloServlet,留下 doGet 方法其它删除,在 doGet 方法中获取传递过来的 info,将得到的 info 后面拼接上“你好”两个字返回给浏览器 
SayHelloServlet.java
常见错误:
- 端口号被占用错误 关键字 8005,8080,8009 
 
 - 解决:找到 Tomcat 安装包的位置 D:\java\apache-tomcat-7.0.96\bin 里面的 shutdown.bat 双击运行 重复启动 Tomcat 即可. 
- 如果运行工程访问指定路径时控制台提示 ClassNotFoundException 这样的错误,Clean 一下工程,作用是让工程把编译好的内容删掉重新编译即可解决.如何 clean:在 eclipse 菜单栏中 Project->clean 
- 404 状态码,代表找不到资源(资源代表文件资源或 Servlet),检查路径是否书写正确,检查资源文件位置是否正确 
- 如果运行工程直接报错,并且是以弹窗形式报错,里面全是英文,并且没有端口信息 
 
 - clean 工程: - (1). 在eclipse菜单栏中Project->clean (2). 在servers面板中的Tomcat上面右键Clean- 如果上面没有解决继续往下: 
- 把 servers 面板中的 Tomcat 删除(Tomcat 上面右键 Delete)重新添加(点击 servers 面板中出现的超链接 选择对应的版本添加,添加之后双击 Tomcat 把单选改成中间的保存),重新添加完 Tomcat 服务器后将工程重新运行. - 如果上面没有解决继续往下: 
- 把 eclipse 关联的 Tomcat 删除重新添加如何删除:window->Preferences->Server->RunTime->找到里面已经存在的 Tomcat 从右侧 Remove,把之前解压的 Tomcat 安装包文件夹删除重新解压一份.如何添加:参考前面 如何在 eclipse 中关联 Tomcat 












 
    
评论