2013-12-17 25 views
1

我用Java Servlet的工作,遇到了我的代码两难线。当我在内置的Web浏览器中测试eclipse中的代码时,代码完美地工作。但是当我去浏览器测试时,除了的Java Servlet打印“语言/内容类型/页编码”,在浏览器

<%@ page language = \“java \”contentType = \“text/(“上一页”下一页第一个内容)“ISO-8859-1”( - >> via out.println(“<%@ ...”);)

作为页面上的第一个内容。如果我评论这条线,我会失去我所有的CSS样式,即使我的标题中的链接和元标记状态如下

link rel ='stylesheet'href ='landingpage.css'type ='text/css '媒介=' 屏幕 '

META HTTP-当量= '内容 - 类型' 含量=' text/html的;字符集= ISO-8859-1'

(二者还经由通过out.println())

覆盖我的样式表的参考,内容类型,和正确映射字符集。为了清楚起见,“出”是我的printwriter(out = response.getWriter())

任何人都可以提供一个答案,我可以如何让这条线离开我的浏览器?

谢谢。

保护无效的doGet(HttpServletRequest的请求,响应HttpServletResponse的)抛出的ServletException,IOException异常{

PrintWriter out = response.getWriter(); 

    try { 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     System.out.println("driver found"); 
     connection = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;" + 
       "instance=SQLEXPRESS;databaseName=Timecard_DB;user=Dan;password=Mc177700;"); 

     out.println("<%@ page language=\"java\" contentType=\"text/html; charset=ISO-8859-1\" pageEncoding=\"ISO-8859-1\"%>"); 
     out.println("<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>"); 
     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<link rel='stylesheet' href='landingpage.css' type='text/css' media='screen'>"); 
     out.println("<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1'>"); 
     out.println("<title>Home</title>"); 
     out.println("</head>"); 
     out.println("<body>"); 

     out.println("<div id='container'>"); 

     out.println("<div id='header'>"); 
     out.println("<img src='Images/mPowerlogo.jpg'/>"); 
     out.println("</div>"); 

     out.println("<div id='welcome'>"); 
     out.println("Welcome, User1"); 
     out.println("</div>"); 

     out.println("<div id='logout'>"); 
     out.println("<a href=''>Logout</a>"); 
     out.println("</div>"); 

     out.println("<div id='links'>"); 
     out.println("<ul>"); 
     out.println("<li><a href=''>Timecard Management</a></li>"); 
     out.println("<li><a href=''>User Management</a></li>"); 
     out.println("<li><a href=''>Customer Management</a></li>"); 
     out.println("<li><a href=''>Admin</a></li>"); 
     out.println("<li><a href=''>Reports</a></li>"); 
     out.println("</ul>"); 
     out.println("</div>"); 

     out.println("<div id='feed'>"); 
     out.println("<p>Recent Activity:</p>"); 
     out.println("<textarea id='feedtext' readonly>"); 

     try { 
      stmt = connection.createStatement(); 
      String feedSelect = "SELECT ROLE_NAME from ROLES"; 
      rs = stmt.executeQuery(feedSelect); 
      ResultSetMetaData metadata = rs.getMetaData(); 
      while(rs.next()) { 
       for(int i = 1; i <= metadata.getColumnCount(); i++) { 
        String colValue = rs.getString(i); 
        out.println(colValue); 

       } 
      } 
     } 
     catch (SQLException e) { 
      e.printStackTrace(); 
     } 

     out.println("</textarea>"); 
     out.println("</div>"); 

     out.println("</div>"); 

     out.println("</body>"); 
     out.println("</html>"); 

    } catch (Exception e) { 
     e.printStackTrace(); 
     e.getMessage(); 
    } 

    response.setContentType("text/html"); 
} 

CSS:

@CHARSET “ISO-8859-1”;

体{

....等等;造型很好。

其他的一切在我的代码的功能,正是因为它应该。它只是通过我的printwriter打印的第一行,在页面上莫名其妙地打印出来。

+0

您可以发布的代码? – 2013-12-17 15:19:24

+0

我刚刚添加了我的css文件中的代码和字符集 –

+0

查看我的答案,并让我知道是否有任何问题 – 2013-12-17 15:57:34

回答

1

作为其一个servlet,所以你不需要写此行out.println("<%@ page language=\"java\" contentType=\"text/html; charset=ISO-8859-1\" pageEncoding=\"ISO-8859-1\"%>"); 通常我们写在JSP这一行,当它在服务器编译如Tomcat那么这一行中省略

您需要添加此行servlet的

response.setContentType("text/html; charset=UTF-8"); 
+0

我尝试过这种方法,省略了第一行,并且第一行仍然存在。两者都没有改变任何结果。这条线应放在哪里?构造函数调用自动地的doGet(),所以我应该只可以放置的setContentType()中的doGet()像我在做什么。任何其他想法? –

+0

@DanMcNamara一般我们在服务方法上做的。你也可以在doGet()中做; – 2013-12-17 16:10:52

+0

我只使用tomcat6 ..这可能与这个问题有关吗?只是抛出可能性。 –