Tomcat配置安装
1.安装Tomcat
2.配置环境变量
建立工程
在Tomcat文件夹下面找到webapps,建立一个自己的文件夹再建一个WEB-INF的文件夹,再建立如图下的结构
web name
其他文件或者index.html
WEB-INF
web.xml:配置文件,符合J2EE标准
lib:放库文件
classes:存放编译好的Serverlet文件
在classes下建立工程
实现Servlet方式
实现servlet接口
这种方法是可以运行在所有服务器端的servlet,最重要的是servlet方法
package ustb;
import javax.servlet.*;
import java.io.*;
public class HelloWorld implements Servlet{
//初始化 ,类似于构造函数,只被调用一次
//当用户第一次访问该servlet时
@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init it");
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
//负责处理业务逻辑
//当用户每访问servlet一次都会被调用一次
//req用于获得客户端/浏览器的信息
//res用于向客户端/浏览器返回信息
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("service it");
//从res中得到PrintWriter
PrintWriter pw = res.getWriter();
pw.println("hello,world");
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
//销毁servlet实例,释放内存
//调用的情况1.reload该servlet(webapp)
//关闭tomcat
//关机
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("destroy");
}
}
继承GenericServlet
只用重新写service方法就可以
package ustb;
import javax.servlet.*;
import javax.servlet.GenericServlet;
import java.io.*;
public class HelloWorld extends GenericServlet{
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
PrintWriter pw = arg1.getWriter();
pw.println("hello world");
}
}
继承HttpServlet
最重要,专门给web使用的Servlet,是抽象类型,必须重写
需要重写doGet,doPost方法,接收,发送浏览器信息
用getParameter获取内容
用sendRedirect跳转
get方式调用的时候是在浏览器中直接输入URL的时候调用的
post方式是在表单中提交,并且method是post
配置xml文件
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>ustb.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/wangchenhao</url-pattern>
</servlet-mapping>
第一行是给servlet起名字,任意的
第二行是指明servlet的路径(包名+类名)
第三行时映射关系,同第一行的名字
第四行浏览器访问servlet输入的url
访问
在浏览器地址栏输入
http://localhost:8080/myWebSite/sp
表单验证
前台的申请有post、get两种,用pw.write向前台返回数据(html)等
getParameter方法中传的是标签的name
表单的action=logincl、sendRedirect= 写的都是url,就是在servlet注册的url,不是类名,这里要初一注意
package ustb;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.*;;
public class Login extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//中文乱码
resp.setContentType("text/html;charset=gbk");
PrintWriter pw = resp.getWriter();
//返回登录界面
pw.println("<html>");
pw.println("<body>");
pw.println("<h1>登录界面</h1>");
pw.println("<form action=logincl method = post>");
pw.println("用户名:<input type=text name=username><br>");
pw.println("密码:<input type=password name=passwd><br>");
pw.println("<input type=submit value=loing><br>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}
}
package ustb;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.*;;
public class LoginCl extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//接收用户名和密码
String u = req.getParameter("username");
String p = req.getParameter("passwd");
//验证
if(u.equals("sp") && p.equals("123")){
resp.sendRedirect("welcome");
}else{
//跳转
resp.sendRedirect("login");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}
}
package ustb;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.*;;
public class Welcome extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter pw = resp.getWriter();
pw.print("hello");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}
}
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>ustb.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/sp</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>ustb.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>logincl</servlet-name>
<servlet-class>ustb.LoginCl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>logincl</servlet-name>
<url-pattern>/logincl</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>welcome</servlet-name>
<servlet-class>ustb.Welcome</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>welcome</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>