servlet中文编码问题setCharacterEncoding

请问下setCharacterEncoding()到底是什么含义,注释说是转码,但是由什么码转到什么码,后面参数只有一个
那么 request.setCharacterEncoding("UTF-8");这条语句是什么意思,将请求的编码转为UTF-8,serlvet理解请求原编码又是什么?是gbk转utf-8还是ascII转utf-8,同样response.setCharacterEncoding("UTF-8");又是什么意思,将回应转为utf-8,那servlet原本的编码又默认是什么?当我两条语句同时用的时候,request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");把输入再次输出,结果又是怎样的?

如果不定义setCharacterEncoding,使其值为null,有是什么编码。

3个回答

追问:还是上面说的将页面的输入输出出去的例子

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("gb2312");

无乱码(浏览器设置了解码方式gbk)

request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");  
无乱码(浏览器设置了解码方式unicode)

request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");  
乱码(浏览器怎么设置解码都乱码)

    response.setCharacterEncoding("UTF-8");  
乱码(浏览器怎么设置解码都乱码)


从以上例子我推测,是不是servlet里面的编码是固定的,是那个iso-8190类似的那个,request.setCharacterEncoding("UTF-8");告诉serlvet,请求(浏览器)是utf-8编码的,你给我转成iso-8190。response.setCharacterEncoding("UTF-8");则是说给我把iso-8190转成UTF-8。

因为浏览器的请求都是unicode编码,所以request.setCharacterEncoding("UTF-8");如果参数不是utf-8,就一定是乱码。
而response.setCharacterEncoding("UTF-8");参数则可以随便写,只要浏览解码调整为对应的输出格式就行了。
不知道我的猜测对不对。
另外,为了储存中文cookie(只支持acsII),我得用URLEncoder.encode(data, "utf-8");代码编MIME码,这里的参数utf-8是指什么呢,

QQ1252776430
QQ1252776430 因为URLEncoder.encode(data, "utf-8");肯定是servlet本地代码,就是说给我把iso-8190转成utf-8版的mime,反之亦然,所以mime只要编码和解码参数一样,最后结果一定是iso-8190,反正response.setCharacterEncoding("UTF-8");最后输出还是转成unicode的
接近 4 年之前 回复

servlet是有web容器加载的,举例tomcat来说,默认ISO8859-1,setCharacterEncoding("utf8");就是将ISO8859-1转成utf8

那具体看情况了,不过那句话发的意思就是转码成utf-8

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Servlet、html的编码问题
编写了一个html文件,直接使用浏览器打开之后是我期望的显示“欢迎光临” 而在一个Servlet中使用请求转发,forward(request,response),跳转的页面却是乱码。 这是为什么呢? index.html ``` <!DOCTYPE html> <!-- To change this license header, choose License Headers in Project Properties. To change this template file, choose Tools | Templates and open the template in the editor. --> <html> <head> <title>TODO supply a title</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <h1>欢迎光临!</h1> </body> </html> ``` HandleLoginServlet.java ``` /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * * @author OKAXINA */ @WebServlet(urlPatterns = {"/HandleLoginServlet"}) public class HandleLoginServlet extends HttpServlet { /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try{ /* TODO output your page here. You may use following sample code. */ String username = request.getParameter("username"); String userpass = request.getParameter("userpass"); if("admin".equalsIgnoreCase(username) && "1234".equals(userpass)){ RequestDispatcher rd = request.getRequestDispatcher("index.html"); rd.forward(request, response); }else{ out.print("用户名或密码错误,请重新输入!"); RequestDispatcher rd = request.getRequestDispatcher("login.jsp"); rd.include(request, response); } }finally{ out.close(); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Handles the HTTP <code>POST</code> method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> } ```
servlet中文乱码的问题,百度所有的解决方案后还是不行
这个是doget方法 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Type", "text/html;charset=UTF-8") ; String username = new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8"); PrintWriter pw=response.getWriter(); System.out.println(username);//当为固定的中文字符串时没问题 所以是request.getParameter的问题 这里就是乱码了 userDao use=new userDao();//自己定义的数据库连接 String result=use.cheakName(username); System.out.println(result); pw.print(result); //返回处理的结果 然后jsp页面我也用了 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 在tomcat下面也改了 <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> 点击属性查看编码方式也是UTF-8
jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办?
jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办?我在doGet方法中设置了response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8");所有的编码方式都是utf-8,其他地方都没出现乱码,可是就这里传递的参数是中文时会出乱码,请问是什么原因,怎么解决?
!!!servlet 传数据给数据库出现中文乱码
网上的各种方法我都试过了 什么my.ini, 还有 request.setCharacterEncoding("UTF-8");//处理编码 response.setCharacterEncoding("UTF-8");//处理编码 以及public String handleString(String s) { try{ byte bb[] =s.getBytes("UTF-8"); s=new String(bb); } catch(Exception ee){ } return s; } 最后的String uri="jdbc:mysql://127.0.0.1/zbsjk?"+"user=root&password=123456&characterEncoding=utf8"; 都解决不了,难道我要重装mysql吗!!!!QUQ
setContentType设置编码时设置为utf-8就出现乱码,其他编码则正常显示
设置编码的代码: response.setCharacterEncoding("utf-8"); response.setContentType("text/html,charset=utf-8"); 运行之后只有不是UTF-8编码就可以正常显示中文,比如gb2313和GBK
servlet 下载文件时文件名中文乱码问题一直解决不了
jsp页面通过超链标签下载文件,文件名包含中文时,下载乱码,英文和数字可以正常下载,根据网上的方法试了很多次还是解决不了,困扰一天了,现在是凌晨1点这个问题搞得我睡不着,各位老哥帮小弟看看是 哪里错了![图片说明](https://img-ask.csdn.net/upload/201907/10/1562692200_241773.png)页面编码设置utf_8 ![图片说明](https://img-ask.csdn.net/upload/201907/10/1562692300_50200.png)下载链接 ``` protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); EbizCompany company = (EbizCompany) request.getSession().getAttribute("currentCompany"); //String file = new String(request.getParameter("file").getBytes("ISO-8859-1"),"UTF-8"); String fileName = request.getParameter("file"); //客户端传递的需要下载的文件名 fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8"); System.out.println("filename "+fileName); //获得请求头中的User-Agent String agent = request.getHeader("User-Agent"); //根据不同浏览器进行不同的编码 String fileNameEncoder = ""; if (agent.contains("MSIE")) { // IE浏览器 fileNameEncoder = URLEncoder.encode(fileName, "utf-8"); fileNameEncoder = fileNameEncoder.replace("+", " "); } else if (agent.contains("Firefox")) { // 火狐浏览器 BASE64Encoder base64Encoder = new BASE64Encoder(); fileNameEncoder = "=?utf-8?B?" + base64Encoder.encode(fileName.getBytes("utf-8")) + "?="; } else { // 其它浏览器 fileNameEncoder = URLEncoder.encode(fileName, "utf-8"); } //客户端通过文件的MIME区分下载的文件的类型 response.setContentType(this.getServletContext().getMimeType(fileName)); //告诉客户端不要直接解析该文件,而是以附件的形式打开(下载) 客户端默认对名字进行解码 response.setHeader("Content-Disposition", "attachment;filename=" + fileNameEncoder); String time=Integer.toString(GeneralMethod.getYear(System.currentTimeMillis()))+"\\"+Integer.toString(GeneralMethod.getMonth(System.currentTimeMillis())); String path = Constant.FilePath + "\\" + company.companyName+"\\"+time+"\\"+fileName; FileInputStream fis = new FileInputStream(path); response.setContentType("multipart/form-data"); ServletOutputStream out = response.getOutputStream(); byte[] bt = new byte[1024]; int length = 0; while((length=fis.read(bt))!=-1){ out.write(bt,0,length); } out.close(); } ``` ![图片说明](https://img-ask.csdn.net/upload/201907/10/1562692854_226734.png)
配置web.xml后显示HTTP Status 404 – 未找到
实现通过表单向servlet中传送数据,配置webxml后一直显示HHTP404,但我把添加的配置内容删掉后反而可以运行了 web.xml配置: ``` <servlet> <servlet-name>ComputeBill</servlet-name> <servlet-class>myservlet.ComputeBill</servlet-class> </servlet> <servlet-mapping> <servlet-name>ComputeBill</servlet-name> <url-pattern>/ComputeBill</url-pattern> </servlet-mapping> ``` ![图片说明](https://img-ask.csdn.net/upload/201911/20/1574242666_587077.jpg) ![图片说明](https://img-ask.csdn.net/upload/201911/20/1574242696_947922.jpg) jsp代码: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>利用表单给servlet传送数据</title> </head> <body> <form action="ComputeBill" method="post"> 输入账单:<br> <textarea name='billMess' rows="5" cols="30"> </textarea> <br> <input type=submit value="提交"> </form> </body> </html> ``` servlet代码(省略导包): ``` public class ComputeBill extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ComputeBill() { super(); // TODO Auto-generated constructor stub } /** * @see Servlet#init(ServletConfig) */ public void init(ServletConfig config) throws ServletException { // TODO Auto-generated method stub super.init(config); } /** * @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response) */ protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //1、设置编码格式 request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); //2、利用printwriter类输出流声明out对象,利用response对象调用getwriter方法获取一个输出流,利用out对象调用print方法 PrintWriter out=response.getWriter(); out.print("<html><body bgcolor=yellow>"); //3、通过request对象获取表单中文本区的内容送给str String str=request.getParameter("billMess"); if(str==null||str.length()==0) return; String [] price=str.split("[^0123456789.]+"); double sum=0; try { for(int i=0;i<price.length;i++) { if(price[i].length()>=1) sum+=Double.parseDouble(price[i]); } } catch(NumberFormatException e){out.print(e);} out.print(str+"<br>的消费额:"+sum+"元"); out.print("</body></html>"); } ```
Servlet接收表单传过来的中文值,再转发时,出现乱码的问题
<p> </p> <pre name="code" class="html">&lt;%@ page language="java" import="java.util.*" pageEncoding="GBK"%&gt;</pre> <pre name="code" class="html">&lt;% String message = "Hello World!"; String msg = (String)request.getAttribute("msg"); if(msg != null &amp;&amp; !msg.equals("")) { message = msg; } %&gt; &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;My JSP 'helloworld.jsp' starting page&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;%=message %&gt; &lt;form action="servlet/HelloServlet" method="post"&gt; &lt;input type="text" name="name"/&gt; &lt;input type="submit" value="提交"/&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt; </pre> <p> </p> <p> </p> <pre name="code" class="java">package lee; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloServlet extends HttpServlet {</pre> <pre name="code" class="java"> public void service(HttpServletRequest request, HttpServletResponse response) throws IOException{ String msg = null; String name = request.getParameter("name"); request.setCharacterEncoding("GBK"); if(name != null &amp;&amp; !name.equals("")) { msg = "Hello " + name; } request.setAttribute("msg", msg); RequestDispatcher rd = request.getRequestDispatcher("/Hello/helloworld.jsp"); rd.forward(request, response); } } </pre> <p> 小弟是Java web的初学者,今天学习时,写了一个简单的应用来测试servlet的页面转发功能,问题是: 当输入中文时,会出现乱码,不是编码的问题,这个我试过了,请问各位高手这是什么原因呢,怎么改呢?请指点指点,让大家见笑了。</p>
servlet 里面用PrintWriter创建的html 怎么设置编码?
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{ PrintWriter out = response.getWriter(); response.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8"); String base = request.getContextPath(); out.print("<html>"); out.print("<head>"); out.print("<meta charset=\"UTF-8\"/>"); out.print("<title>DemoOne</title>"); out.print("</head>"); out.print("<body>"); out.print("<p1>欢迎登陆这个界面</p1>"); out.print("</br></br>"); out.print("<form action=\"cityServlet\" method=\"get\"/>"); out.print("<input type=\"submit\" value=\"选择城市\"/>"); out.print("</br>"); out.print("</br>"); out.print("<form action=\"climateServlet\" method=\"get\"/>"); out.print("<input type=\"submit\" value=\"选择天气\"/>"); out.print("</br>"); out.print("</br>"); out.print("<a href=\"climateServlet\"/>选择天气</a>"); out.print("</body>"); out.print("</html>"); } 这样子出来的编码都是??怎么显示中文?
Servlet遇到java.lang.NullPointerException问题无法解决,恳求帮助
各位大佬,最近用Jsp+servlet写教务管理系统,其中servlet端有一个问题始终无法解决 ``` 严重: Servlet.service() for servlet [com.jwglxt.data.searchStudent] in context with path [/jwglxt] threw exception java.lang.NullPointerException ``` 目的是根据从前台传来的查询类型和查询关键词在数据库中进行检索,目前前后端数据传递正常,NullPointerException这个问题始终得不到解决,尝试了很多办法都不行,恳请各位大佬施以援手! 代码如下: ```java package com.jwglxt.data; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; //思路:绑定一个弹出框在“搜索”按钮上,弹出框里放置一个datagrid,url为searchStudent @WebServlet("/searchStudent") public class searchStudent extends HttpServlet { @SuppressWarnings({ "null", "null", "null" }) protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置编码格式 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/json; charset=utf-8"); //获取学生信息主码-学号(sno) String name=request.getParameter("name"); System.out.println("搜索类型:"+name); String value=request.getParameter("value"); System.out.println("搜索值:"+value); //姑且赋值 /*String name="sno"; String value="990101";*/ //连接数据库 Connection connection=null; String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//SQL数据库引擎 String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=tjl";//数据源 !!!注意若出现加载或者连接数据库失败一般是这里出现问题 String Name="sa"; String Pwd="19990713"; ResultSet rs=null; String sql="sql"; //定义JSON数组,用于保存从数据库查出来的数据 JSONArray array = new JSONArray(); try { Class.forName(driverName); connection=DriverManager.getConnection(dbURL,Name,Pwd); System.out.println("搜索学生:连接数据库成功"); } catch (ClassNotFoundException e2) { e2.printStackTrace(); }catch (SQLException e) { e.printStackTrace(); } //处理搜索类型 尝试switch语句 /*switch(name) { case "sno":{ try { sql="select * from student where sno=?"; connection.prepareStatement(sql); pstmt.setString(1,value); //rs=pstmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); };break; }//case }//switch */ //处理搜索类型 尝试If语句 if(name!=null) { if("sno".equals(name)){ try { //仅构造SQL语句,暂不运行 sql="select * from student where sno=?"; PreparedStatement pstmt=connection.prepareStatement(sql); pstmt.setString(1,value); rs = pstmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } else if("sname".equals(name)){ try { //仅构造SQL语句,暂不运行 sql="select * from student where sname=?"; PreparedStatement pstmt=connection.prepareStatement(sql); pstmt.setString(1,value); rs = pstmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } else if("sex".equals(name)){ try { //仅构造SQL语句,暂不运行 sql="select * from student where sex=?"; PreparedStatement pstmt=connection.prepareStatement(sql); pstmt.setString(1,value); rs = pstmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } else if("dno".equals(name)){ try { //仅构造SQL语句,暂不运行 sql="select * from student where dno=?"; PreparedStatement pstmt=connection.prepareStatement(sql); pstmt.setString(1,value); rs = pstmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } else { try { //仅构造SQL语句,暂不运行 sql="select * from student where dormno=?"; PreparedStatement pstmt=connection.prepareStatement(sql); pstmt.setString(1,value); rs = pstmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } } System.out.println(sql); } try { // 获取列数 ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); while (rs.next()) { JSONObject jsonObj = new JSONObject(); // 遍历每一列 for (int i = 1; i <= columnCount; i++) { String columnName =metaData.getColumnLabel(i); String value2 = rs.getString(columnName); try { jsonObj.put(columnName, value2); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } array.put(jsonObj); } } catch (SQLException e1) { e1.printStackTrace(); } //关闭 try { if(rs!=null) rs.close(); //pstmt.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } //PrintWriter out = response.getWriter(); System.out.println(array); }//总类 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public static void main(String args[]) { searchStudent ss=new searchStudent(); try { ss.doGet(null, null); } catch (ServletException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } ```
jsp里面的foreach如何正确获取从 servlet里list里的值
jsp页面 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <% 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 'addowner.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 style="background-color:pink;"> <form action="AddOwnerServlet" method="post"> <center> <table style="background-color:pink; color:#2c92fb; text-align:center; margin:0 auto;"> <tr> <td><img src="image/1.png"/></td> <td> <div style="background-color:pink; color:#0ee3db"> <h1 style="color:write;">宠物医院管理系统</h1> </div> </td> <td><img src="image/3.png"/></td> </tr> <tr> <td><a href="index.jsp">系统首页</a></td> <td><a href="login.jsp">登录</a></td> <td><a href="register.jsp">注册</a></td> </tr> <tr> <table width="600" border="1" bordercolor="red" bgcolor="#FFFFEE"> <tr> <td>用户ID:</td> <td><input type="text" name="ownerID"></td> </tr> <tr> <td>用户登录名:</td> <td><input type="text" name="oname"></td> </tr> <tr> <td>用户密码:</td> <td><input type="password" name="opassword"></td> </tr> <tr> <td>性别:</td> <td><input type="text" name="osex"></td> </tr> <tr> <td>联系方式:</td> <td><input type="text" name="phone"></td> </tr> <tr> <td>地址:</td> <td><input type="text" name="address"></td> </tr> <tr> <td>宠物ID:</td> <td> <select id="list" name="petID"> <option value="">请选择宠物ID..</option> <c:forEach items="${requestScope.list}" var="listpets"> <option value="${listpets}">${listpets}</option> </c:forEach> </select> </td> </tr> <tr> <td><input type="submit" value="添加"></td> <td><input type="reset" value="重置"></td> </tr> </table> </tr> </table> </center> </form> </body> </html> servlet页面 package www.bttc.manager.ownerservlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import www.bttc.manager.model.Pets; import www.bttc.manager.model.Powner; import www.bttc.manager.service.OwnerService; import www.bttc.manager.service.PetsService; import www.bttc.manager.service.impl.OwnerServiceImpl; import www.bttc.manager.service.impl.PetsServiceImpl; import www.bttc.manager.utils.ServiceException; public class AddOwnerServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8");// 设置请求的编码方式 response.setCharacterEncoding("UTF-8");// 设置响应的编码方式 response.setContentType("text/html;charset=utf-8"); OwnerService ownerService=new OwnerServiceImpl(); PetsService petsService=new PetsServiceImpl(); HttpSession session=request.getSession(); int ownerID=Integer.parseInt(request.getParameter("ownerID")); String osex=request.getParameter("osex"); String oname=request.getParameter("oname"); String opassword=request.getParameter("opassword"); int phone=Integer.parseInt(request.getParameter("phone")); String address=request.getParameter("address"); int petID=Integer.parseInt(request.getParameter("petID")); /*try { List<Pets> list=(List<Pets>) petsService.findAllPetID(); //request.setAttribute("ownerID", ownerID); request.setAttribute("list", list); } catch (ServiceException e1) { e1.printStackTrace(); }*/ try { //Pets pets=new Pets(); Pets pets=petsService.findPetsByPetsID(petID); if(ownerService.findOwnerByOwnerID(ownerID)!=null){ session.setAttribute("message", "添加的普通用户记录已存在!"); request.getRequestDispatcher("addowner.jsp").forward(request, response); }else{ Powner owner=new Powner(ownerID,osex,oname,opassword,phone,address,pets); ownerService.addOwner(owner); //Powner owner=ownerService.addOwner(owner); session.setAttribute("message", "添加普通用户已成功!"); request.getRequestDispatcher("/admin.jsp").forward(request, response); } } catch (ServiceException e) { e.printStackTrace(); } } } 另一个servlet package www.bttc.manager.ownerservlet; import java.io.IOException; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import www.bttc.manager.model.Pets; import www.bttc.manager.service.PetsService; import www.bttc.manager.service.impl.PetsServiceImpl; import www.bttc.manager.utils.ServiceException; public class SelectPetID extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8");// 设置请求的编码方式 response.setCharacterEncoding("UTF-8");// 设置响应的编码方式 response.setContentType("text/html;charset=utf-8"); //int petID=Integer.parseInt(request.getParameter("petID")); PetsService petsService=new PetsServiceImpl(); try { List<Pets> pets = petsService.findAllPetID(); request.setAttribute("listpets", pets); request.getRequestDispatcher("/addowner.jsp").forward(request, response); } catch (ServiceException e) { e.printStackTrace(); } } }
Servlet
我通过servlet的forward的方法从一个一面跳向另一个页面,现在跳转后的页面对应得控制层获取原来页面的参数。 [color=red]跳转前[/color] protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String name=request.getParameter("name"); String password=request.getParameter("password"); if(name!=null&&password!=null){ try { if(ChatService.instance().addUser(name,password)){ request.getSession(true).setAttribute(name,name); System.out.println("測試保存到Session里的用戶名"+request.getSession(true).getAttribute(name)); //String url="/chat.jsp?name="+name; request.getRequestDispatcher(/chat.jsp).forward(request,response); // response.sendRedirect("/chat.jsp"); } else{ request.setAttribute("tip",name+",注册失败,请重新注册"); request.getRequestDispatcher("/error.html").forward(request,response); } } catch (Exception e) { request.setAttribute("tip",e.getMessage()); request.getRequestDispatcher("/error.html").forward(request,response); } } [color=red] 跳转后[/color] protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //ajax是以utf8的方式设置编码的 request.setCharacterEncoding("UTF-8"); String context = request.getParameter("context"); if(context!=null&&!context.equals("")){ try { String user=request.getParameter("name"); //String user= (String) request.getSession(true).getAttribute("name"); System.out.println("测试获取的用户名:"+user); if(user==null){ user="晓利"; } ChatService.instance().addMsg(user,context); } catch (Exception e) { e.printStackTrace(); } } response.setContentType("text/html;charset=GBK"); PrintWriter out = response.getWriter(); System.out.println("测试聊天记录"+ChatService.instance().getMsg()); out.print(ChatService.instance().getMsg()); } 跳转后页面显示的url:[color=green]http://localhost:8080/welcome?name=join&password=789[/color]从url上看参数明明已经带过来了啊,可是我通过 String user=request.getParameter("name");或者 String user= (String) request.getSession(true).getAttribute("name"); 均获取不到name参数,请各位帮忙找找原因吧,谢谢!
servlet 过滤(filter)
======================== EncodingFilter.java ======================== package filter; import javax.servlet.FilterChain; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import javax.servlet.FilterConfig; public class EncodingFilter implements Filter{ private String targetEncoding = "gb2312"; protected FilterConfig filterConfig; public void init(FilterConfig config) throws ServletException { this.filterConfig = config; this.targetEncoding = config.getInitParameter("encoding"); } public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws IOException, ServletException { request.setCharacterEncoding(targetEncoding);//把请求用指定的方式编码 // 把处理发送到下一个过滤器 chain.doFilter(request,response); } public void destroy() { this.filterConfig=null; } public void setFilterConfig(final FilterConfig filterConfig) { this.filterConfig=filterConfig; } } ===================== web.xml ===================== <filter> <filter-name>encoding</filter-name> <filter-class>filter.EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>gb2312</param-value> </init-param> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>*</url-pattern> </filter-mapping> 我觉得这样写应该可以实现过滤,但没能,请大家看一下,问题的症结在哪儿.谢谢了
java web使用filter更改字符编码
filterName.jsp ``` <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> </head> <body> <form action="servlet/DealWithForm" method="post"> 学生姓名: <input type="text" name="stuname"><br> <input type="submit" value="显示"> </form> </body> </html> ``` filter.java ``` package filter; import java.io.IOException; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.Filter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.sun.net.httpserver.Filter.Chain; public class filter implements Filter { public filter() { super(); } private FilterConfig filterConfig; public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; } public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) { try { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; HttpSession session = request.getSession(); request.setCharacterEncoding("utf-8"); // response.setCharacterEncoding("GBK"); // response.setCharacterEncoding("gbk"); // response.setContentType("text/html;charset=gbk"); //code when login filterChain.doFilter(req, res); //code when logout } catch (IOException e) { e.printStackTrace(); } catch (ServletException e) { e.printStackTrace(); } } public void destroy() { //put destroy string in log //put your code } } ``` DealWithForm.java ``` package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DealWithForm extends HttpServlet { /** * Constructor of the object. */ public DealWithForm() { super(); } /** * Destruction of the servlet. <br> */ public void destroy() { super.destroy(); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // response.setContentType("text/html"); try { // PrintWriter out = response.getWriter(); String name=request.getParameter("stuname"); System.out.print("学生姓名:"+name); // System.out.print("学生姓名:"+name); } catch(Exception e) { e.printStackTrace(); } /* out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the GET method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); */ } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // response.setContentType("text/html"); try { // PrintWriter out = response.getWriter(); String name=request.getParameter("stuname"); System.out.println("学生姓名:"+name); } catch(Exception e) { e.printStackTrace(); } /* out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is "); out.print(this.getClass()); out.println(", using the POST method"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close(); */ } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init() throws ServletException { // Put your code here } } ``` web.xml ``` <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>DealWithForm</servlet-name> <servlet-class>servlet.DealWithForm</servlet-class> </servlet> <servlet-mapping> <servlet-name>DealWithForm</servlet-name> <url-pattern>/servlet/DealWithForm</url-pattern> </servlet-mapping> <filter> <filter-name>filter</filter-name> <filter-class>filter.filter</filter-class> </filter> <filter-mapping> <filter-name>filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> ``` * 想将filter.java中的 ``` request.setCharacterEncoding("utf-8"); ``` 改成 ``` request.setCharacterEncoding("GBK"); ``` 以更改编码方式,但是输出乱码(utf-8正常)
跪求高手帮忙看下程序为什么android连接不到servlet上,谢谢大家了
android客户端 package com.android.helloworld; import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class ButtonDemo extends Activity{ private Button button; private String username; private String psw; private EditText editText; private EditText editText2; public void onCreate(Bundle queding){ super.onCreate(queding); /** * 设置界面 */ setContentView(R.layout.activity_main); /** * 根据ID找到界面上的按钮对象 */ button=(Button) findViewById(R.id.button1); /** * 为按钮绑定点击时间 */ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { /** * 根据ID找到界面中的输入框 */ editText=(EditText) findViewById(R.id.editText1); /** * 根据ID找到界面中的输入框 */ editText2=(EditText) findViewById(R.id.editText2); /** * 把输入框中的内容去除空格后获得并且交给变量 */ username=editText.getText().toString().trim(); /** * 把输入框中的内容去除空格后获得并且交给变量 */ psw=editText2.getText().toString().trim(); /** * 构建需要传输的XML */ /** * 将构建的XML转化成字符串 */ String xml="username"+username+"psw"+psw; // /** // * 打印日志 // */ // Log.i("得到数据", "用户名"+username+"密码"+psw); /** * 打印看获得的数据和用户输入的数据是否一样 */ System.out.println("用户名"+username+"密码"+psw); try { /** * 服务器位置 */ URL url=new URL("http://127.0.0.1:8080/TestAndroid/1.do"); /** * 打开一个服务器的连接 */ HttpURLConnection connection=(HttpURLConnection) url.openConnection(); /** * 设置超时时间 单位毫秒 */ connection.setConnectTimeout(5000); /** * 允许输入 */ connection.setDoInput(true); /** * 允许输出 */ connection.setDoOutput(true); /** * 设置不允许用缓存 */ connection.setUseCaches(false); /** * 设置请求方法 */ connection.setRequestMethod("POST"); /** * 设置发送字符串的编码格式 */ connection.setRequestProperty("Conten-Type", "text/xml;charset=UTF-8"); /** * 通过IO流的方式发送数据给服务器 */ OutputStream outputStream=connection.getOutputStream(); /** * 设置将XML转化为字节的形式进行传输,编码方式是UTF-8 */ outputStream.write(xml.getBytes("UTF-8")); /** * 将输出流交给数据流发送 */ DataOutputStream dataOutputStream=new DataOutputStream(outputStream); /** * 将数据发送出去并且清空数据输出流 */ dataOutputStream.flush(); /** * 关闭输出流并且释放占用的资源空间 */ dataOutputStream.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); } } servlet端 package testservlet; import java.io.BufferedInputStream; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestServlet extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); // response.setContentType("text/xml;charset=utf-8"); // BufferedInputStream bufferedInputStream=new BufferedInputStream(request.getInputStream()); // byte[] bytes=new byte[1024*1024]; // int len=0; // while((len=bufferedInputStream.read(bytes))!=-1){ // System.out.println(bytes); // System.out.println(bytes.toString()); // } // System.out.println(len); System.out.println(111111); } } 有知道的告诉下怎么才可以解决 谢谢了 QQ704532683
Servlet验证出现405错误,HTTP method POST is not supported by this URL
我找了很久确实没有找出错误!!看看错在哪儿行吗? 谢谢!! 我用Form表单提交: [code="html"] <form action="user_dao_servlet" method="post"> 用户名: <input type="text" name="userName"/><br> 密码: <input type="password" name="userPassword"/><br> 确认密码: <input type="password" name="confirmPassword"/><br> 邮箱: <input type="text" name="userEmail"/><br> 安全问题: <input type="text" name="userQuestion"/><br> 答案: <input type="text" name="userAnswer"/><br> <input type="submit" value="提交"/> <input type="reset" value="重置"/> </form>[/code] 以下是我的Servlet代码: [code="java"]public class UserDAOServlet extends HttpServlet { public class UserLoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); //统一设置编码 String page = "user_register.jsp"; String code = request.getParameter("code"); List<String> errors = new ArrayList<String>(); // 验证码验证 if (code == null || "".equals(code)) { errors.add("验证码为空!"); } else { String rand = (String) request.getSession().getAttribute("rand"); if (!code.equalsIgnoreCase(rand)) { errors.add("验证码错误!!") ; } } //取出接受参数进行验证 String userName = request.getParameter("userName"); String userPassword = request.getParameter("userPassword"); String confirmPassword = request.getParameter("confirmPassword"); String userEmail = request.getParameter("userEmail"); String userQuestion = request.getParameter("userQuestion"); String userAnswer = request.getParameter("userAnswer"); String userRealName = request.getParameter("userRealName"); String tele = request.getParameter("tele"); String address = request.getParameter("address"); String sex = request.getParameter("sex"); if(!(userPassword.equals(confirmPassword))){ errors.add("两次输入密码不一样!"); } if (userName == null || "".equals(userName)) { errors.add("用户名不能为空!"); } if (userPassword == null || "".equals(userPassword)) { errors.add("密码不能为空!"); } if(errors.size()==0){ // 现在没有任何的错误信息 User vo=new User(); vo.setUserName(userName); vo.setUserPassword(new MD5Code().getMD5ofStr(userPassword)) ; vo.setAddress(address); vo.setSex(sex); vo.setTele(tele); vo.setUserQuestion(userQuestion); vo.setUserAnswer(userAnswer); vo.setUserEmail(userEmail); vo.setUserRealName(userRealName); try { if(DAOFactory.getIUserDAOInstance().doCreate(vo)){ request.getSession().setAttribute("user", vo) ; // 现在保存对象 request.setAttribute("userName", userName); page = "register_success.jsp" ; } else { errors.add("用户名或密码错误!"); } } catch (Exception e) { e.printStackTrace(); } } request.setAttribute("errors", errors) ; request.getRequestDispatcher(page).forward(request, response); } } }[/code] 以下是在WEB.XML里面的配置: [code="xml"]<servlet> <servlet-name>userDAO</servlet-name> <servlet-class>org.mm.servlet.UserDAOServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>userDAO</servlet-name> <url-pattern>/user_dao_servlet</url-pattern> </servlet-mapping> [/code]
Servlet中doget()方法写文件发生中文乱码,如何解决?
作业需求:登陆注册系统中,注册时会调用一个方法来创建一个文件写入用户的密码、科目等信息,在doget()中调用该方法。随后在浏览器地址栏上写参数信息,科目的参数中有中文,结果看创建的文件该参数乱码了,显示一串问号。故登陆时也不能确认信息从而无法登陆。 PS:dopost()能较好实现,但作业任务要求doget()也实现,故提出此疑问。 调试时地址栏的输入: ``` http://localhost:8080/test3_1/register.do?email=1223@123.com&username=123&password=123123123&confirmedPasswd=123123123&subject=计算机 ``` doget()相关代码 ``` protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); request.setCharacterEncoding("utf-8"); String subject = request.getParameter("subject"); byte b[]=subject.getBytes("UTF-8"); subject=new String(b,"UTF-8"); String email = request.getParameter("email"); String username = request.getParameter("username"); String password = request.getParameter("password"); String confirmedPasswd = request.getParameter("confirmedPasswd"); System.out.println(subject); List<String> errors = new ArrayList<String>(); if (isInvalidEmail(email)) { errors.add("未填写邮件或邮件格式不正确"); } if (isInvalidUsername(username)) { errors.add("用户名称为空或已存在"); } if (isInvalidPassword(password, confirmedPasswd)) { errors.add("请确认密码符合格式并再次确认密码"); } String resultPage = ERROR_VIEW; if (!errors.isEmpty()) { request.setAttribute("errors", errors); } else { resultPage = SUCCESS_VIEW; createUserData(email, username, password, subject); } request.getRequestDispatcher(resultPage).forward(request, response); } ``` 写文件方法 ``` private void createUserData(String email, String username, String password, String subject) throws IOException { File userhome = new File(USERS + "/" + username); userhome.mkdir(); BufferedWriter writer = new BufferedWriter(new FileWriter(userhome + "/profile.txt")); writer.write(email + "\t" + password + "\t" + subject); writer.close(); } ``` 显示页面html ``` <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > <title>注册会员</title> </head> <body> <h1>会员注册</h1> <form method='post' action='register.do'> <table bgcolor=#cccccc> <tr> <td>邮件地址:</td> <td><input type='text' name='email' size='25' maxlength='100'> </td> </tr> <tr> <td>用户名(最大16字符):</td> <td><input type='text' name='username' size='25' maxlength='16'> </td> </tr> <tr> <td>密码(6到16字符):</td> <td><input type='password' name='password' size='25' maxlength='16'> </td> </tr> <tr> <td>确认密码:</td> <td><input type='password' name='confirmedPasswd' size='25' maxlength='16'> </td> </tr> <tr> <td>专业:</td> <td><select name="subject" size="1" > <option value="计算机">计算机</option> <option value="软件工程">软件工程</option> <option value="网络工程">网络工程</option> </select></td> </tr> <tr> <td colspan='2' align='center'><input type='submit' value='注册'> </td> </tr> </table> </form> </body> </html> ``` 写后直接记事本打开,发现输入的subject参数一串问号。 已经查阅百度,写的编码或字符编码转换也应该加上了的,但还是不能解决。 希望有前辈补坑
为什么我的我用AJAX提交数据到Servlet最后数据始终是乱码??
这是jsp的页面,数据提交到doPost,然后响应到div里面显示,但是 AJAX中的中文数据提交到Servlet 始终是乱码;怎么改啊,大神们。。。 ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!-- 引入写了AJAX的js文件 --> <script type="text/javascript" src="${pageContext.request.contextPath }/AJAXDemo02POST/ajax_posttext.js"></script> <title>Insert title here</title> </head> <body> <h1>AJAX POST获取数据的练习</h1> <div style="width:300px;height:200px;border:1px solid red;" id="divajax"></div> <input type="button" value="点我获取数据" onclick="ajaxPostText()"/> </body> </html> ``` 这是 写了AJAX的js的文件 function ajaxPostText(){ // 创建异步对象: var xhr = createXMLHttp(); // 设置监听: xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ if(xhr.status == 200){ document.getElementById("divajax").innerHTML = xhr.responseText; } } } // 打开路径: xhr.open("POST","/AJAXDemo01/AJAXDemo01Servlet",true); //这一句没能将提交到post的中文数据编码改掉 xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); // 发送请求: xhr.send("name=张三&pass=密码"); } function createXMLHttp() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp = new XMLHttpRequest(); } catch (e) { try {// Internet Explorer xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } } return xmlHttp; } 这是Servlet代码 public class AJAXDemo01Servlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//未完成 request.setCharacterEncoding("UTF-8"); String pass =request.getParameter("pass"); String name = request.getParameter("name"); response.setContentType("text/html;charset=UTF-8"); response.getWriter().println( "名称是:" + name + "密码是:" + pass); System.out.println("名称是:" + name + "密码是:" + pass); } } ![图片说明](https://img-ask.csdn.net/upload/201709/17/1505634495_151318.png)
关于Red5整合自己写好的web项目
写了一个Red5的Demo可以成功运行 现在想整合进我的项目里面 也可以实现在线看视频 但是整合web.xml报错 万千搞不懂为啥 下面贴下web.xml的代码 希望大神指教 自己弄了好久了 报错:java.lang.IllegalStateException: Cannot initialize context because there is already a root application context present - check whether you have multiple ContextLoader* definitions in your web.xml! ``` <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <jsp-config> <taglib> <taglib-uri>http://www.keji09.com/jstl/11erp</taglib-uri> <taglib-location>/WEB-INF/classes/com/keji09/erp/jstl/tag/11erp.tld</taglib-location> </taglib> </jsp-config> <!-- red5 --> <context-param> <param-name>globalScope</param-name> <param-value>default</param-value> </context-param> <context-param> <param-name>parentContextKey</param-name> <param-value>default.context</param-value> </context-param> <context-param> <param-name>webAppRootKey</param-name> <param-value>/micro_film</param-value> </context-param> <!-- red5 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml, WEB-INF/classes/*-web.xml </param-value> </context-param> <!-- red5 --> <listener> <listener-class>org.red5.server.war.WarLoaderServlet</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <!-- red5 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <filter> <filter-name>SetCharacterEncoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class> org.springframework.web.filter.HiddenHttpMethodFilter </filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <servlet-name>SpringDispatcherServlet</servlet-name> </filter-mapping> <servlet> <servlet-name>SpringDispatcherServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext_controller.xml</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <!-- red5 --> <servlet> <servlet-name>gateway</servlet-name> <servlet-class>org.red5.server.net.servlet.AMFGatewayServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>rtmpt</servlet-name> <servlet-class>org.red5.server.net.rtmpt.RTMPTServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <!-- red5 --> <servlet-mapping> <servlet-name>SpringDispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> <url-pattern>*.css</url-pattern> <url-pattern>*.gif</url-pattern> <url-pattern>*.jpeg</url-pattern> <url-pattern>*.png</url-pattern> <url-pattern>*.jpg</url-pattern> <url-pattern>*.woff</url-pattern> <url-pattern>*.woff2</url-pattern> <url-pattern>*.tff</url-pattern> <url-pattern>*.ico</url-pattern> <url-pattern>*.doc</url-pattern> <url-pattern>*.docx</url-pattern> <url-pattern>*.xls</url-pattern> <url-pattern>*.xlsx</url-pattern> <url-pattern>*.txt</url-pattern> <url-pattern>*.mp4</url-pattern> <url-pattern>*.ogg</url-pattern> <url-pattern>*.DOCX</url-pattern> <url-pattern>*.XLS</url-pattern> <url-pattern>*.XLSX</url-pattern> <url-pattern>*.TXT</url-pattern> <url-pattern>*.DOC</url-pattern> <url-pattern>*.JS</url-pattern> <url-pattern>*.ICO</url-pattern> <url-pattern>*.CSS</url-pattern> <url-pattern>*.GIF</url-pattern> <url-pattern>*.JPEG</url-pattern> <url-pattern>*.PNG</url-pattern> <url-pattern>*.JPG</url-pattern> <url-pattern>*.WOFF</url-pattern> <url-pattern>*.TFF</url-pattern> <url-pattern>*.html</url-pattern> </servlet-mapping> <!-- red5 --> <servlet-mapping> <servlet-name>gateway</servlet-name> <url-pattern>/gateway</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/fcs/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/open/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/idle/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/send/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>rtmpt</servlet-name> <url-pattern>/close/*</url-pattern> </servlet-mapping> <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name> <url-pattern>/WEB-INF/*</url-pattern> </web-resource-collection> <auth-constraint /> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name> <url-pattern>/persistence/*</url-pattern> </web-resource-collection> <auth-constraint /> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>Forbidden</web-resource-name> <url-pattern>/streams/*</url-pattern> </web-resource-collection> <auth-constraint /> </security-constraint> <!-- red5 --> </web-app> ```
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
为什么要学数据结构?
一、前言 在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件: 1) 能够熟练地选择和设计各种数据结构和算法 2) 至少要能够熟练地掌握一门程序设计语言 3) 熟知所涉及的相关应用领域的知识 其中,后两个条件比较容易实现,而第一个...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n
进程通信方式总结与盘点
​ 进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 ​ 首先回顾下我们前面博文中讲到的信号量机制,为了实现进程的互斥与同步,需要在进程间交换一定的信息,因此信号量机制也可以被归为进程通信的一种方式,但是也被称为低级进程通信,主要原因为: 效率低:一次只可操作少量的...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
听说了吗?阿里双11作战室竟1根网线都没有
双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。 回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一地狼藉”;到如今媲美5G的wifi网速,到现场却看不到一根网线;从当年使用商用AP(无线路由器),让光明顶双11当天断网一分钟,到全部使用阿里自研AP……阿里巴巴企业智能事业部工程师们提供的基础保障...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯
程序员该看的几部电影
##1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?
入职阿里5年,他如何破解“技术债”?
简介: 作者 | 都铎 作为一名技术人,你常常会听到这样的话: “先快速上线” “没时间改” “再缓一缓吧” “以后再解决” “先用临时方案处理” …… 当你埋下的坑越来越多,不知道哪天哪位同学就会踩上一颗雷。特别赞同“人最大的恐惧就是未知,当技术债可说不可见的时候,才是最让人不想解决的时候。” 作为一个程序员,我们反对复制粘贴,但是我们经常会见到相似的代码,相同的二方包,甚至整个代码...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布了 2019年国民经济报告 ,报告中指出:年末中国大陆总人口(包括31个
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
2020年的1月,我辞掉了我的第一份工作
其实,这篇文章,我应该早点写的,毕竟现在已经2月份了。不过一些其它原因,或者是我的惰性、还有一些迷茫的念头,让自己迟迟没有试着写一点东西,记录下,或者说是总结下自己前3年的工作上的经历、学习的过程。 我自己知道的,在写自己的博客方面,我的文笔很一般,非技术类的文章不想去写;另外我又是一个还比较热衷于技术的人,而平常复杂一点的东西,如果想写文章写的清楚点,是需要足够...
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。 这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。 如果你看过往期的问题,就会发现每一个都不简单。 这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad
深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:【程序员管小亮】 专栏——深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献。 2)本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应。如果某部分不小心侵犯了大家的利益,还望海涵,并联系博主删除。 3)博主才疏学浅,文中如有不当之处,请各位指出,共同进步,谢谢。 4)此属于第一版本,若有错误,还需继续修正与...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
节后首个工作日,企业们集体开晨会让钉钉挂了
By 超神经场景描述:昨天 2 月 3 日,是大部分城市号召远程工作的第一天,全国有接近 2 亿人在家开始远程办公,钉钉上也有超过 1000 万家企业活跃起来。关键词:十一出行 人脸...
Java基础知识点梳理
Java基础知识点梳理 摘要: 虽然已经在实际工作中经常与java打交道,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散。恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回顾,一方面为了加深印象,方便后面查阅,一方面为了学好java打下基础。 Java简介 java语言于1995年正式推出,最开始被命名为Oak语言,由James Gosling(詹姆
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
你也能看懂的:蒙特卡罗方法
蒙特卡罗方法,也称统计模拟方法,是1940年代中期由于科学技术的发展和电子计算机的发明,而提出的一种以概率统计理论为指导的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法 蒙特卡罗方法可以粗略地分成两类:一类是所求解的问题本身具有内在的随机性,借助计算机的运算能力可以直接模拟这种随机的过程。另一种类型是所求解问题可以转化为某种随机分布的特征数,比如随机事件出现的概率,或...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问