1.1、创建web项目Dynamic Web Project, 注意勾选自动生成web.xml
1.2、创建html文件, 注意选择模板(4.0.1.transitional)
1.3、在servers中添加已启动的项目
1.4、启动server, 访问
=======2、Servlet基础。========
Servlet可以完成java程序运行到web环境中。
2.1、依赖于tomcat的运行环境的servlet-api.jar, 必须创建动态wed项目。
2.2、创建一个Servlet,要继承HttpServlet, 实现doGet方法
2.3、在web.xml中添加servlet, servlet-mapping
2.4、访问及问题
2.5、注释掉super.doGet(res, resp), 因为super.doGet直接跳转。
2.6、servlet执行流程。
在上面网页执行get请求, 所以在Servlet就会执行对应的doGet()。
http://localhost:8080/test01/myservlet
http://ip:port/项目名/url-parttern
2.7、另外有一种创建Servlet类型, 在Eclipse中创建Servelet而不是类。它会自动穿件url-parterrn,和name,不用在web.xml中添加映射。
========3、获取请求参数===========
3.1、获取参数名
//http://localhost:8080/test01/myservlet?username=chb
//获取参数名
Enumeration pas = req.getParameterNames();
while(pas.hasMoreElements()){
System.out.println(pas.nextElement());
}
4.1、创建一个register.html,设置action=”/test01/register”,
注意此处写为”/register”总是找不到对应的Servlet
4.2、创建RegisterServlet
package com.chb.servlet01;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RegisterServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//获取参数值
String username = req.getParameter("username");
String password = req.getParameter("password");
String sex = req.getParameter("sex");
String address = req.getParameter("address");
//获取同个参数的多个值,使用getParameterValues,返回一个String[]
String[] interests = req.getParameterValues("interest");
resp.setContentType("text/html;charset-UTF-8");
PrintWriter pw = resp.getWriter();
pw.println("");
pw.println("my servlet
");
pw.println(username);
pw.println(password);
pw.println(sex);
pw.println(address);
for (String interest : interests) {
pw.print(interest);
}
pw.println("");
pw.println("");
}
}
4.3、在web.xml中配置映射。
registerServlet
com.chb.servlet01.RegisterServlet
registerServlet
/register
4.4、访问register.html, 跳转到RegisterServlet
4.5、从上面的结果可以看到两个问题
4.5.1、所有的参数都暴露在url上,这是很危险的。
4.5.1.1、解决方法:使用post请求
4.5.1.2、设置表单请求方式为post
//默认为get请求方式
4.5.1.3、修改RegisterServlet, 实现doPost()方法。
4.5.2、乱码问题。
4.5.2.1、第一种方法: 在server.xml中添加URIEncoding="UTF-8"
4.5.2.2、注意此种方法不能够解决post的乱码。
4.5.2.3、第二种方法: 在doGet()最开始加req.setCharacterEncoding("UTF-8");。解决post的乱码