WebProject的建立
可以直接在MyEclipse下建一个web工程;方便很多。
我是在Eclipse 下建的,需要手动建
1.新建一个工程,一个包,一个类,
2.建一个lib文件夹,将servlet-api.jar(tomcat 安装目录下的lib文件夹下有)copy进去,通过buildpath导入这个三方包
3.然后这个类就可以继承HttpServlet,重写里面的doGet 或者doPost方法来进行响应
4.在工程下面建一个WebRoot(名字可以自定义)文件夹,下面建一个
WEB-INF(必须一致),里面有一个classes文件夹和一个web.xml,如果在其他html(action)需要向此servlet服务器发送请求,就将他copy到WebRoot文件夹下
5.依照下面的路径将class文件制定到classes文件夹下
6.下面就是web.xml里面的内容
访问url<url-pattern> <servlet-mapping>中的(eg:http:localhost:8080/WEBROOT/test)
获得他的<servlet-name>,再到<servlet>中通过这个名字找到他的class
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
<servlet>
<servlet-name>testapp</servlet-name>
<servlet-class>com.android.app.MyApp</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>testapp</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
package com.android.app;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyApp extends HttpServlet {
/*
* 客户端通过GET请求
*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 处理乱码方式一
resp.setContentType("text/html;charset=UTF-8");
/* 通过这个key标签得到客户端传过来的参数 */
// req.getParameter("key");
/* 服务器给出的回应 */
resp.getWriter().write("hello你好");
}
/*
* 客户端通过POST请求
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
运行:
第一种方式:(更改一次,copy次,不推荐)
将这个文件夹WebRoot 复制到webapps下,启动tomcat,访问url
第二种方式:在tomcat目录下conf/server.xml 中做映射
<context path="/app" docBase="WebRoot 的绝对路径">
访问:http://localhost:8080/app/test 这个就只是服务器做出响应的代码
乱码问题
get提交获取参数乱码解决方式:
1.更改server.xml
<connector URlEncoding="UTF-8"></connector>
2.String user_Name = new String(userName.getBytes("ISO-8859-1"),"UTF-8");
post提交获取参数乱码解决方式
request.setCharacterEncoding("UTF-8");
做出响应乱码解决方式:
resp.setContentType("text/html;charset=UTF-8")