Servlet开发
进行java web应用程序开发的技术
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。
request和response对象即然代表请求和响应,如果要获取客户机提交过来的数据,只需要找request对象。要向客户端输出数据,只需要找response对象。
1 HttpServletRequest
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象中的方法,可以获得请求相关信息。
1)获取请求参数
//读取get方式提交的数据
//获取请求参数
//如果参数中有中文,name=%E5%BC%A0%E4%B8%89&password=123
String queryString = request.getQueryString();
//中文乱码问题
queryString = URLDecoder.decode(queryString, "utf-8");
System.out.println(queryString);
//读取post方式提交的数据
ServletInputStream inputStream = request.getInputStream();
byte[] buff = new byte[1024];
int len = inputStream.read(buff);
String string = new String(buff, 0, len);
string = URLDecoder.decode(string, "utf-8");
System.out.println(string);
以上方法虽然能够获得请求数据但是需要进行解析(通过分隔符=和&获取用户名和密码)才能获得数据,比较麻烦
统一方式:
//根据表单中输入控件的name属性值,获取表单参数
//get和post方式都可以用该方法获取表单参数
//tomcat8下,get方式下,使用getParameter方法,中文不会乱码
String name = request.getParameter("name"); 【parameter /pə'ræmɪtə/
:参数】
String pwd = request.getParameter("password");
System.out.println(name);
System.out.println(pwd);
2)post提交方式下中文乱码处理
//post提交方式,解决中文乱码的方案
//tomcat内部使用了iso-8859-1的编码,这种方式不支持中文。
先使用iso-8859-1进行解码,在使用UTF-8进行编码。
Name= new String(name.getBytes(“iso-8859-1”),”utf-8”);
或者使用
request.setCharacterEncoding("utf-8");【character/'kærəktə/
:字符 characterencoding:字符编码】
utf-8英文占一个字节中文占三个字节
2 HttpServletResponse
HttpServletResponse对象服务器的响应。该对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法
1)返回响应内容
//获取打印流的对象
PrintWriter writer = response.getWriter();
//writer.write("hello");
//如果返回的数据使用HTML相关标签,浏览器展示数据时,直接解析相关标签
//writer.write("<html><head><title>hello</title></head><body><font color='red'>hello world</font></body></html>");
String html = "<html>";
html += "<head>";
html += "</head>";
html += "<body>";
html += " 你好";
html += "</body>";
html += "</html>";
writer.write(html);
writer.close();
2)中文乱码处理
response.setContentType("text/html;charset=utf-8");
数据库里面是utf8,设置utf-8可能不生效。
3)重定向 重新定位到一个资源,实现资源的跳转
response.setStatus(302);
response.setHeader("location", "要刷新的页面url地址");
4)刷新
//定时刷新,每隔一秒刷新一次
//response.setHeader("refresh", "1");
//指定时间(秒)后,跳转到另外的界面
response.setHeader("refresh", "3;要调转的页面url地址");
3 Servlet注册
例如,访问:http://localhost:8080/W09_Servlet3/hello
Tomcat服务器截取到访问的资源名称/hello,然后从web.xml的中找匹配的数据,找到后,再查找相关的servlet-name;然后从节点中找匹配的servlet-name,找到后,就找到了对应的servlet-class,最后创建对象,执行其中的方法