📄 61.html
字号:
java.io.IOException(e.getMessage());<BR>}<BR>}<BR>/**<BR>* Insert the
method's description here.<BR>* Creation date: (2001-2-4 20:34:37)<BR>*
@param urlenc java.lang.String<BR>*/<BR>private void parse(String
urlenc,String encoding) throws java.io.IOException{<BR>if (urlenc == null)
return;<BR>StringTokenizer tok = new
StringTokenizer(urlenc,"&");<BR>try{<BR>while
(tok.hasMoreTokens()){<BR>String aPair = tok.nextToken();<BR>int pos =
aPair.indexOf("=");<BR>String name = null;<BR>String value =
null;<BR>if(pos != -1){<BR>name =
decode(aPair.substring(0,pos),encoding);<BR>value =
decode(aPair.substring(pos+1),encoding);<BR>}else{<BR>name =
aPair;<BR>value = "";<BR>}<BR>if(pairs.containsKey(name)){<BR>ArrayList
values =
(ArrayList)pairs.get(name);<BR>values.add(value);<BR>}else{<BR>ArrayList
values = new
ArrayList();<BR>values.add(value);<BR>pairs.put(name,values);<BR>}<BR>}<BR>}catch(Exception
e){<BR>throw new
java.io.IOException(e.getMessage());<BR>}<BR>}<BR>}<BR>这个类的功能就是读取并保存form提交的信息,并实现常用的getParameter方法。<BR>package
com.hto.servlet;</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>import java.io.*;<BR>import
javax.servlet.*;<BR>import javax.servlet.http.*;<BR>/**<BR>* Insert the
type's description here.<BR>* Creation date: (2001-2-5 8:28:20)<BR>*
@author: 钱卫春<BR>*/<BR>public class UtfBaseServlet extends HttpServlet
{<BR>public static final String PARAMS_ATTR_NAME =
"PARAMS_ATTR_NAME";<BR>/**<BR>* Process incoming HTTP GET requests <BR>*
<BR>* @param request Object that encapsulates the request to the servlet
<BR>* @param response Object that encapsulates the response from the
servlet<BR>*/<BR>public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>performTask(request,
response);</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>}<BR>/**<BR>* Process incoming
HTTP POST requests <BR>* <BR>* @param request Object that encapsulates the
request to the servlet <BR>* @param response Object that encapsulates the
response from the servlet<BR>*/<BR>public void doPost(HttpServletRequest
request, HttpServletResponse response) throws ServletException,
IOException {</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>performTask(request,
response);</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>}<BR>/**<BR>* Insert the method's
description here.<BR>* Creation date: (2001-2-5 8:52:43)<BR>* @return
int<BR>* @param request javax.servlet.http.HttpServletRequest<BR>* @param
name java.lang.String<BR>* @param required boolean<BR>* @param defValue
int<BR>*/<BR>public static java.sql.Date
getDateParameter(HttpServletRequest request, String name, boolean
required, java.sql.Date defValue) throws ServletException{<BR>String value
= getParameter(request,name,required,String.valueOf(defValue));<BR>return
java.sql.Date.valueOf(value);<BR>}<BR>/**<BR>* Insert the method's
description here.<BR>* Creation date: (2001-2-5 8:52:43)<BR>* @return
int<BR>* @param request javax.servlet.http.HttpServletRequest<BR>* @param
name java.lang.String<BR>* @param required boolean<BR>* @param defValue
int<BR>*/<BR>public static double getDoubleParameter(HttpServletRequest
request, String name, boolean required, double defValue) throws
ServletException{<BR>String value =
getParameter(request,name,required,String.valueOf(defValue));<BR>return
Double.parseDouble(value);<BR>}<BR>/**<BR>* Insert the method's
description here.<BR>* Creation date: (2001-2-5 8:52:43)<BR>* @return
int<BR>* @param request javax.servlet.http.HttpServletRequest<BR>* @param
name java.lang.String<BR>* @param required boolean<BR>* @param defValue
int<BR>*/<BR>public static float getFloatParameter(HttpServletRequest
request, String name, boolean required, float defValue) throws
ServletException{<BR>String value =
getParameter(request,name,required,String.valueOf(defValue));<BR>return
Float.parseFloat(value);<BR>}<BR>/**<BR>* Insert the method's description
here.<BR>* Creation date: (2001-2-5 8:52:43)<BR>* @return int<BR>* @param
request javax.servlet.http.HttpServletRequest<BR>* @param name
java.lang.String<BR>* @param required boolean<BR>* @param defValue
int<BR>*/<BR>public static int getIntParameter(HttpServletRequest request,
String name, boolean required, int defValue) throws
ServletException{<BR>String value =
getParameter(request,name,required,String.valueOf(defValue));<BR>return
Integer.parseInt(value);<BR>}<BR>/**<BR>* Insert the method's description
here.<BR>* Creation date: (2001-2-5 8:43:36)<BR>* @return
java.lang.String<BR>* @param request
javax.servlet.http.HttpServletRequest<BR>* @param name
java.lang.String<BR>* @param required boolean<BR>* @param defValue
java.lang.String<BR>*/<BR>public static String
getParameter(HttpServletRequest request, String name, boolean required,
String defValue) throws
ServletException{<BR>if(request.getAttribute(UtfBaseServlet.PARAMS_ATTR_NAME)
!= null) {<BR>UTF8ParameterReader params =
(UTF8ParameterReader)request.getAttribute(UtfBaseServlet.PARAMS_ATTR_NAME);<BR>if
(params.getParameter(name) != null) return
params.getParameter(name);<BR>if (required) throw new
ServletException("The Parameter "+name+" Required but not
provided!");<BR>else return defValue;<BR>}else{<BR>if
(request.getParameter(name) != null) return
request.getParameter(name);<BR>if (required) throw new
ServletException("The Parameter "+name+" Required but not
provided!");<BR>else return defValue;<BR>}<BR>}<BR>/**<BR>* Returns the
servlet info string.<BR>*/<BR>public String getServletInfo()
{</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>return
super.getServletInfo();</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>}<BR>/**<BR>* Insert the method's
description here.<BR>* Creation date: (2001-2-5 8:52:43)<BR>* @return
int<BR>* @param request javax.servlet.http.HttpServletRequest<BR>* @param
name java.lang.String<BR>* @param required boolean<BR>* @param defValue
int<BR>*/<BR>public static java.sql.Timestamp
getTimestampParameter(HttpServletRequest request, String name, boolean
required, java.sql.Timestamp defValue) throws ServletException{<BR>String
value =
getParameter(request,name,required,String.valueOf(defValue));<BR>return
java.sql.Timestamp.valueOf(value);<BR>}<BR>/**<BR>* Initializes the
servlet.<BR>*/<BR>public void init() {<BR>// insert code to initialize the
servlet here</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>}<BR>/**<BR>* Process incoming
requests for information<BR>* <BR>* @param request Object that
encapsulates the request to the servlet <BR>* @param response Object that
encapsulates the response from the servlet<BR>*/<BR>public void
performTask(HttpServletRequest request, HttpServletResponse response)
{</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>try</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>{<BR>// Insert user code from
here.</FONT></SPAN></P>
<P><SPAN class=line><FONT color=#386490>}<BR>catch(Throwable
theException)<BR>{<BR>// uncomment the following line when unexpected
exceptions<BR>// are occuring to aid in debugging the
problem.<BR>//theException.printStackTrace();<BR>}<BR>}<BR>/**<BR>* Insert
the method's description here.<BR>* Creation date: (2001-2-5 8:31:54)<BR>*
@param request javax.servlet.ServletRequest<BR>* @param response
javax.servlet.ServletResponse<BR>* @exception
javax.servlet.ServletException The exception description.<BR>* @exception
java.io.IOException The exception description.<BR>*/<BR>public void
service(ServletRequest request, ServletResponse response) throws
javax.servlet.ServletException, java.io.IOException {<BR>String content =
request.getContentType();<BR>if(content == null || content != null
&&
content.toLowerCase().startsWith("application/x-www-form-urlencoded"))<BR>request.setAttribute(PARAMS_ATTR_NAME,new
UTF8ParameterReader((HttpServletRequest)request));<BR>super.service(request,response);<BR>}<BR>}<BR> 这个就是Servlet基类,它覆盖了父类的service方法,在调用父类service前,创建了UTF8ParameterReader对象,其中保存了form中提交的信息。然后把这个对象作为一个Attribute保存到Request对象中。然后照样调用父类的service方法。<BR> 对于继承这个类的Servlet,要注意的是,"标准"getParameter在也不能读到post的数据,因为在这之前这个类中已经从ServletInputStream中读出了数据了。所以应该使用该类中提供的getParameter方法。<BR> 剩下的就是输出问题了,我们要把输出的信息,转为UTF8的二进制流输出。只要我们设置Content-Type时指定charset为UTF8,然后使用PrintWriter输出,那么这些转换是自动进行的,Servlet中这样设置:<BR> response.setContentType("text/html;charset=UTF8");<BR>Jsp中这样设置:<BR> <%@
page
contentType="text/html;charset=UTF8"%><BR> 这样就可以保证输出是UTF8流,客户端能否显示,就看客户端的了。<BR> 对于multipart/form-data的form提交的内容,我也提供一个类用来处理,在这个类的构造子中可以指定页面使用的charset,默认还是UTF-8,限于篇幅不贴出源码.
</td>
</tr>
</td>
</tr>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -