一:配置
Tomcat 7 + JDK 8
二:Demo
0.project directory(目录)
1.jsp文件(register.jsp)
<strong><span style="font-size:14px;color:#ff0000;"><strong><%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
<title>REGISTER</title>
</head>
<body>
<form action="register" method="post">
<input type="text" id="username" name="username">
<input type="submit" value="happygo!" id="go">
</form>
</body>
</html></strong></span></strong>
2.web.xml配置文件
<strong><span style="font-size:14px;color:#ff0000;"><strong><?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" metadata-complete="true" version="3.1">
<servlet>
<servlet-name>commentFlowServlet</servlet-name>
<servlet-class>com.p.action.IndexAction</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>commentFlowServlet</servlet-name>
<url-pattern>/register</url-pattern>
</servlet-mapping>
</web-app></strong></span></strong>
3.java文件(IndexAction.java)
<strong><span style="font-size:14px;color:#ff0000;"><strong>package com.p.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IndexAction extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String name = request.getParameter("username");
System.out.println(name);
}
}</strong></span></strong>
注意:
form的action里的register前面没有加 / ,加了报错,因为它指向的根目录了
结果:
--------->
控制台:
思考:如果register.jsp文件在test文件夹下,from应该指向哪里呢?
不必担心,加上
<strong><span style="font-size:14px;color:#ff0000;"><strong> <%=request.getContextPath()%> /* /项目名 这里是 /ServletDemo */</strong></span></strong>
web.xml不用改,也能达到像前面一样的效果。
思考2:乱码问题
考虑两个乱码问题,即response返回前台的值乱码和控制台输出值得乱码
package com.p.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IndexAction extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String name = request.getParameter("username");
System.out.println(name);
pw.print("我是中国人");
}
}
前台:
控制台:
解决问题:
<strong><span style="font-size:14px;color:#ff0000;">package com.p.action;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class IndexAction extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String name = request.getParameter("username");
//控制台输出
byte b[] = name.getBytes("ISO-8859-1");
System.out.println(new String(b));
//reponse返回前台输出
response.setCharacterEncoding("GB2312");
PrintWriter pw = response.getWriter();
pw.print("我是美国人");
}
}</span></strong>