日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenReports中文支持方案

發(fā)布時間:2023/12/9 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenReports中文支持方案 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

此文章在《OpenReports中文支持完全解決方案.doc》的基礎上做優(yōu)化,并貼出代碼。已測試通過。

?

一、主要解決的問題????????????????????

1 頁面顯示支持中文

2 與服務器或數(shù)據(jù)庫的交互支持中文

3 查詢結(jié)果支持中文

4 導出文件名及內(nèi)容支持中文

二、解決方案及方法

1 增加的類

1.1 cn.ExportDelegate

  直接來自原文件org.displaytag.filter.ExportDelegate,只是將文件名轉(zhuǎn)碼,

解決中文表格數(shù)據(jù)和導出中文文件名時,會產(chǎn)生亂碼現(xiàn)象。被cn.ResponseOverrideFilter調(diào)用。

package cn;/*** Licensed under the Artistic License; you may not use this file* except in compliance with the License.* You may obtain a copy of the License at** http://displaytag.sourceforge.net/license.html** THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.*/import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.util.Map;import javax.servlet.ServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.displaytag.filter.BufferedResponseWrapper; import org.displaytag.tags.TableTag; import org.displaytag.tags.TableTagParameters;/*** Actually writes out the content of the wrapped response. Used by the j2ee filter and the Spring interceptor* implementations.* @author Fabrizio Giustina* @version $Revision: 1081 $ ($Author: fgiust $)*/ public final class ExportDelegate {/*** logger.*/private static Log log = LogFactory.getLog(ExportDelegate.class);/*** Don?t instantiate.*/private ExportDelegate(){// unused }/*** Actually writes exported data. Extracts content from the Map stored in request with the* <code>TableTag.FILTER_CONTENT_OVERRIDE_BODY</code> key.* @param wrapper BufferedResponseWrapper implementation* @param response HttpServletResponse* @param request ServletRequest* @throws IOException exception thrown by response writer/outputStream*/protected static void writeExport(HttpServletResponse response, ServletRequest request,BufferedResponseWrapper wrapper) throws IOException{if (wrapper.isOutRequested()){// data already writtenlog.debug("Filter operating in unbuffered mode. Everything done, exiting");return;}// if you reach this point the PARAMETER_EXPORTING has been found, but the special header has never been set in// response (this is the signal from table tag that it is going to write exported data)log.debug("Filter operating in buffered mode. ");Map bean = (Map) request.getAttribute(TableTag.FILTER_CONTENT_OVERRIDE_BODY);if (log.isDebugEnabled()){log.debug(bean);}Object pageContent = bean.get(TableTagParameters.BEAN_BODY);if (pageContent == null){if (log.isDebugEnabled()){log.debug("Filter is enabled but exported content has not been found. Maybe an error occurred?");}response.setContentType(wrapper.getContentType());PrintWriter out = response.getWriter();out.write(wrapper.getContentAsString());out.flush();return;}// clear headersif (!response.isCommitted()){response.reset();}String filename = (String) bean.get(TableTagParameters.BEAN_FILENAME);String contentType = (String) bean.get(TableTagParameters.BEAN_CONTENTTYPE);if (StringUtils.isNotBlank(filename)){ // response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");String filename1 = new String(filename.getBytes("GBK"),("ISO8859-1"));response.setHeader("Content-Disposition", "attachment; filename=\"" + filename1 + "\"");}String characterEncoding = wrapper.getCharacterEncoding();String wrappedContentType = wrapper.getContentType();if (wrappedContentType != null && wrappedContentType.indexOf("charset") > -1){// charset is already specified (see #921811)characterEncoding = StringUtils.substringAfter(wrappedContentType, "charset=");}if (characterEncoding != null && contentType.indexOf("charset") == -1) //$NON-NLS-1$ {contentType += "; charset=" + characterEncoding; //$NON-NLS-1$ }response.setContentType(contentType);if (pageContent instanceof String){// text contentif (characterEncoding != null){response.setContentLength(((String) pageContent).getBytes(characterEncoding).length);}else{response.setContentLength(((String) pageContent).getBytes().length);}PrintWriter out = response.getWriter();out.write((String) pageContent);out.flush();}else{// dealing with binary contentbyte[] content = (byte[]) pageContent;response.setContentLength(content.length);OutputStream out = response.getOutputStream();out.write(content);out.flush();}} }

1.2 cn.ResponseOverrideFilter

  直接來自原文件org.displaytag.filter.ResponseOverrideFilter,原有ResponseOverrideFilter路徑指向新建Filter的路徑,必須。

package cn;//============= /*** Licensed under the Artistic License; you may not use this file* except in compliance with the License.* You may obtain a copy of the License at** http://displaytag.sourceforge.net/license.html** THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.*/import java.io.IOException; import java.util.HashMap; import java.util.Map;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.displaytag.Messages; import org.displaytag.filter.BufferedResponseWrapper; import org.displaytag.filter.BufferedResponseWrapper13Impl; import org.displaytag.tags.TableTag; import org.displaytag.tags.TableTagParameters;/*** <p>* Allow the author of an included JSP page to reset the content type to something else (like a binary stream), and then* write the new info back as the exclusive response, clearing the buffers of all previously added content.* </p>* <p>* This filter allows TableTag users to perform exports from pages that are run as includes, such as from Struts or a* jsp:include. If that is your intention, just add this Filter to your web.xml and map it to the appropriate requests,* using something like:* </p>* * <pre>* &lt;filter>* &lt;filter-name>ResponseOverrideFilter&lt;/filter-name>* &lt;filter-class>org.displaytag.filter.ResponseOverrideFilter&lt;/filter-class>* &lt;/filter>* &lt;filter-mapping>* &lt;filter-name>ResponseOverrideFilter&lt;/filter-name>* &lt;url-pattern>*.do&lt;/url-pattern>* &lt;/filter-mapping>* &lt;filter-mapping>* &lt;filter-name>ResponseOverrideFilter&lt;/filter-name>* &lt;url-pattern>*.jsp&lt;/url-pattern>* &lt;/filter-mapping>* </pre>* * <p>* By default the filter buffers all the export content before writing it out. You can set an optional parameter* <code>buffer</code> to <code>false</code> to make the filter write directly to the output stream. This could be* faster and uses less memory, but the content length will not be set.* </p>* * <pre>* &lt;filter>* &lt;filter-name>ResponseOverrideFilter&lt;/filter-name>* &lt;filter-class>org.displaytag.filter.ResponseOverrideFilter&lt;/filter-class>* &lt;init-param>* &lt;param-name>buffer&lt;/param-name>* &lt;param-value>false&lt;/param-value>* &lt;/init-param>* &lt;/filter>* </pre>* * @author rapruitt* @author Fabrizio Giustina* @version $Revision: 1081 $ ($Author: fgiust $)*/ public class ResponseOverrideFilter implements Filter {/*** Logger.*/private Log log;/*** Force response buffering. Enabled by default.*/private boolean buffer = true;/*** {@inheritDoc}*/public void init(FilterConfig filterConfig){log = LogFactory.getLog(ResponseOverrideFilter.class);String bufferParam = filterConfig.getInitParameter("buffer");if (log.isDebugEnabled()){log.debug("bufferParam=" + bufferParam);}buffer = bufferParam == null || StringUtils.equalsIgnoreCase("true", bufferParam);log.info("Filter initialized. Response buffering is " + (buffer ? "enabled" : "disabled"));}/*** {@inheritDoc}*/public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws IOException, ServletException{if (servletRequest.getParameter(TableTagParameters.PARAMETER_EXPORTING) == null){if (log.isDebugEnabled()){log.debug(Messages.getString("ResponseOverrideFilter.parameternotfound")); //$NON-NLS-1$ }// don't filter! filterChain.doFilter(servletRequest, servletResponse);return;}HttpServletRequest request = (HttpServletRequest) servletRequest;BufferedResponseWrapper wrapper = new BufferedResponseWrapper13Impl((HttpServletResponse) servletResponse);Map contentBean = new HashMap(4);if (buffer){contentBean.put(TableTagParameters.BEAN_BUFFER, Boolean.TRUE);}request.setAttribute(TableTag.FILTER_CONTENT_OVERRIDE_BODY, contentBean); // request.setAttribute("cn.ResponseOverrideFilter", contentBean); filterChain.doFilter(request, wrapper);ExportDelegate.writeExport((HttpServletResponse) servletResponse, servletRequest, wrapper);}/*** {@inheritDoc}*/public void destroy(){// nothing to destroy } }

1.3 cn.SetCharacterEncodingFilter

  是一個標準的自定義字符集轉(zhuǎn)換Filter,必須。

  

package cn;import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;public class SetCharacterEncodingFilter implements Filter {/*** The default character encoding to set for requests that pass through* this filter.*/protected String encoding = null;/*** The filter configuration object we are associated with. If this value* is null, this filter instance is not currently configured.*/protected FilterConfig filterConfig = null;/*** Should a character encoding specified by the client be ignored?*/protected boolean ignore = true;public void destroy() {this.encoding = null;this.filterConfig = null;}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {// Conditionally select and set the character encoding to be usedif (ignore || (request.getCharacterEncoding() == null)) {String encoding = selectEncoding(request);if (encoding != null)request.setCharacterEncoding(encoding);}chain.doFilter(request, response);}/*** Place this filter into service.* @param filterConfig The filter configuration object*/public void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig;this.encoding = filterConfig.getInitParameter("encoding");String value = filterConfig.getInitParameter("ignore");if (value == null)this.ignore = true;else if (value.equalsIgnoreCase("true"))this.ignore = true;else if (value.equalsIgnoreCase("yes"))this.ignore = true;elsethis.ignore = false;}protected String selectEncoding(ServletRequest request) {return (this.encoding);}}

1.4 org.displaytag.export.PdfView

  

/*** Licensed under the Artistic License; you may not use this file* except in compliance with the License.* You may obtain a copy of the License at** http://displaytag.sourceforge.net/license.html** THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.*/ package org.displaytag.export;import java.io.OutputStream; import java.util.Iterator;import javax.servlet.jsp.JspException;import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; import org.displaytag.Messages; import org.displaytag.exception.BaseNestableJspTagException; import org.displaytag.exception.SeverityEnum; import org.displaytag.model.Column; import org.displaytag.model.ColumnIterator; import org.displaytag.model.HeaderCell; import org.displaytag.model.Row; import org.displaytag.model.RowIterator; import org.displaytag.model.TableModel; import org.displaytag.util.TagConstants;import com.lowagie.text.BadElementException; import com.lowagie.text.Cell; import com.lowagie.text.Chunk; import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.Font; import com.lowagie.text.FontFactory; import com.lowagie.text.HeaderFooter; import com.lowagie.text.PageSize; import com.lowagie.text.Phrase; import com.lowagie.text.Rectangle; import com.lowagie.text.Table; import com.lowagie.text.pdf.PdfWriter;/*** PDF exporter using IText. This class is provided more as an example than as a "production ready" class: users* probably will need to write a custom export class with a specific layout.* @author Ivan Markov* @author Fabrizio Giustina* @version $Revision: 1081 $ ($Author: fgiust $)*/ public class PdfView implements BinaryExportView {private TableModel model;private boolean exportFull;private boolean header;private boolean decorated;private Table tablePDF;private Font smallFont;public void setParameters(TableModel tableModel, boolean exportFullList, boolean includeHeader,boolean decorateValues){this.model = tableModel;this.exportFull = exportFullList;this.header = includeHeader;this.decorated = decorateValues;}protected void initTable() throws BadElementException{this.tablePDF = new Table(this.model.getNumberOfColumns());this.tablePDF.getDefaultCell().setVerticalAlignment(4);this.tablePDF.setCellsFitPage(true);this.tablePDF.setWidth(100.0F);this.tablePDF.setPadding(2.0F);this.tablePDF.setSpacing(0.0F);// smallFont = FontFactory.getFont(FontFactory.HELVETICA, 7, Font.NORMAL, new Color(0, 0, 0));//Font name:宋體(中文字體) PDF Font name:STSong-Light PDF Encoding:UniGB-UCS2-H(簡體中文)smallFont = FontFactory.getFont("STSong-Light", "UniGB-UCS2-H", Font.DEFAULTSIZE);}public String getMimeType(){return "application/pdf"; }/*** The overall PDF table generator.* @throws JspException for errors during value retrieving from the table model* @throws BadElementException IText exception*/protected void generatePDFTable() throws JspException, BadElementException{if (this.header){generateHeaders();}tablePDF.endHeaders();generateRows();}/*** @see org.displaytag.export.BinaryExportView#doExport(OutputStream)*/public void doExport(OutputStream out) throws JspException{try{// Initialize the table with the appropriate number of columns initTable();// Initialize the Document and register it with PdfWriter listener and the OutputStreamDocument document = new Document(PageSize.A4.rotate(), 60, 60, 40, 40);document.addCreationDate();HeaderFooter footer = new HeaderFooter(new Phrase(TagConstants.EMPTY_STRING, smallFont), true);footer.setBorder(Rectangle.NO_BORDER);footer.setAlignment(Element.ALIGN_CENTER);PdfWriter.getInstance(document, out);// Fill the virtual PDF table with the necessary data generatePDFTable();document.open();document.setFooter(footer);document.add(this.tablePDF);document.close();}catch (Exception e){throw new PdfGenerationException(e);}}/*** Generates the header cells, which persist on every page of the PDF document.* @throws BadElementException IText exception*/protected void generateHeaders() throws BadElementException{Iterator iterator = this.model.getHeaderCellList().iterator();while (iterator.hasNext()){HeaderCell headerCell = (HeaderCell) iterator.next();String columnHeader = headerCell.getTitle();if (columnHeader == null){columnHeader = StringUtils.capitalize(headerCell.getBeanPropertyName());}Cell hdrCell = getCell(columnHeader);hdrCell.setGrayFill(0.9f);hdrCell.setHeader(true);tablePDF.addCell(hdrCell);}}/*** Generates all the row cells.* @throws JspException for errors during value retrieving from the table model* @throws BadElementException errors while generating content*/protected void generateRows() throws JspException, BadElementException{// get the correct iterator (full or partial list according to the exportFull field)RowIterator rowIterator = this.model.getRowIterator(this.exportFull);// iterator on rowswhile (rowIterator.hasNext()){Row row = rowIterator.next();// iterator on columnsColumnIterator columnIterator = row.getColumnIterator(this.model.getHeaderCellList());while (columnIterator.hasNext()){Column column = columnIterator.nextColumn();// Get the value to be displayed for the columnObject value = column.getValue(this.decorated);Cell cell = getCell(ObjectUtils.toString(value));tablePDF.addCell(cell);}}}/*** Returns a formatted cell for the given value.* @param value cell value* @return Cell* @throws BadElementException errors while generating content*/private Cell getCell(String value) throws BadElementException{Cell cell = new Cell(new Chunk(StringUtils.trimToEmpty(value), smallFont));cell.setVerticalAlignment(Element.ALIGN_TOP);cell.setLeading(8);return cell;}/*** Wraps IText-generated exceptions.* @author Fabrizio Giustina* @version $Revision: 1081 $ ($Author: fgiust $)*/static class PdfGenerationException extends BaseNestableJspTagException{/*** D1597A17A6.*/private static final long serialVersionUID = 899149338534L;/*** Instantiate a new PdfGenerationException with a fixed message and the given cause.* @param cause Previous exception*/public PdfGenerationException(Throwable cause){super(PdfView.class, Messages.getString("PdfView.errorexporting"), cause); //$NON-NLS-1$ }/*** @see org.displaytag.exception.BaseNestableJspTagException#getSeverity()*/public SeverityEnum getSeverity(){return SeverityEnum.ERROR;}} }

?

2 在web.xml中配置兩個Filter,字符編碼過濾器字符集設置為GBK

 直接來自原文件及包,只是將字體設置為支持中文的PDF字體。

<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app><display-name>OpenReports</display-name> <context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/applicationContext*.xml</param-value></context-param><context-param><param-name>contextFactory</param-name><param-value>com.tonbeller.wcf.controller.RequestContextFactoryImpl</param-value></context-param><filter><filter-name>struts</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><!-- support the chinese add filter start --><!-- <filter><filter-name>ResponseOverrideFilter</filter-name><filter-class>org.displaytag.filter.ResponseOverrideFilter</filter-class></filter>--><filter><filter-name>ResponseOverrideFilter</filter-name><filter-class>cn.ResponseOverrideFilter<!-- org.displaytag.filter --></filter-class></filter><filter><filter-name>encodingFilter</filter-name><filter-class>cn.SetCharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>GBK</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><!-- support the chinese add filter end--><filter><filter-name>JPivotController</filter-name><filter-class>com.tonbeller.wcf.controller.RequestFilter</filter-class><!--<init-param><param-name>indexJSP</param-name><param-value>/index.html</param-value><description>forward to this page if session is new</description></init-param><init-param><param-name>errorJSP</param-name><param-value>/error.jsp</param-value><description>URI of error page</description></init-param><init-param><param-name>busyJSP</param-name><param-value>/busy.jsp</param-value><description>This page is displayed if a the user clicks on a querybefore the previous query has finished</description></init-param><init-param><param-name>forceExtension</param-name><param-value>.faces</param-value><description>replace .jsp with .faces</description></init-param>--></filter><!-- support the chinese add mapping start --><filter-mapping><filter-name>ResponseOverrideFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- support the chinese add mapping start --><filter-mapping><filter-name>JPivotController</filter-name><url-pattern>/jpivot.action</url-pattern></filter-mapping><filter-mapping><filter-name>JPivotController</filter-name><url-pattern>/JPivot.jsp</url-pattern></filter-mapping><filter-mapping><filter-name>ResponseOverrideFilter</filter-name><url-pattern>*.action</url-pattern></filter-mapping><filter-mapping><filter-name>struts</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- resources initializer --><listener><listener-class>com.tonbeller.tbutils.res.ResourcesFactoryContextListener</listener-class></listener><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><servlet><servlet-name>JspSupportServlet</servlet-name><servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet><servlet-name>fileServlet</servlet-name><servlet-class>org.efs.openreports.dispatcher.FileDispatcher</servlet-class><load-on-startup>99</load-on-startup></servlet><servlet><servlet-name>MondrianXmlaServlet</servlet-name><servlet-class>org.efs.openreports.dispatcher.XMLADispatcher</servlet-class></servlet><servlet><servlet-name>XFireServlet</servlet-name><display-name>XFire Servlet</display-name><servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class></servlet> <!-- jfreechart provided servlet --><servlet><servlet-name>DisplayChart</servlet-name><servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class></servlet><!-- jfreechart provided servlet --><servlet><servlet-name>GetChart</servlet-name><display-name>GetChart</display-name><description>Default configuration created for servlet.</description><servlet-class>com.tonbeller.jpivot.chart.GetChart</servlet-class></servlet><servlet><servlet-name>Print</servlet-name><display-name>Print</display-name><description>Default configuration created for servlet.</description><servlet-class>com.tonbeller.jpivot.print.PrintServlet</servlet-class></servlet><servlet-mapping><servlet-name>DisplayChart</servlet-name><url-pattern>/DisplayChart</url-pattern></servlet-mapping><servlet-mapping><servlet-name>Print</servlet-name><url-pattern>/Print</url-pattern></servlet-mapping><servlet-mapping><servlet-name>GetChart</servlet-name><url-pattern>/GetChart</url-pattern></servlet-mapping><servlet-mapping><servlet-name>fileServlet</servlet-name><url-pattern>/report-images/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>fileServlet</servlet-name><url-pattern>/report-files/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>XFireServlet</servlet-name><url-pattern>/services/*</url-pattern></servlet-mapping><servlet-mapping><servlet-name>MondrianXmlaServlet</servlet-name><url-pattern>/xmla</url-pattern></servlet-mapping><welcome-file-list><welcome-file>/Login.jsp</welcome-file></welcome-file-list><taglib><taglib-uri>http://www.tonbeller.com/wcf</taglib-uri><taglib-location>/WEB-INF/wcf/wcf-tags.tld</taglib-location></taglib><taglib><taglib-uri>http://www.tonbeller.com/jpivot</taglib-uri><taglib-location>/WEB-INF/jpivot/jpivot-tags.tld</taglib-location></taglib></web-app>

3 增加PDF中文支持的JAR包

4 struts.properties配置文件字符編碼改為GBK

## when set to true, Struts will act much more friendly for developers. This ### includes: ### - struts.i18n.reload = true ### - struts.configuration.xml.reload = true ### - raising various debug or ignorable problems to errors ### For example: normally a request to foo.action?someUnknownField=true should ### be ignored (given that any value can come from the web and it ### should not be trusted). However, during development, it may be ### useful to know when these errors are happening and be told of ### them right away. struts.devMode=false### Load custom default resource bundles struts.custom.i18n.resources=LocalStrings### This can be used to set your default locale and encoding scheme #support the chinese start #struts.locale=en_US #struts.i18n.encoding=UTF-8 struts.locale=zh_CN struts.i18n.encoding=GBK#support the chinese start### Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data struts.multipart.parser=org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest

5 國際化配置文件

屏蔽原來的:LocalStrings.properties文件,新增:LocalStrings_zh_CN.properties文件

翻譯如下:

?

?

?

?

error.report.empty=The report is empty. Please try different parameters. error.validation.notsupported=Validation not supported on queries with parameters. error.exporttype.required=You must select at least one Export Type. error.invalid.password=Invalid Password: Both passwords must be equal. error.login.incomplete=Please Enter Both User Name and Password. error.login.invalid=Invalid User Name or Password! error.report.invalid=Invalid report. error.report.notauthorized=You are not authorized to view this Report. error.reportgroup.notauthorized=You are not authorized to view this Report Group. error.emailaddress.required=You must update your email address before scheduling reports! error.dateandtime.required=Start Date and Time required to schedule report. error.dateandtime.invalid=Start Time invalid. error.notauthorized=You are not authorized to perform this action. error.notloggedin=You are not currently logged into the system. error.invalid.user=You are not a valid OpenReports User. Please contact Administrator. error.chartquery.invalid=Invalid Chart Query error.alertquery.invalid=Invalid Alert Query error.testing.connection=Error testing connection, verify DataSource configuration and try again error.parameter.required=Please Fill Required Parameter error.chart.deletion=Report Chart must be removed from all reports before deletion. error.datasource.deletion=This DataSource is being used by Reports or Parameters and cannot be deleted. error.group.deletion=Report Group must be removed from all users before deletion.s error.parameter.deletion=Report Parameter must be removed from all reports before deletion. error.report.deletion=Report must be removed from all Report Groups before deletion. error.parameter.notfound=Parameter not found error.alert.deletion=This alert is associated with a user and can not be deleted. error.unique.constraint=This name is already in use. Please use a unique name. error.invalid.maxrows=QueryReport MaxRows must be set to a valid number. 500 is recommended. error.chart.invalid=Name, description, and query are required. error.xmla.properties.invalid=XMLA DataSource, URI, and Catalog properties must be set. error.serverside=There has been an error on the server. Please check the logs. error.settings.directories=Directories not configured correctly. Please recheck General Settings.alert.failed=Failed alert.passed=Passedmessage.schedule.successful=Report scheduled successfully...service.request.complete=COMPLETEapplication.title=\u7F51\u7EDC\u81EA\u5B9A\u4E49\u62A5\u8868banner.logoff=\u6ce8\u9500 banner.reports=\u6211\u7684\u62a5\u8868 banner.scheduledReports=\u5b9a\u65f6\u4efb\u52a1\u62a5\u8868 banner.administration=\u7cfb\u7edf\u7ba1\u7406 banner.dashboard=Dashboard banner.preferences=\u4fee\u6539\u7528\u6237\u4fe1\u606fbutton.save=\u4fdd\u5b58 button.cancel=\u5220\u9664 button.add=\u589e\u52a0 button.delete=\u5220\u9664 button.update=\u66f4\u65b0 button.refresh=\u5237\u65b0 button.submit=\u63d0\u4ea4 button.duplicate=\u590d\u5236 button.validate=\u6821\u9a8c button.addGroup=\u589e\u52a0\u62a5\u8868\u5206\u7ec4 button.addDataSource=\u589e\u52a0\u6570\u636e\u6e90 button.autoCreate=\u81ea\u52a8\u751f\u6210 button.autoAdd=\u81ea\u52a8\u589e\u52a0 button.addNew=\u65b0\u589e button.addChart=\u589e\u52a0\u56fe\u8868 button.addReportFile=\u589e\u52a0\u62a5\u8868\u6a21\u677f button.addReports=\u589e\u52a0\u62a5\u8868 button.cleanup=\u6e05\u9664 button.export=\u5bfc\u51fa button.import=\u5bfc\u5165label.username=\u7528\u6237\u540D\u79F0 label.password=\u7528\u6237\u5bc6\u7801 label.confirmPassword=\u786e\u8ba4\u5bc6\u7801 label.email=\u90ae\u7bb1\u5730\u5740 label.dashboardReport=Dashboard Report label.name=\u540d\u79f0 label.externalId=External ID label.description=\u63cf\u8ff0 label.report=Report label.startDate=\u8d77\u59cb\u65e5\u671f label.scheduleType=\u4efb\u52a1\u7c7b\u578b label.scheduleState=State label.nextRun=Next Run label.runDate=Run Date label.alert=Alert label.operator=Operator label.limit=Limit label.status=Status label.startTime=\u5f00\u59cb\u65f6\u95f4 label.elapsedTime=Duration (sec) label.message=\u4fe1\u606f label.cronExpression=Cron Expression label.numberOfHours=# of Hours label.condition=Condition label.recipients=Recipients label.options=Options label.once=\u4e00\u6b21 label.daily=\u6bcf\u5929 label.weekdays=\u6bcf\u5468\u67d0\u65e5 label.weekly=\u6bcf\u5468 label.cron=Cron label.monthly=\u6bcf\u6708 label.hourly=\u6bcf\u5c0f\u65f6 label.action=Action label.tags=Tags label.groups=Groups label.roles=Roles label.filter=Filter label.filterBy=Filter By label.required=\u5fc5\u987b label.class=\u53c2\u6570\u7c7b\u578b label.type=\u7c7b\u578b label.id=Id label.data=\u6570\u636e label.dataSource=\u6570\u636e\u6e90 label.multipleSelect=\u591a\u9009 label.useJNDI=\u4f7f\u7528\u6570\u636e\u6e90 label.url=URL label.driver=\u6570\u636e\u5e93\u9a71\u52a8\u7a0b\u5e8f label.maxIdle=\u6700\u5927\u8fde\u63a5\u6570 label.maxActive=\u6700\u5927\u6d3b\u8dc3\u8fde\u63a5\u6570 label.maxWait=\u6700\u5927\u7b49\u5f85\u65f6\u95f4 label.validationQuery=\u68c0\u9a8c\u67e5\u8be2\u8bed\u53e5 label.query=\u67e5\u8be2\u8bed\u53e5 label.chart=\u56fe\u8868 label.hidden=\u9690\u85cf label.reportFile=\u62a5\u8868\u6a21\u677f label.exportTypes=\u62a5\u8868\u7c7b\u578b label.virtualization=Use Virtualization label.step=\u6b65\u9aa4 label.sortOrder=\u6392\u5e8f\u987a\u5e8f label.reportParameter=\u62a5\u8868\u53c2\u6570 label.exportFormat=Export Format label.exportOption=Export Option label.chartType=\u56fe\u8868\u7c7b\u578b label.width=\u5bbd label.height=\u9ad8 label.xAxisLabel=X\u5750\u6807\u8f74\u540d\u79f0 label.yAxisLabel=Y\u5750\u6807\u8f74\u540d\u79f0 label.showTitle=\u663e\u793a\u6807\u9898 label.showLegend=\u663e\u793a\u56fe\u4f8b label.showValues=\u663e\u793a\u503c label.plotOrientation=\u56fe\u5f62\u65b9\u5411 label.drillDownReport=\u4e0b\u94bb\u62a5\u8868 label.horizontal=\u6c34\u5e73\u65b9\u5411 label.vertical=\u6c34\u5e73\u65b9\u5411 label.baseDirectory=Base Directory label.reportGenerationDirectory=Report Generation Directory label.tempDirectory=Temp Directory label.dateFormat=Date Format label.queryReportMaxRows=Query Report Max Rows label.mailHost=Mail Host label.useMailAuthenticator=Use Mail Authenticator label.mailAuthenticatorUser=Mail Authenticator UserName label.mailAuthenticatorPassword=Mail Authenticator Password label.xmlaURI=XMLA URI label.xmlaDataSource=XMLA DataSource label.xmlaCatalog=XMLA Catalog label.numberOfFiles=File Count label.directorySize=Directory Size label.reports=\u6211\u7684\u62a5\u8868 label.currentState=Current State label.hits=Hits label.user=User label.value=Value label.alerts=Alerts label.defaultValue=\u9ed8\u8ba4\u503clink.back.groups=\u8fd4\u56de\u62a5\u8868\u7ec4 link.back.reports=\u8fd4\u56de\u62a5\u8868 link.back.parameters=Back to Parameters link.back.charts=\u8fd4\u56de\u56fe\u8868 link.back.dataSources=\u8fd4\u56de\u6570\u636e\u6e90 link.back.users=Back to Users link.back.admin=\u8fd4\u56de\u5230\u7cfb\u7edf\u7ba1\u7406 link.back.alerts=Back to Alerts link.delete=\u5220\u9664 link.update=\u66f4\u65b0 link.groups=\u62a5\u8868\u7ec4 link.users=\u7528\u6237 link.admin.reports=\u62a5\u8868 link.admin.reportParameters=\u62a5\u8868\u53c2\u6570 link.admin.dataSources=\u6570\u636e\u6e90 link.admin.charts=\u56fe\u8868 link.admin.alerts=\u8b66\u62a5 link.admin.groups=\u62a5\u8868\u7ec4 link.admin.users=\u7528\u6237 link.admin.scheduler=Scheduler link.admin.settings=\u8bbe\u7f6e link.admin.statistics=Statistics link.admin.logs=\u67e5\u770b\u65e5\u5fd7 link.admin.addUser=\u65b0\u589e\u7528\u6237 link.admin.addReport=\u65b0\u589e\u62a5\u8868 link.admin.addReportParameter=\u65b0\u589e\u62a5\u8868\u53c2\u6570 link.admin.addReportGroup=\u65b0\u589e\u62a5\u8868\u7ec4 link.admin.addDataSource=\u65b0\u589e\u6570\u636e\u6e90 link.admin.addChart=\u65b0\u589e\u56fe\u8868 link.admin.addAlert=\u65b0\u589e\u8b66\u62a5 link.admin.uploadReport=\u4e0a\u4f20\u62a5\u8868\u6587\u4ef6 link.admin.search=\u641c\u7d22 link.admin.import=\u5bfc\u5165\u62a5\u8868 link.admin.export=\u5bfc\u51fa\u62a5\u8868 link.scheduleChart=Schedule ChartReportrole.advancedScheduler=Advanced Scheduler role.chartAdmin=Chart Admin role.dataSourceAdmin=DataSource Admin role.uploader=File Uploader role.groupAdmin=Group Admin role.logViewer=Log Viewer role.parameterAdmin=Parameter Admin role.reportAdmin=Report Admin role.rootAdmin=Root Admin role.scheduler=Scheduler role.dashboard=Dashboard User role.schedulerAdmin=Scheduler Admin role.alerts=Alerts User role.alertAdmin=Alerts Adminlogin.title=\u8bf7\u767b\u5f55 login.submit=\u767b\u5f55 reportGroup.title=Groups reportList.title=\u62a5\u8868 reportDetail.title=\u53c2\u6570: reportDetail.requiredParameters=* Indicates required parameters reportOptions.title=Export Options for: reportOptions.exportType=Export Type reportOptions.description=Email/File Description reportOptions.run=Run reportOptions.runNewWindow=\u5728\u65b0\u7a97\u53e3\u6253\u5f00 reportOptions.schedule=Schedule reportOptions.sendToFile=Send to File reportOptions.sendToEmail=Send to Email reportOptions.note=Only applies when 'Send to Email' or 'Send to File' is clicked. listScheduledReports.scheduledReports=\u5b9a\u65f6\u4efb\u52a1\u62a5\u8868 listScheduledReports.generatedReports=Generated Reports userAdmin.preferences=\u4fee\u6539\u7528\u6237\u4fe1\u606f userAdmin.alerts=Alerts deleteReport.warning=This will remove the report from all groups and delete all entries for the report in the logs. deleteReport.title=Delete Report Confirmation deleteReportParameter.title=Delete Report Parameter Confirmation deleteDataSource.title=Delete DataSource Confirmation deleteAlert.title=Delete Alert Confirmation deleteAlert.warning=This will remove the alert and delete all entries for the alert in the logs. deleteChart.title=Delete Chart Confirmation deleteGroup.title=Delete Group Confirmation deleteUser.title=Delete User Confirmation deleteUser.warning=This will delete all entries for this user in the logs. deleteScheduledReport.title=Delete Scheduled Report Confirmation deleteGeneratedReport.title=Delete Generated Report Confirmation uploadReportFiles.uploadFile=\u4e0a\u4f20\u62a5\u8868\u6587\u4ef6 uploadReportFiles.currentFiles=\u5f53\u524d\u62a5\u8868\u6587\u4ef6 reportViewer.page=Page reportViewer.zoom=Zoom viewReportLogs.title=Log Filters viewReportLogs.warning=Log query results limited to 500 rows reportSchedule.title=\u5b9a\u65f6\u4efb\u52a1\u62a5\u8868\u9009\u9879: reportSchedule.sendToFile=Send to File reportSchedule.message.hours=# of Hours only applies to Hourly scheduled Reports reportSchedule.message.cron=Cron Expression only applies to Cron scheduled Reports reportAdmin.tab.reportAdmin=\u62a5\u8868\u7ba1\u7406 reportAdmin.tab.userAdmin=\u7528\u6237\u7ba1\u7406 reportAdmin.tab.generalAdmin=\u65e5\u5e38\u7ba1\u7406 reportAdmin.message.reports=\u589e\u52a0\u6216\u4fee\u6539\u62a5\u8868\uff0c\u4e0a\u4f20\u62a5\u8868\u6a21\u677f\uff0c\u5206\u914d\u62a5\u8868\u5230\u62a5\u8868\u7ec4. reportAdmin.message.search=\u901a\u8fc7\u5907\u6ce8\u6216\u8bf4\u660e\u67e5\u8be2\u62a5\u8868\uff0c\u62a5\u8868\u7ec4\uff0c\u7528\u6237. reportAdmin.message.logs=\u67e5\u770b\u62a5\u8868\u64cd\u4f5c\u65e5\u5fd7\uff0c\u901a\u8fc7\u65e5\u671f\u3001\u62a5\u8868\u3001\u7528\u6237\u6216\u72b6\u6001. reportAdmin.message.reportParameters=\u589e\u52a0\u6216\u4fee\u6539\u62a5\u8868\u53c2\u6570. reportAdmin.message.dataSources=\u589e\u52a0\u6216\u4fee\u6539\u6570\u636e\u6e90. reportAdmin.message.alerts=Add or Modify Alerts. reportAdmin.message.charts=\u589e\u52a0\u6216\u4fee\u6539\u56fe\u6807. reportAdmin.message.groups=\u589e\u52a0\u6216\u4fee\u6539\u62a5\u8868\u7ec4\uff0c\u5206\u914d\u7528\u6237\u5230\u62a5\u8868\u7ec4. reportAdmin.message.users=\u589e\u52a0\u6216\u4fee\u6539\u7528\u6237. reportAdmin.message.scheduler=Global Scheduler Administration reportAdmin.message.settings=\u65e5\u5e38\u8bbe\u7f6e\u5305\u62ec\u90ae\u4ef6\u4e3b\u673a\u548c\u62a5\u8868\u76ee\u5f55. reportAdmin.message.statistics=View Top Reports by user, date or status. reportAdmin.message.import=Import Report definitions from XML. reportAdmin.message.export=Export Report definitions to XML. queryReport.scheduleReport=Schedule Report: listSearchResults.title=Search by tag: editUser.addUser=\u65b0\u589e\u7528\u6237: editUser.selectedUser=\u6240\u9009\u7684\u7528\u6237: editReportParameter.addReportParameter=Add Report Parameter: editReportParameter.selectedReportParameter=\u9009\u62e9\u7684\u62a5\u8868\u53c2\u6570: editUser.selectedUser=\u6240\u9009\u7684\u7528\u6237: editReportParameter.parameterValues=Parameter Values editReportGroups.title=Report Groups: editReport.tab.reportDefinition=\u62a5\u8868\u5b9a\u4e49 editReport.tab.reportParameters=\u62a5\u8868\u53c2\u6570 editReport.tab.jasperReportOptions=\u62a5\u8868\u5bfc\u51fa\u9009\u9879 editReport.parameters.autoAdd= <b>Auto Add</b> inspects the report design and adds all parameters that match the name of existing OpenReports parameters. editReport.parameters.autoCreate=<b>Auto Create</b> is the same as <b>Auto Add</b> except that it also creates new Text Parameters for all parameters where a match is not found. editReport.parameters.addNew=<b>\u65b0\u589e</b> \u5f39\u51fa\u65b0\u589e\u53c2\u6570\u7a97\u53e3\uff0c\u65b0\u5efa\u4e00\u4e2a\u62a5\u8868\u53c2\u6570\u3002. editReport.jasperOption.removeEmptySpaceBetweenRows=Remove Empty Space Between Rows editReport.jasperOption.whitePageBackground=White Page Background editReport.jasperOption.onePagePerSheet=One Page Per Sheet editReport.jasperOption.wrapBreakWord=Wrap Break Word editReport.jasperOption.usingImagesToAlign=Using Images To Align editReport.jasperOption.autoDetectCellType=Auto Detect Cell Type editProperties.tab.generalSettings=General Settings editProperties.tab.tempFileCleanup=Temp File Cleanup editGroupUsers.title=Group User Assignment: editGroup.addReportsToGroup.title=Add Reports To Group editGroup.addGroup=Add Group: editGroup.selectedGroup=\u9009\u62e9\u7684\u7528\u6237: editDataSource.addDataSource=Add DataSource: editDataSource.selectedDataSource=\u9009\u62e9\u7684\u6570\u636e\u6e90: editChart.addChart=Add Chart: editChart.selectedChart=\u9009\u62e9\u7684\u56fe\u8868: editAlert.addAlert=\u65b0\u589e\u8b66\u62a5: editAlert.selectedAlert=\u9009\u62e9\u7684\u8b66\u62a5: addDataSourceDialog.title=\u65b0\u589e\u6570\u636e\u6e90 addChartDialog.title=\u65b0\u589e\u56fe\u8868 addReportFileDialog.title=\u4e0a\u4f20\u62a5\u8868\u6a21\u677f addReportParameterDialog.title=\u65b0\u589e\u62a5\u8868\u53c2\u6570 changeScheduleState.title=Change Schedule State Confirmation analyzeReportLogs.title=Report Statistics analyzeReportLogs.query.topReports=Top Reports analyzeReportLogs.query.topReportsByUser=Top Reports By User analyzeReportLogs.query.topReports30Days=Top Reports - Last 30 Days analyzeReportLogs.query.topReports60Days=Top Reports - Last 60 Days analyzeReportLogs.query.topReports90Days=Top Reports - Last 90 Days analyzeReportLogs.query.topFailures=Top Failed Reports analyzeReportLogs.query.topEmpty=Top Empty Reports analyzeReportLogs.query.topAlerts=Top Alerts analyzeReportLogs.query.topAlertsByUser=Top Alerts - By User analyzeReportLogs.query.topTriggeredAlerts=Top Alerts - Triggered analyzeReportLogs.query.topNotTriggeredAlerts=Top Alerts - Not Triggered dashboard.message=Use the <a href="userAdmin.action">Preferences</a> link to add Alerts and set your Dashboard report. dataExport.title=Export Report Definitions dataImport.title=Import Report Definitions tooltip.parameter.class=The Java class of the parameter. Used for validation and passed to reports. tooltip.parameter.data=Enter SQL for Query parameters or pipe '|' seperated list of values for List parameters. tooltip.parameter.dataSource=Used only with Query parameters. tooltip.parameter.multiSelect=Determines if the parameter allows multiple selections. Valid only for Query and List parameters.tooltip.datasource.driver=JDBC Driver class. The JDBC driver containing this class must be in the OpenReports classpath. tooltip.datasource.jndi=Lookup JNDI DataSource. JNDI DataSources require only Name and URL. tooltip.datasource.maxActive=The maximum number of active connections that can be allocated from this pool at the same time, or negative for no limit. tooltip.datasource.maxIdle=The maximum number of active connections that can remain idle in the pool, without extra ones being released, or zero for no limit. tooltip.datasource.maxWait=The maximum number of milliseconds that the pool will wait (when there are no available connections) for a connection to be returned before throwing an exception, or -1 to wait indefinitely. tooltip.datasource.query=The SQL query that will be used to validate connections from this pool before returning them to the caller. If specified, this query MUST be an SQL SELECT statement that returns at least one row. tooltip.datasource.url=JNDI DataSource name or JDBC Database URLtooltip.report.chart=Select chart for use in ChartReports. tooltip.report.export=Export Types. Not all export types supported by all report engines. tooltip.report.file=Select the report template file. Not required for QueryReports or ChartReports. tooltip.report.hidden=If checked, this report will not be displayed to end users. Useful for DrillDown reports. tooltip.report.query=Enter SQL query for use with QueryReports or JXLS template. tooltip.report.virtualization=Enable Virtualization for JasperReports. tooltip.chart.plotOrientation=Plot Orientation. Only applicable for Bar and XY Charts tooltip.chart.query=Chart SQL Query. See OpenReports Adminstration Guide for valid Chart query formats. tooltip.chart.values=If this option is checked, the Chart Values will be displayed in a sortable table below the Chart. tooltip.chart.xlabel=X-Axis label. Not applicable for Pie Charts tooltip.chart.ylabel=Y-Axis label. Not applicable for Pie Chartstooltip.properties.baseDirectory=Full path to directory containing report files tooltip.properties.reportGenerationDirectory=Full path to directory used to store reports generated to files tooltip.properties.tempDirectory=Full path to directory for temp files tooltip.properties.maxRows=Maximum number of rows returned per QueryReport tooltip.properties.mailhost=Mail Host required for scheduled reports tooltip.properties.mailAuthenticator=Check this box if your Mail Host requires a UserName and Password tooltip.alert.query=Alert SQL Query. Must return an Integer. For example: SELECT count(*) FROM address

?

?

?

6修改displaytag.properties配置文件

?

翻譯如下:

factory.decorator=org.efs.openreports.util.displaytag.SpringDecoratorFactory locale.resolver = org.efs.openreports.util.displaytag.DisplayTagI18nStruts2Adapter locale.provider = org.efs.openreports.util.displaytag.DisplayTagI18nStruts2Adapter basic.empty.showtable=truepaging.banner.placement=bottom paging.banner.item_name=\u8bb0\u5f55 paging.banner.items_name=\u8bb0\u5f55 paging.banner.no_items_found=<span class ="pagebanner">\u6ca1\u6709{0}\u627e\u5230.</span> paging.banner.one_item_found=<span class ="pagebanner">\u4e00\u6761{0}\u627e\u5230.</span> paging.banner.all_items_found=<span class ="pagebanner">{0}{1}\u627e\u5230,\u663e\u793a\u5168\u90e8{2}.</span> paging.banner.some_items_found=<span class ="pagebanner">\u5171\u627e\u5230{0}{1},\u663e\u793a{2}\u5230{3}.</span> paging.banner.full=<span class ="pagelinks">[<a href="{1}">\u7b2c\u4e00\u9875</a>/<a href="{2}">\u4e0a\u4e00\u9875</a>] {0} [<a href="{3}">\u4e0b\u4e00\u9875</a>/<a href="{4}">\u6700\u540e\u4e00\u9875</a>]</span> paging.banner.first=<span class ="pagelinks">[\u7b2c\u4e00\u9875/\u4e0a\u4e00\u9875] {0} [<a href="{3}">\u4e0b\u4e00\u9875</a>/<a href="{4}">\u6700\u540e\u4e00\u9875</a>]</span> paging.banner.last=<span class ="pagelinks">[<a href="{1}">\u7b2c\u4e00\u9875</a>/<a href="{2}">\u4e0a\u4e00\u9875</a>] {0} [\u4e0b\u4e00\u9875/\u6700\u540e\u4e00\u9875]</span> paging.banner.onepage=<span class ="pagelinks">{0}</span> paging.banner.page.selected=<strong>{0}</strong> paging.banner.page.link=<a.href="{1}" title+"\u8f6c\u5230\u9875 {0}">{0}</a> paging.banner=<div class="explortlinks">\u5bfc\u51fa\u7c7b\u578b:{0}</div>

7、JSP頁面文件字符集全部改為GBK

?

轉(zhuǎn)載于:https://www.cnblogs.com/shindo/p/4958767.html

總結(jié)

以上是生活随笔為你收集整理的OpenReports中文支持方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

久久久久国产一区二区三区四区 | 久久天天综合网 | 九九免费在线观看视频 | 丰满少妇在线观看网站 | 视频成人永久免费视频 | 欧美日韩精品在线观看 | 日韩久久精品一区 | 热99在线视频 | 亚洲妇女av | 四虎在线观看精品视频 | 久久黄色网页 | 中文av一区二区 | 欧美污在线观看 | 一级欧美日韩 | 日韩视频一区二区三区在线播放免费观看 | 婷婷丁香色| 日韩综合精品 | 久久精品精品电影网 | 日本在线观看一区二区 | av资源在线看 | a√天堂中文在线 | 天天操夜夜爱 | 就要干b| 欧美日韩在线观看视频 | av久久久 | 色鬼综合网 | 午夜在线观看 | 久久国产剧场电影 | 免费在线看v | 成人毛片100免费观看 | 99精品免费久久久久久久久 | 黄色小说免费观看 | 欧美日韩综合在线观看 | 91xav| av中文在线观看 | 国产伦理久久精品久久久久_ | 成人免费网站在线观看 | 国产美女免费观看 | 久久视频在线观看免费 | 久久久久草 | 久久久91精品国产一区二区三区 | 午夜av剧场 | 国产一级二级在线观看 | 亚洲第一中文网 | 婷婷国产v亚洲v欧美久久 | 婷婷九月激情 | 91高清视频在线 | 99国内精品久久久久久久 | 国产午夜精品在线 | 国产伦精品一区二区三区在线 | 国内丰满少妇猛烈精品播放 | 国产精品精品国产婷婷这里av | 成在人线av| 毛片99| 一区二区三区在线视频观看58 | 亚洲一一在线 | 亚洲第一久久久 | 成人在线免费看 | 亚洲精品免费观看 | 视频一区二区国产 | 久草久草在线观看 | 国产精品日韩久久久久 | 亚洲一二区视频 | 色欧美88888久久久久久影院 | 97在线观看免费观看高清 | 欧美一级乱黄 | 狠狠色狠狠色合久久伊人 | 成全免费观看视频 | 亚洲综合最新在线 | 人人dvd| 天天天色综合 | 国内一区二区视频 | 精品在线免费观看 | 99久热在线精品视频观看 | 在线免费色 | 成人精品一区二区三区电影免费 | 欧女人精69xxxxxx | 久久99网| 最近更新好看的中文字幕 | 日韩精品一区二区久久 | 久久综合色婷婷 | 国产精品色视频 | av夜夜操 | 欧美日韩中文在线 | 久久久综合香蕉尹人综合网 | 午夜美女视频 | 亚洲国产成人av网 | 亚洲视频分类 | 国产精品国产三级国产aⅴ无密码 | av超碰在线 | 一级大片在线观看 | 国产在线观看av | 天天天天天天天天操 | 国产涩涩在线观看 | 岛国av在线不卡 | 成人网444ppp | 久久九九影视 | 欧美日韩精品区 | 99国产情侣在线播放 | 人人爽久久涩噜噜噜网站 | 人人澡人人爱 | 97在线精品视频 | 日韩中文字幕电影 | 激情影音先锋 | 久草在线官网 | 国产97视频 | 欧美一区二区三区在线视频观看 | 国产中文字幕久久 | 日日夜夜狠狠操 | 黄a网站 | 婷婷视频在线观看 | 日日操夜夜操狠狠操 | 99视频在线精品 | 国产综合在线观看视频 | 久久免费视频这里只有精品 | 麻豆视频免费观看 | 在线免费观看欧美日韩 | 久久8| 九精品| 高清av免费看 | 日韩视频一区二区三区在线播放免费观看 | 在线观看精品一区 | 天天操比| 一区二区三区在线免费播放 | 亚洲第一成网站 | 国产精品中文久久久久久久 | 精品美女国产在线 | 亚洲视频久久久久 | 精品国产免费看 | 一级一片免费观看 | 91精选在线| 亚洲国产成人精品久久 | 中文字幕日本在线 | 日韩在线视频网址 | 又黄又刺激的视频 | 国产明星视频三级a三级点| 天天色天天操天天爽 | 国内免费的中文字幕 | a天堂一码二码专区 | 日韩激情视频在线观看 | 一区二区三区精品在线视频 | 国产精品影音先锋 | 国产精品精品 | 00av视频| 永久免费av在线播放 | 日韩在线精品视频 | 天天爽天天搞 | 麻花天美星空视频 | 狠狠干婷婷色 | 91尤物国产尤物福利在线播放 | 国内精品久久久久久久影视简单 | 日韩精品在线观看视频 | 综合天堂av久久久久久久 | 91日韩精品视频 | 99精品国产免费久久 | 国产麻豆剧传媒免费观看 | 日韩特级片 | 九色在线 | 午夜视频免费在线观看 | 麻豆视频免费入口 | 91综合视频在线观看 | 97在线观看免费 | 亚洲少妇xxxx | 国产一级视频在线免费观看 | 国产精品免费视频一区二区 | 天天干天天想 | 精品自拍sae8—视频 | 亚洲精品无| 日韩一二区在线观看 | 中文字幕在线观看第三页 | 欧美精品久久久久久久久久丰满 | 麻豆高清免费国产一区 | 黄色a大片 | 免费在线观看日韩视频 | 国产成人精品av | 9999国产精品 | 久操视频在线播放 | 国产视频在线免费 | 久久久久久久久久久网 | 久草在线精品观看 | 精品夜夜嗨av一区二区三区 | 三级小视频在线观看 | 日韩精品久久久免费观看夜色 | 国产一区二区三区四区在线 | 欧美夫妻性生活电影 | 91精品国产麻豆 | 亚洲一区精品人人爽人人躁 | 国产亚洲视频在线免费观看 | 摸阴视频| 99情趣网视频 | 欧美日产在线观看 | 日韩中文字幕免费视频 | 国产午夜精品久久久久久久久久 | 亚洲国产精品va在线看黑人动漫 | 91精品国产自产老师啪 | 日韩经典一区二区三区 | 国产亚洲精品日韩在线tv黄 | 国产97碰免费视频 | 99精品国产福利在线观看免费 | 欧美色伊人 | 99国产精品视频免费观看一公开 | 欧美日韩一级久久久久久免费看 | 特级西西444www大胆高清无视频 | 久久久.com| 亚洲中字幕 | 欧美国产在线看 | 免费亚洲黄色 | 欧美成人性网 | 亚洲成人高清在线 | 在线小视频你懂得 | 久久国产热视频 | 狠狠躁夜夜a产精品视频 | www.人人草| 久久久综合九色合综国产精品 | 天天做天天干 | 精品国产诱惑 | 一区在线观看 | 亚洲专区欧美专区 | 超碰97久久 | 区一区二区三在线观看 | 激情欧美一区二区三区免费看 | 在线免费观看黄色av | 一区二区三区在线看 | 操操日日 | 国际精品久久久久 | a在线一区 | 国产一级片网站 | 久久影院一区 | 狠狠操在线 | 日韩大片在线免费观看 | 亚洲无吗av| 国产午夜精品在线 | 九九热在线精品视频 | 久久久久久久久久久久99 | 中文字幕精品一区久久久久 | 亚洲香蕉在线观看 | 欧美性猛片| 波多野结衣久久资源 | 99国产成+人+综合+亚洲 欧美 | 国产成人三级一区二区在线观看一 | 久久在线视频精品 | 亚洲精品五月 | 日韩av看片 | 免费看在线看www777 | 国产美女在线免费观看 | 国产一区电影在线观看 | 欧美色综合天天久久综合精品 | 美女视频黄的免费的 | 国产成人精品电影久久久 | 99资源网 | 亚洲成av人片在线观看无 | 久久久综合香蕉尹人综合网 | 免费能看的黄色片 | 日本久久久久久 | 日韩免费在线视频 | 日本性xxx| 日日躁夜夜躁aaaaxxxx | 欧美久久久久 | 亚洲精品视频在线观看视频 | 成片免费观看视频大全 | 国产精品久久久久aaaa九色 | 国产一区影院 | 成年人免费在线播放 | 天天射天天操天天干 | 在线观看免费国产小视频 | 激情av一区二区 | 日韩网| 亚洲成人影音 | 国产视频精品视频 | 久久免费国产精品 | 丁香激情五月 | 日韩精品免费一区二区 | 色网免费观看 | 精品视频免费 | 在线观看亚洲专区 | av大全在线观看 | 在线观看91av | 在线观看精品国产 | 国产日韩欧美在线影视 | 日韩在线视频一区二区三区 | 日本最新高清不卡中文字幕 | 成人在线播放视频 | 久草com | 国产视频在线观看一区 | 国产中文字幕网 | 日韩三级免费 | 91最新国产 | 91精品人成在线观看 | 日本夜夜草视频网站 | 一级黄色大片在线观看 | 丝袜美女在线观看 | 大荫蒂欧美视频另类xxxx | 国产精品麻豆果冻传媒在线播放 | 狠狠躁夜夜a产精品视频 | 国产小视频在线观看 | 成人91av | 久久99热久久99精品 | 婷婷丁香激情五月 | 狠狠狠操 | 日韩色在线观看 | 香蕉网在线 | 日韩精品你懂的 | 国产无区一区二区三麻豆 | 亚洲激情电影在线 | 91精品在线观看入口 | 特级大胆西西4444www | 99久在线精品99re8热视频 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 精油按摩av | 爱情影院aqdy鲁丝片二区 | 亚洲国产精品999 | 国产精品久久久 | 在线观看成人福利 | 最近中文字幕在线中文高清版 | 欧美国产日韩一区二区三区 | 国产一级大片在线观看 | 五月婷婷久 | 三级黄色在线观看 | 精品久久久久久亚洲综合网站 | 一级做a爱片性色毛片www | 天天干.com| 久久久精品国产一区二区 | 国产精品成人免费一区久久羞羞 | 手机看片中文字幕 | 成年人电影免费看 | 久久精品视频在线观看免费 | 中文字幕一区二区三区视频 | 欧美久久久影院 | 看国产黄色片 | 日韩精品免费在线视频 | 欧美a√大片 | 青草草在线视频 | 天天射天天射天天射 | 国产99久久久欧美黑人 | 亚洲永久精品在线观看 | 精品免费一区二区三区 | 日本精品一区二区三区在线播放视频 | 91成人精品一区在线播放 | 国产一区国产二区在线观看 | 色操插| 亚洲欧美日韩在线看 | 亚洲高清在线 | 国产在线观看一 | 国产一区免费观看 | 国产精品av一区二区 | 亚洲午夜大片 | 国产原创91| 亚洲精品999| 摸bbb搡bbb搡bbbb | 免费网站在线观看人 | 日韩大陆欧美高清视频区 | 豆豆色资源网xfplay | 国偷自产中文字幕亚洲手机在线 | 国产精品免费看久久久8精臀av | 免费的国产精品 | 天堂在线v | 中文字幕在线网 | av官网在线| 一区二区三区视频在线 | 欧美性色综合网 | 日韩欧美一区二区三区免费观看 | 日产中文字幕 | 色姑娘综合网 | 日韩在线观看一区二区三区 | 高清av网站| 亚洲精品视频在线免费 | 日日夜夜免费精品视频 | 日日操狠狠干 | 又黄又爽的免费高潮视频 | 国产成免费视频 | 亚洲国产精品小视频 | 欧美精品久久久久久久久免 | 亚洲精品一区二区三区新线路 | 欧美性生活大片 | 中文字幕一二三区 | 成人av片在线观看 | 一级黄色片在线 | 日本久久免费视频 | 日日干影院| 99中文字幕 | 天天干天天干 | 丁香五香天综合情 | 黄色一级免费网站 | 青青草国产精品视频 | 亚洲美女视频网 | 免费av网址大全 | 久久好看 | 韩国中文三级 | 粉嫩aⅴ一区二区三区 | 91mv.cool在线观看 | 小草av在线播放 | 成人91在线观看 | 国产日韩欧美视频在线观看 | 国外成人在线视频网站 | 亚洲一区二区黄色 | 天天色影院 | 激情片av| 久久精品国产成人精品 | 五月视频| 国产亚洲午夜高清国产拍精品 | 国产精品免费看 | 国产麻豆电影 | 色中射| 免费看片网站91 | 日韩中文字幕a | 久久精品—区二区三区 | av观看在线观看 | 日韩r级在线 | 99久久这里有精品 | 欧美日韩国产一区 | 日精品在线观看 | 免费在线色电影 | 综合天堂av久久久久久久 | 久久久久97国产 | 精品99久久久久久 | 伊人网综合在线观看 | 成人app在线免费观看 | 最近日本字幕mv免费观看在线 | 96精品高清视频在线观看软件特色 | 亚洲一区网 | 欧美色久 | 亚洲精品动漫成人3d无尽在线 | 九九久久婷婷 | 99久久99视频只有精品 | 国产在线97 | 99视频一区 | 国产一级精品在线观看 | 五月婷婷色综合 | 日韩中文字幕免费电影 | 精品久久综合 | 日韩啪啪小视频 | 中文字幕亚洲不卡 | 91麻豆免费视频 | 黄色一级大片在线免费看国产一 | 色吊丝在线永久观看最新版本 | 色网免费观看 | 亚洲精品成人免费 | 欧美成年人在线观看 | 色噜噜狠狠狠狠色综合 | 成人在线免费视频 | 亚洲日韩欧美视频 | 波多野结衣电影一区二区三区 | 国产不卡一 | 黄色日本片 | 美女网站色 | 中文字幕丝袜制服 | 婷婷综合在线 | 安徽妇搡bbbb搡bbbb | 色综合天天天天做夜夜夜夜做 | 久久美女精品 | 国产小视频你懂的 | 精品影院 | 久久美女精品 | www国产在线| 欧美男女爱爱视频 | 美女av在线免费 | 欧美精品在线观看一区 | 国产成人av在线影院 | 香蕉手机在线 | 国产麻豆精品久久 | 日韩久久午夜一级啪啪 | 91精品久久久久久综合乱菊 | 亚洲精品视频在线免费播放 | 在线一二三四区 | 久草免费在线观看视频 | 亚洲精品中文字幕在线 | 久久精品www人人爽人人 | 国产成人av福利 | 日韩精品在线视频免费观看 | 在线观看中文字幕第一页 | 麻豆成人在线观看 | 97在线播放视频 | 亚州日韩中文字幕 | 在线亚洲日本 | 色视频在线免费观看 | 香蕉视频久久久 | 女人高潮一级片 | 午夜精品久久久久99热app | 国产精品一区二区白浆 | 日日夜夜艹 | 日韩网站免费观看 | av日韩中文 | 深夜激情影院 | 日韩免费电影一区二区 | 国产精品欧美久久久久天天影视 | 欧美大片mv免费 | 国产在线观 | 色在线观看网站 | 在线观看视频在线观看 | 色综合天天色综合 | 五月激情亚洲 | 亚洲精品小视频在线观看 | 天堂网中文在线 | 又黄又色又爽 | 国内精品二区 | 人人爽人人爽人人片av免 | 三级视频日韩 | 国产精品综合久久久久久 | 免费久久精品视频 | 国产一级性生活视频 | 中文字幕在线观看第一区 | 国产色婷婷在线 | 欧美在线久久 | 久久99视频免费观看 | 久久天天躁夜夜躁狠狠85麻豆 | 午夜精品久久久久久久99水蜜桃 | 最近免费中文字幕 | 久久久精品国产一区二区电影四季 | 97在线免费 | 国产中文字幕网 | 免费午夜av | 国产亚洲精品久久久久久电影 | 国产视频一区二区在线 | 成人宗合网 | 中文字幕 影院 | 91在线视频免费播放 | 成人精品视频久久久久 | 99热国内精品 | 亚洲视频在线看 | 在线国产91 | 超碰在线官网 | 亚洲国产手机在线 | av一级在线 | 亚洲国产精品一区二区久久hs | 国产区精品在线观看 | 99综合久久 | 久久色亚洲 | 91丨九色丨高潮丰满 | 久久精品免费 | 久久久久免费网 | 麻豆一区二区 | 国产123区在线观看 国产精品麻豆91 | 深爱婷婷激情 | 日本少妇视频 | 久久精品一区二区三 | 成人18视频 | 黄色免费观看网址 | 在线观看国产 | 有没有在线观看av | 国产xxxx | 人人操日日干 | 久久精品成人热国产成 | 色欲综合视频天天天 | 日本激情视频中文字幕 | 黄色片毛片 | 91一区二区三区在线观看 | 99中文字幕在线观看 | 99色精品视频 | 日韩精品久久久久久中文字幕8 | 国产视频2021| aaa亚洲精品一二三区 | 免费看久久久 | 永久免费的av电影 | 成人免费视频视频在线观看 免费 | 操操操日日日干干干 | 日韩精品在线免费播放 | 黄色免费网战 | 8090yy亚洲精品久久 | 久久久福利 | 久久99婷婷 | 国产黄色片一级三级 | 日本成人免费在线观看 | 欧美精品日韩 | 一区二区三区四区不卡 | 欧美另类调教 | 国产视频91在线 | 中文字幕在线日亚洲9 | 久久婷婷一区二区三区 | 综合网成人 | 日本黄网站 | 在线免费黄色毛片 | 日韩理论电影网 | 精品在线99 | 一区二区三区免费看 | 久久精品精品电影网 | 久久成年人 | 天天爽天天爽夜夜爽 | 国产精品 国内视频 | 麻豆国产网站入口 | 中文字幕乱码亚洲精品一区 | 国产精品永久免费观看 | 亚a在线 | 人人爽人人爽人人爽 | 国产精品乱码久久久久 | 国色天香永久免费 | 黄色a视频免费 | 91麻豆精品一区二区三区 | 成人超碰97 | 精品国产亚洲日本 | 91精品亚洲影视在线观看 | 五月亚洲综合 | 国产我不卡 | 国产999免费视频 | 日韩电影中文字幕在线 | 天天天天天干 | 香蕉网站在线观看 | 中文字幕一区二区三 | 日韩电影一区二区在线观看 | 美女福利视频在线 | 国产精品一区二区三区在线播放 | 在线小视频 | 亚洲va欧美 | 久久理论片 | 免费成视频 | av免费观看高清 | av在线影视 | 成年人黄色av | 91成人免费 | 国产999精品久久久久久绿帽 | 久久这里只精品 | 午夜av片 | 人人爽人人爽人人片av免 | 国产香蕉久久精品综合网 | 久久精品区 | 亚洲日日日 | 91看片网址 | 亚洲区视频在线观看 | 国产精品久久视频 | 91久色蝌蚪| 91久久久国产精品 | 97视频在线观看成人 | 九九在线精品视频 | 精品自拍av | 综合国产在线 | 天天插天天干 | 在线观看视频h | 国产精品 久久 | 国产精品一区在线 | 精品亚洲欧美无人区乱码 | 天天操天天舔天天爽 | 成人h在线 | 成人app在线免费观看 | 在线观看精品 | 亚洲精品午夜aaa久久久 | 日韩av偷拍 | 国产精品区二区三区日本 | 亚洲激情 | 免费高清在线视频一区· | 免费看的国产视频网站 | 手机在线看片日韩 | 日本中文字幕在线看 | av电影免费 | 97热在线观看 | 日韩免费电影一区二区 | 中文字幕在线观看完整版电影 | 久要激情网 | 久久99网站 | 麻豆系列在线观看 | 99免费在线观看视频 | 国产亚洲在线视频 | 日本最新一区二区三区 | 揉bbb玩bbb少妇bbb | 免费看的黄色录像 | aⅴ视频在线 | 日韩在线大片 | 日本超碰在线 | 精品美女国产在线 | 亚洲免费av片 | 久久久久在线 | 在线免费观看的av | 成人中心免费视频 | 亚洲男男gaygayxxxgv | 色视频 在线 | 99福利片 | 久久久久成人精品免费播放动漫 | 欧美色图88 | 亚洲九九九在线观看 | 欧美大片aaa| 人人看黄色 | 久久爱影视i | 在线精品观看国产 | 国产手机视频在线播放 | 欧美一区二区三区在线 | 亚洲五月综合 | 99热这里| 91污在线观看 | 欧美精品国产综合久久 | 美女网站视频免费黄 | 在线观看一区视频 | av在线免费不卡 | 国产精品原创av片国产免费 | 91在线免费视频 | 国产99久久九九精品免费 | 国产精久久久久久久 | 国产精品久久久久永久免费观看 | 国产精品美女在线观看 | 国产精品系列在线观看 | 永久免费精品视频 | 久久99久久精品国产 | 久久视频免费看 | 国产视频精品视频 | 久久精品在线免费观看 | 色五月色开心色婷婷色丁香 | 69精品在线 | 韩国精品在线观看 | 在线观看午夜av | 91最新视频在线观看 | 欧美在线视频一区二区 | 亚洲免费高清视频 | www.五月天 | 99re6热在线精品视频 | 亚洲少妇影院 | 色中色综合 | 国产免费午夜 | www.国产精品 | 亚洲精品美女在线观看播放 | 日韩欧美在线高清 | 精品欧美一区二区在线观看 | 欧美最猛性xxxx | 久久久蜜桃 | 在线观看免费成人 | 国产精品一区二区果冻传媒 | 国产精品一区二区av日韩在线 | 国产又粗又猛又色又黄网站 | 久久精品视频免费 | 国产一级高清视频 | 色吊丝av中文字幕 | 四虎在线免费视频 | 欧美在线一级片 | 人人爽人人插 | 中文字幕在线视频一区 | 69av视频在线观看 | 欧美日韩国产精品一区 | 美女久久久久久久 | 夜夜嗨av色一区二区不卡 | 美女网站视频久久 | 婷婷日日 | 亚洲视频在线免费观看 | 国产一级淫片免费看 | 伊人国产视频 | 五月天免费网站 | 色婷婷成人网 | 91福利在线导航 | 在线观看黄网站 | 黄a在线观看 | 国产精品一区二区三区在线免费观看 | 91av九色 | a爱爱视频 | 国产精品美女在线观看 | 国产综合婷婷 | 成人中文字幕av | 成人黄在线观看 | 激情视频在线高清看 | 99精品成人| 91中文字幕网 | 国产精品久久久久久一区二区三区 | 成人av一二三区 | 国产 日韩 欧美 中文 在线播放 | 国产精品久久久网站 | 97av影院| 国产麻豆果冻传媒在线观看 | 在线观看视频在线观看 | 婷婷射五月 | 免费在线观看av的网站 | 亚洲欧美国产日韩在线观看 | 一区二区三区在线免费观看视频 | www.久久久| 国产四虎在线 | 狠狠操精品 | 亚洲精品99久久久久久 | 国产精品99精品久久免费 | 92精品国产成人观看免费 | 欧美精彩视频在线观看 | 91成人精品一区在线播放69 | 狠狠色丁香九九婷婷综合五月 | 日韩天天操| 91高清视频 | 国内久久久 | 一级黄色免费网站 | 精品国产乱码一区二 | 99精品欧美一区二区三区 | 狠狠色丁香婷婷 | 中文字幕视频一区二区 | 亚洲区精品视频 | 久久综合五月天婷婷伊人 | 97超碰人 | 麻豆国产精品va在线观看不卡 | 开心色激情网 | 久久丁香网 | 亚洲激情视频在线 | 日本在线观看中文字幕 | 亚洲日韩精品欧美一区二区 | 不卡的av在线播放 | 91精品国产乱码久久 | 免费色网 | 四虎成人精品永久免费av | 亚洲国产免费看 | 日韩动态视频 | 久久99精品国产麻豆婷婷 | 国产午夜精品一区二区三区 | 国产精品97| 五月天天色 | 中文字幕在线观看第一页 | 亚洲精品中文字幕视频 | 中文字幕亚洲综合久久五月天色无吗'' | 国产中文字幕在线看 | 精品1区2区 | 国产精品麻豆果冻传媒在线播放 | 日韩在线免费观看视频 | 久久国色夜色精品国产 | 国产拍揄自揄精品视频麻豆 | 久久av网 | 成人免费观看在线视频 | 日韩av在线一区二区 | 欧美日韩不卡一区 | 成人黄色av免费在线观看 | 久久久久久久久久久综合 | 国产一级在线免费观看 | 九九九九精品九九九九 | 久草综合在线观看 | 久草精品视频在线播放 | 中文字幕日韩国产 | 日本黄色大片儿 | 亚洲专区欧美 | 日韩精品一区二区三区第95 | 中文字幕国产 | 超碰在线天天 | www最近高清中文国语在线观看 | 精品视频不卡 | 天堂网一区 | 欧美视频在线观看免费网址 | 91桃花视频| 成人免费看黄 | 丝袜美腿在线 | 国产视频在线观看一区二区 | 久久久久久综合网天天 | 欧美日韩国产二区三区 | 韩国av一区二区 | 午夜一级免费电影 | 国产高清视频免费观看 | 天天艹天天爽 | 欧美最猛性xxxxx(亚洲精品) | 中文字幕一区二区三区视频 | 综合久久久久久久 | 国产精品99页 | 91av在线电影| 亚洲毛片视频 | 狠狠色香婷婷久久亚洲精品 | 欧美亚洲国产一卡 | 国产精品免费久久久久影院仙踪林 | 国产精品18毛片一区二区 | 国产精品久久中文字幕 | 国产成年人av | 午夜视频不卡 | 国产视频中文字幕 | 日韩欧美电影在线观看 | 亚洲区另类春色综合小说校园片 | www.午夜色.com | 中文字幕观看在线 | 嫩草av影院 | 99热最新在线 | 一区二区免费不卡在线 | 97色婷婷 | 国产精品免费久久久久久久久久中文 | 日p视频| 欧美日韩国产一区二区三区在线观看 | 国产青春久久久国产毛片 | 中文字幕日韩有码 | 69亚洲精品 | 天天操夜夜操 | av资源网在线播放 | 国产精彩视频一区二区 | 国产精品女人久久久 | 欧美aa在线观看 | 香蕉看片| 国产精品小视频网站 | 黄色精品久久 | 国产在线观看国语版免费 | 天天操天天干天天综合网 | 夜夜干夜夜 | 在线观看色网站 | 久草在线观看资源 | 激情电影影院 | 丁香六月中文字幕 | 欧美日韩一区二区免费在线观看 | 久久天堂亚洲 | 91麻豆网 | 色综合久久88色综合天天人守婷 | 久久精品aaa | 国产在线观看99 | 亚洲在线网址 | 日韩电影中文,亚洲精品乱码 | www婷婷 | 综合久久久 | 午夜精品视频一区 | 人人射人人爱 | 久草精品视频 | 激情校园亚洲 | 91精品久久久久久粉嫩 | 亚洲网久久 | av免费网站在线观看 | 亚洲 欧美 日韩 综合 | 日韩网站在线观看 | 99精品在线免费观看 | 97爱| 国产+日韩欧美 | 国产在线精品一区二区三区 | 午夜黄色影院 | 免费看黄色大全 | 九草在线观看 | 一级理论片在线观看 | 亚洲精品乱码久久久久久蜜桃91 | 国内精品久久久 | 精品久久久久久久久久 | 中文字幕在线观看一区 | 欧美a级片免费看 | 99精品欧美一区二区三区 | 视频一区久久 | 国产午夜在线观看 | 黄色三级网站 | 久久久精品电影 | 99久久久久久国产精品 | 日韩特黄一级欧美毛片特黄 | 欧美精品少妇xxxxx喷水 | 久草在线观看视频免费 | 婷婷丁香花 | 夜夜躁日日躁狠狠久久av | 久久福利精品 | 免费欧美高清视频 | 国产乱码精品一区二区三区介绍 | 最近中文字幕mv免费高清在线 | 91视频久久久 | 国产成人区 | 亚洲一级电影视频 | 欧美国产不卡 | 色婷在线 | 亚洲国产精彩中文乱码av | 美女视频永久黄网站免费观看国产 | 深爱激情婷婷网 | 亚洲欧美国产精品va在线观看 | www.五月天婷婷.com | 91在线欧美 | 久久婷婷一区二区三区 | 日韩sese | 国产视频综合在线 | 久久久久久久毛片 | 欧美夫妻生活视频 | 免费a v在线| 国产成人久久久77777 | 天天激情综合网 | free,性欧美 九九交易行官网 | 午夜精品久久 | 日韩av免费一区二区 | 在线观看视频在线观看 | 免费精品国产va自在自线 | 久久国产网 | 精品亚洲免费视频 | 一级黄色电影网站 | 亚洲九九影院 | 久久精品99国产国产 | 久久精品国产免费看久久精品 | 中文字幕在线乱 | 欧美久久久 | 中文综合在线 | 91av影视| www.干| 黄色成年片 | 久久99国产一区二区三区 | 精品欧美小视频在线观看 | 亚洲视频免费 | 国产成人一区二区精品非洲 | 97在线观视频免费观看 | 91av手机在线观看 | 国产亚洲日 | 国产精品麻 | 婷婷综合网 | 国产精品国产毛片 | 在线看的毛片 | 国产在线一区二区三区播放 | 精品国产一区二区三区久久 | 在线成人免费电影 | 免费www视频 | 九九热中文字幕 | 国产99久久久久 | 日本在线观看一区二区 | 久久精品国产免费看久久精品 | 国产福利中文字幕 | 国产热re99久久6国产精品 | 午夜精品久久久久久中宇69 | 欧美色婷婷 | 欧美激情综合五月色丁香小说 | av天天澡天天爽天天av | 麻豆成人精品视频 | 久久新视频 | 亚洲精品视频在线 | 91精品视频免费看 | 亚洲成aⅴ人在线观看 | 成人免费观看网站 | 中文字幕久久久精品 | 狠狠色伊人亚洲综合网站色 | 香蕉影视| 久久人人射 | 天天射天天干天天 | 国产精品色婷婷视频 | 天堂在线一区二区 | 国产日韩精品一区二区三区 | 成人性生交大片免费观看网站 | 综合精品在线 |