1.首先介绍一下在html中,说明了用哪个Servlet,一直有疑问如果有多个该用哪个Servlet
<form action="/MoreServlet/LoginServlet" method="post">
用户名: <input type="text" name="username" /><br>
密 码 <input type="password" name="password"/><br>
<input type="submit" value="登录" />
</form>
2.跳转
response.setHeader("Refresh", "1;");
response.getWriter().print(new java.util.Date());
定时刷新,也可以指定URL response.setHeader("Refresh", "1;URL=...");
3.重定向到另一个路径
response.sendRedirect("...");
//内填位置如: /MoreServlet/login.html
4.获取请求消息头的参数及其键值
Enumeration headerNames = request.getHeaderNames();
// 获取请求消息头上有哪些参数
while(headerNames.hasMoreElements()){
String headerName = (String) headerNames.nextElement();
// 获取参数名
String value = (String) request.getHeader(headerName);
// 获取键值
out.print(headerName + ":" + value + "<br / >");
}
5.判断是否盗链
String referer = request.getHeader("referer");
//获取访问地址
String sitePart = "http://" + request.getServerName();
if(referer != null && referer.startsWith(sitePart)){
out.print("downloading...");
}
else{
RequestDispatcher rd = request.getRequestDispatcher("/download.html");
rd.forward(request, response);
// 跳转到download.html页面
}
6.获取请求参数
String name = request.getParameter("name");
// 获取参数名为name对应的值,如有多个,以第一个为准
String[] hobby = request.getParameterValues("hobby");
// 获取参数名为hobby对应的所有值,返回的是字符串数组
System.out.print(name);
for(int i=0;i<hobby.length;i++){
System.out.println(hobby[i]);
}
7.乱码
request.setCharacterEncoding("utf-8");
//解决乱码的问题
8.转发机制
①:
response.setContentType("text/html;charset=utf-8");
//应该在第一次请求转发时就设定字体,否则后面都会按照第一次的字体,可能出现乱码
request.setAttribute("Club", "bdzx");
RequestDispatcher dispatcher = request.getRequestDispatcher("/First");
dispatcher.forward(request, response);
// 修改请求。增加参数,转发至另一个servlet供其回应
//转发可以是在WebContent的html文件也可以是servlet
②:
response.setContentType("text/html;charset=utf-8");
String value = (String) request.getAttribute("Club");
response.getWriter().print(value);
RequestDispatcher dispatcher = request.getRequestDispatcher("/GetInfo");
dispatcher.include(request, response);
//不改变网址的情况下,新增调用其他的servlet,同时本页面的内容也会显示
当调用①之后又调用了②,会沿用第一个网址的URL