客户端(浏览器)先找此目录 C:\Windows\System32\drivers\etc 下的host文件,从里面查看已有域名得到IP地址在进行访问。
如果没有在host文件下找到则走DNS流程。
目前主流趋势(解耦和)
Hbuilder模拟成一台tomcat服务器访问8020端口号
Servlet
继承HttpServlet原理
子类可以用父类的所有方法和属性,如果找不到合适的还可以重写父类的方法。
子类中调用的方法子类中没有就找父类,子类中重写的就调用自己方法。
例如
创建出来的MyServlet继承了HttpServlet,只重写了父类的doGet和doPost方法,tomcat运行时还是会调用父类的service方法,于是就有了上述过程。
Request获取请求参数
- String getParameter(“表单中的name值”)获取指定的请求参数
- String[] getParameterValues(“表单中的name值”)获取参数中的一键多值
- Map<String,String[]> getParameterMap()获取提交的所有参数
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
* request 获取客户端提交数据
*/
//方法getParameter(String key)指定表单中的参数
String username = request.getParameter("username");
String password = request.getParameter("pass");
System.out.println(username+"=="+password);
//方法getParameterValues()获取一键多值 checkbox radio
String[] hobby = request.getParameterValues("hobby");
System.out.println(Arrays.toString(hobby));
System.out.println("=============");
//方法 getParameterMap()获取提交的所有参数
Map<String,String[]> map = request.getParameterMap();
for (String key : map.keySet()){
String[] value = map.get(key);
System.out.println(key+"="+Arrays.toString(value));
}
}
//获取客户端提交的数据 Map
Map<String,String[]> map = request.getParameterMap();
//集合中数据封装到User中
User user = new User();
//apache 开发工具类,简化JavaBean开发
//BeanUtils类,静态方法 populate(JavaBean,map集合)
BeanUtils.populate(user, map); //把map集合封装成User对象
重定向与转发 实现登录页面
if(flag==true){
response.sendRedirect( request.getContextPath() ); //重定向到首页
}else{
//flag值是false,登录失败,错误信息存储到request域中
request.setAttribute("msg","用户名或密码错误");
//转发回登录页面(带上需要显示的数据"msg")
request.getRequestDispatcher("/login.jsp").forward(request,response);
}
在登陆页面显示区域加上Java代码用于显示request域中的内容
<%= request.getAttribute("msg")==null?"":request.getAttribute("msg") %>
类型强制转换
Object id = map.get("id"); //map取value返回的是object类型
(Long)map.get("id");
//不一定能转换成功,因为不知道map中之前指定的value是什么类型。
//若是String类型则转换失败,所以更通用的方法是
Long.ParseLong(String.valueOf(map.get("id"))); //强制转换为Long类型