一.Servlet 的定义及作用:
1.接收客户端请求
2.处理 ,产生结果
3.响应客户端
二. Servlet 文件结构及 创建方法
1.Servlet 文件目录结构
webroot
-WEB-INF
-classes
-lib
- *.xml
2.创建Servlet 需导入servlet-api.jar 包 (xml配置)
创建类 继承 HttpServlet
Servlet 通过调用 init () 方法进行初始化。
Servlet 通过 doGet() 和 doPost() 方法是每次服务请求中最常用的方法。
Servlet 通过调用 destroy() 方法终止(结束)。
<!-- servlet 注册 -->
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.hst.servlet.MyServlet</servlet-class> <!--类地址--><!-- 在classes文件下寻找-->
</servlet>
<!-- Servlet 与url映射 -->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/MyServlet.servlet</url-pattern> <!--url地址 -->
</servlet-mapping>
使用 Servlet 读取表单数据
String value=getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值。
Strign [] value=getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。返回的是数组
getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法
三,Servlet 乱码
一、hosts文件 指局域网IP映射
C:\Windows\System32\drivers\etc host
* 二、响应服务端数据
PrintWriter pw = response.getWriter();
pw.println("<h1>userName : "+userName+" , passWord:"+passWord+"</h1>");
pw.close();
* 三、乱码问题
* 请求中文乱码:
GET: server.xml-> Connector标签中添加属性: URIEncoding="UTF-8"
POST: request.setCharacterEncoding("UTF-8");
* 响应中文乱码:
response.setContentType("text/html;charset=utf-8");
name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
四,Servlet实例化
1.Servlet如何被实例化的
class LoginServlet extends HttpServlet{
}
LoginServlet loginServlet = new LoginServlet();错误方式 (X)
答:Servlet是由Servlet容器(Web服务器)实例化的
2.Servlet容器是什么时候实例化Servlet
答: (1)默认:第一次访问请求Servlet
(2)web.xml中设置在 web服务器启动时实例化: <load-on-startup>1</load-on-startup>
3.Servlet被实例时调用方法
public void init(ServletConfig config)
4.访问请求Servlet时执行方法
客户端post -> doPost()
get -> doGet()
五,Servlet 页面间跳转与参数传递
1.转发
2.重定向
login.html -> login.servlet -> success.html-> fail.html
login.html -> login.servlet
1>表单提交
1. <from action="login.servlet" method="post">
<input type="text" name="username" >
<input type="submit" vlaue="提交">
</form>
//username=admin
2. <a href="login.servlet?username=admin&password=123">跳转到loginServlet</a>
get请求传参方式 : login.servlet?username=admin&password=123
post请求传参方式: login.servlet
参数存储在消息体中 username=admin password=123
login.servlet -> success.html
-> fail.html
Servlet转发和重定向方法:
HttpServletRequest reqeust ; HttpServletResponse response;
request.getRequestDispatcher("success.html").forward(request, response);//转发
response.sendRedirect("fail.html"); //重定向