Java Web总结
一、地址
客户端路径和服务端路径
表单:<form action="路径"></form>
超链接:<a href="路径">xxx</a>
图片:<img src="路径"/>
重定向:response.sendRedirect("路径")
请求转发:request.getQuestDispatcher("路径").forward(request,response)
请求包含:request.getQuestDisPatcher("路径").include(request,response);
ServletContext 获取资源的相关方法
servletContext.getRealPath("路径")//根据文件的相对路径获取绝对路径
servletContext.getResourceAsStream("路径")//根据文件的相对路径获取文件的输入流
在web.xml文件中配置的Servlet的访问路径
<url-pattern>路径</url-pattern>
客户端路径:客户端访问服务器资源的时候的路径
1、表单
在程序中的书写方式:http://127.0.0.1:8888/day11/AServlet
服务器主机名/端口号/项目名/资源名
2、超链接
<a href="路径">xxx</a>
3、图片
<img src="/day11/images/stu,jpg"/>
4.重定向
response.sendRedirect("/day11/AServlet");
服务端路径:
1、请求转发
2、请求包含
3、在ServletContext中与资源相关的方法
servletContext.getRealPath("/WEB-INF/web.xml")//根据文件的相对路径获取绝对路径
4、在web.xml文件中配置的Servlet的访问路径
<url-pattern>/AServlet</url-pattern>
二、编码
从客户端、浏览器向服务器发送请求数据或从服务器向客户端发送响应数据,在底层都是以字节的形式发送的,这就需要将字符数据转换成字节,这个过程叫做编码。
在客户端、浏览器或者服务器端接收到字节数据后,需要把字节组装成字符,这个过程叫做解码。
无论编码和解码都需要用到码表。常用的编码解码方式有GBK gb2312 ISO-8859-1
服务器默认的编码和解码都是ISO-8859-1
产生乱码的根源是编码和解码的方式不一致,只要编码和解码的方式一致就不会产生乱码。
三、请求编码
(1)在页面中发出请求
用户在页面上输入的数据的编码是由页面本身的编码决定的
(2)get请求解码
服务器默认的解码方式为ISO-8859-1 ,不支持中文。
解决乱码需要两步:一是回退为字节数据 二是重新编码
AServlet.java
package cn.edu.aynu.rjxy.servlet; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AServlet extends HttpServlet { /* * Post请求 * */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*post请求的解码处理 乱码出现的根源是:编码方式和解码方式不一致。 * tomcat服务器默认的解码方式是ISO-8859-1不支持中文。由于post请求 * 有请求体,请求参数是放在请求体中的,设置请求体的解码方式,需要调用 * 方法request.setCharacterEncoding("UTF-8");支持中文 */ request.setCharacterEncoding("UTF-8"); //响应输出流的编码方式是UTF-8 客户端、浏览器解码方式也为UTF-8 response.setContentType("text/html;charset=utf-8"); //根据参数名获取参数值 String username = request.getParameter("username"); String sex = request.getParameter("sex"); String select = request.getParameter("select"); //根据参数名获取多个参数值 String[] hobby = request.getParameterValues("hobby"); String experiment = request.getParameter("experiment"); //输入到界面上 response.getWriter().print("姓名:"+username+"<br>"); response.getWriter().print("性别:"+sex+"<br>"); response.getWriter().print("学历:"+select+"<br>"); //创建一个数组用于存放爱好的值 ArrayList hobbies = new ArrayList(); //数组的遍历 for (int i = 0; i < hobby.length; i++) { hobbies.add(hobby[i]); } response.getWriter().print("爱好:"+hobbies+"<br>"); response.getWriter().print("工作经历:"+experiment+"<br>"); } }
a.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'a.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="/day11/AServlet" method="post"> 姓名:<input type="text" name="username"><br> 性别:<input type="radio" name="sex" value="male">男 <input type="radio" name="sex" value="female">女<br> 学历:<select name="select"> <option selected="selected" value="college">本科</option> <option value="junior">大专</option> <option value="master">硕士</option> <option value="doctor">博士</option> </select><br> 爱好:<input type="checkbox" name="hobby" value="sing">唱歌 <input type="checkbox" name="hobby" value="dance">跳舞 <input type="checkbox" name="hobby" value="read">阅读 <input type="checkbox" name="hobby" value="run">跑步<br> 工作经历:<br> <textarea name="experiment" rows="5" cols="35">请认真写下您的工作经历</textarea><br> <input type="submit" value="提交"> </form> </body> </html>
posted on 2016-09-28 16:46 kang_ya_ping 阅读(250) 评论(0) 编辑 收藏 举报