<!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=Shift_JIS">
<title>Insert title here</title>
</head>
<body>
<FORM action="AddServlet" method="POST">
<TABLE>
<TR><TD>タイトル: </TD><TD><INPUT name="title"></TD></TR>
<TR><TD>著者: </TD><TD><INPUT name="author"></TD></TR>
<TR><TD>訳者: </TD><TD><INPUT name="translator"></TD></TR>
<TR><TD>出版社: </TD><TD><INPUT name="publisher"></TD></TR>
<TR><TD>出版日: </TD><TD><INPUT name="publicationDate"></TD></TR>
<TR><TD>ISBN: </TD><TD><INPUT name="code"></TD></TR>
<TR><TD>メモ: </TD><TD><INPUT name="memo"></TD></TR>
<TR><TD>キーワード: </TD><TD><INPUT name="keyword"></TD></TR>
<TR><TD>登録者: </TD><TD><INPUT name="dataCreator"></TD></TR>
<TR><TD><INPUT type="submit" value="登録"></TD></TR>
<INPUT type="hidden" name="step" value="prepare">
</TABLE>
</FORM>
</body>
</html>package jp.bcat;import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.text.SimpleDateFormat;
import java.util.Date;/**
* Servlet implementation class AddServlet
*/
@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public AddServlet() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String step = request.getParameter("step");
if ("prepare".equals(step))
prepare(request, response);
else
confirm(request, response);
} void prepare(HttpServletRequest request, HttpServletResponse response) throws IOException {
String errorMessage = "";
Book book = new Book();
String title = request.getParameter("title");
book.setTitle(title);
if (title == null || title.length() == 0)
errorMessage += "<P>タイトルを入力してください。</P>";
String author = request.getParameter("author");
book.setAuthor(author);
if (author == null || author.length() == 0)
errorMessage += "<P>著者を入力してください。</P>";
String translator = request.getParameter("translator");
book.setTranslator(translator);
String publisher = request.getParameter("publisher");
book.setPublisher(publisher);
if (publisher == null || publisher.length() == 0)
errorMessage += "<P>出版社を入力してください。</P>";
String publicationDate = request.getParameter("publicationDate");
book.setPublicationDate(publicationDate);
if (publicationDate == null || publicationDate.length() == 0)
errorMessage += "<P>出版年月日を入力してください。</P>";
String code = request.getParameter("code");
book.setCode(code);
String memo = request.getParameter("memo");
book.setMemo(memo);
String keyword = request.getParameter("keyword");
book.setKeyword(keyword);
String dataCreator = request.getParameter("dataCreator");
book.setDataCreator(dataCreator);
if (dataCreator == null || dataCreator.length() == 0)
errorMessage += "<P>登録者名を入力してください。</P>";
String now = new SimpleDateFormat("yyyy-MM-dd")
.format(new Date());
book.setDataCreatedDate(now); response.setContentType("text/html; charset=Shift_JIS");
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>図書登録確認</TITLE></HEAD>");
if (errorMessage.length() == 0) {
out.println("<BODY>");
out.println("この内容で登録しますか?");
out.println("<PRE>");
new BookWriter(out, "+ ").write(book);
out.println("</PRE>");
out.println("<FORM method='POST'>");
out.println("<INPUT type='hidden' name='step' value='confirm'>");
out.println("<INPUT type='submit' value='登録'>");
out.println("</FORM>");
out.println("<A href='./'>メニューに戻る</A>");
out.println("</BODY>");
request.getSession().setAttribute("book", book);
} else {
out.println("<BODY>");
out.println(errorMessage);
out.println("<A href='./'>メニューに戻る</A>");
out.println("</BODY>");
}
out.println("</HTML>");
} void confirm(HttpServletRequest request, HttpServletResponse response) throws IOException {
Book book = (Book)request.getSession().getAttribute("book");
BookCatalog catalog = BookCatalog.getInstance();
catalog.addBook(book); response.setContentType("text/html; charset=Shift_JIS");
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>図書登録結果</TITLE></HEAD>");
out.println("<BODY>");
out.println("<P>登録しました。</P>");
out.println("<A href='./'>メニューに戻る</A>");
out.println("</BODY>");
out.println("</HTML>");
}
}
我用的是eclipse动态网页编程,在addForm.html(上述html文件)的界面中输入汉字以后不能在(図書登録確認)界面中显示出来,在(図書登録確認)页面中显示出来的是乱码(????),我用的是日语的系统文字码是Shift_JIS,请求高手的帮助。十分感谢大家!!
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>Insert title here</title>
</head>
<body>
<FORM action="AddServlet" method="POST">
<TABLE>
<TR><TD>タイトル: </TD><TD><INPUT name="title"></TD></TR>
<TR><TD>著者: </TD><TD><INPUT name="author"></TD></TR>
<TR><TD>訳者: </TD><TD><INPUT name="translator"></TD></TR>
<TR><TD>出版社: </TD><TD><INPUT name="publisher"></TD></TR>
<TR><TD>出版日: </TD><TD><INPUT name="publicationDate"></TD></TR>
<TR><TD>ISBN: </TD><TD><INPUT name="code"></TD></TR>
<TR><TD>メモ: </TD><TD><INPUT name="memo"></TD></TR>
<TR><TD>キーワード: </TD><TD><INPUT name="keyword"></TD></TR>
<TR><TD>登録者: </TD><TD><INPUT name="dataCreator"></TD></TR>
<TR><TD><INPUT type="submit" value="登録"></TD></TR>
<INPUT type="hidden" name="step" value="prepare">
</TABLE>
</FORM>
</body>
</html>package jp.bcat;import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.text.SimpleDateFormat;
import java.util.Date;/**
* Servlet implementation class AddServlet
*/
@WebServlet("/AddServlet")
public class AddServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public AddServlet() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String step = request.getParameter("step");
if ("prepare".equals(step))
prepare(request, response);
else
confirm(request, response);
} void prepare(HttpServletRequest request, HttpServletResponse response) throws IOException {
String errorMessage = "";
Book book = new Book();
String title = request.getParameter("title");
book.setTitle(title);
if (title == null || title.length() == 0)
errorMessage += "<P>タイトルを入力してください。</P>";
String author = request.getParameter("author");
book.setAuthor(author);
if (author == null || author.length() == 0)
errorMessage += "<P>著者を入力してください。</P>";
String translator = request.getParameter("translator");
book.setTranslator(translator);
String publisher = request.getParameter("publisher");
book.setPublisher(publisher);
if (publisher == null || publisher.length() == 0)
errorMessage += "<P>出版社を入力してください。</P>";
String publicationDate = request.getParameter("publicationDate");
book.setPublicationDate(publicationDate);
if (publicationDate == null || publicationDate.length() == 0)
errorMessage += "<P>出版年月日を入力してください。</P>";
String code = request.getParameter("code");
book.setCode(code);
String memo = request.getParameter("memo");
book.setMemo(memo);
String keyword = request.getParameter("keyword");
book.setKeyword(keyword);
String dataCreator = request.getParameter("dataCreator");
book.setDataCreator(dataCreator);
if (dataCreator == null || dataCreator.length() == 0)
errorMessage += "<P>登録者名を入力してください。</P>";
String now = new SimpleDateFormat("yyyy-MM-dd")
.format(new Date());
book.setDataCreatedDate(now); response.setContentType("text/html; charset=Shift_JIS");
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>図書登録確認</TITLE></HEAD>");
if (errorMessage.length() == 0) {
out.println("<BODY>");
out.println("この内容で登録しますか?");
out.println("<PRE>");
new BookWriter(out, "+ ").write(book);
out.println("</PRE>");
out.println("<FORM method='POST'>");
out.println("<INPUT type='hidden' name='step' value='confirm'>");
out.println("<INPUT type='submit' value='登録'>");
out.println("</FORM>");
out.println("<A href='./'>メニューに戻る</A>");
out.println("</BODY>");
request.getSession().setAttribute("book", book);
} else {
out.println("<BODY>");
out.println(errorMessage);
out.println("<A href='./'>メニューに戻る</A>");
out.println("</BODY>");
}
out.println("</HTML>");
} void confirm(HttpServletRequest request, HttpServletResponse response) throws IOException {
Book book = (Book)request.getSession().getAttribute("book");
BookCatalog catalog = BookCatalog.getInstance();
catalog.addBook(book); response.setContentType("text/html; charset=Shift_JIS");
PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>図書登録結果</TITLE></HEAD>");
out.println("<BODY>");
out.println("<P>登録しました。</P>");
out.println("<A href='./'>メニューに戻る</A>");
out.println("</BODY>");
out.println("</HTML>");
}
}
我用的是eclipse动态网页编程,在addForm.html(上述html文件)的界面中输入汉字以后不能在(図書登録確認)界面中显示出来,在(図書登録確認)页面中显示出来的是乱码(????),我用的是日语的系统文字码是Shift_JIS,请求高手的帮助。十分感谢大家!!
import java.io.IOException;
import javax.servlet.*;public class RequestEncodingFilter implements Filter {
private String encoding; public void init(FilterConfig config) throws ServletException {
encoding = config.getInitParameter("encoding");
} public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
if (encoding != null)
req.setCharacterEncoding(encoding);
chain.doFilter(req, res);
} public void destroy() {
}
}这个东西确实是有,但是好像要在XML中设置一下,
<?xml version="1.0" encoding="UTF-8"?>
<!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>
<filter>
<filter-name>requestEncodingFilter</filter-name>
<filter-class>jp.bcat.util.RequestEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>requestEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>add</servlet-name>
<servlet-class>jp.bcat.AddServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>list</servlet-name>
<servlet-class>jp.bcat.ListServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>delete</servlet-name>
<servlet-class>jp.bcat.DeleteServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>add</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>list</servlet-name>
<url-pattern>/list</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>delete</servlet-name>
<url-pattern>/delete</url-pattern>
</servlet-mapping>
</web-app>
这个是我的XML文件,但是好像还是不管用,不知道问题出在了什么地方请求高手的解决。
<param-name>encoding</param-name>
<param-value>Shift_JIS</param-value>
这个就已经设置了编码方式为Shift_JIS,要用就全部都用统一的吧(Shift_JIS,我没用过,不知道是什么编码的)
tomcat中修改编码方式是:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
中添加编码方式的属性,<Connector port="8080"
URIEncoding="XXX" 你要设置的编码方式
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
====
在HTML的页面上也改成utf-8的……
response.setContentType("text/html;charset=UTF-8");把接收的参数全部转换String x = new String(param.getBytes("ISO-8859-1"), "UTF-8");