一、搭建server服务器
解压缩tomcat文件,打开eclipse。
点击window-show view-other...,搜索servers,点击open,就打开了servers视图,显示没有实例,点击蓝字或者右键点击new,选择创建实例,选择apache,选择版本号(这时候用的是8.5)然后next,然后选择安装路径,点击选择解压缩的地址,选择到apache-tomcat-8.5.46即可,然后jre改成jdk,一定要选择一个jdk,然后finish。这样也就搭建好一个服务实例了。
二、创建web项目
左边空白处右键new-other...,搜索web,选择dynamic web project(动态web项目)-next,填写项目名(easyweb)-next-next ,最后一个generate web.xml(生成xml)选择生成 再点finish,这样就创建一个web项目,选择window-show view-other,搜索package,选择package explorer 打开,拖拽到左上角使用。
右键server服务窗口的tomcat服务器,点击add and remove-选择easyweb项目-finish,这样就实现服务器和项目的连接了
三、配置servlet
首先 创建servlet类继承httpservlet
//定义servlet 需要继承HttpServlet
public class HelloServlet extends HttpServlet{
第一种方法:使用@WebServlet注解做了一个映射,指向HelloServlet类
@WebServlet(urlPatterns = "/hello",loadOnStartup = 1)
//定义servlet 需要继承HttpServlet
public class HelloServlet extends HttpServlet{
第二种方法:在项目的主web.xml文件下,进行配置,最后也是指向HelloServlet类
<servlet>
<!-- 给servlet起一个名字 -->
<servlet-name>helloServlet</servlet-name>
<!--指定servlet的全名 -->
<servlet-class>com.easy.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<!-- 给这个servlet做一个映射 -->
<servlet-name>helloServlet</servlet-name>
<url-pattern>/h</url-pattern>
</servlet-mapping>
另外,在web.xml下
<!-- 当通过浏览器直接访问项目名称,而没有指定具体的文件或者资源时,会从以下列表中选择第一个找到的文件进行反馈 -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
四、servlet方法 doget dopost service方法
* 当浏览器通过get请求方式访问该servlet会执行doGet方法
* 怎样访问到servlet? 使用@WebServlet注解做了一个映射urlPattern="/hello"
* 浏览器访问到urlPatterns后指定的路径就访问到当前servlet了
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
/**
* request 请求对象,将浏览器请求服务器的数据包装成request对象
*
* response 是服务器响应浏览器请求的回应数据的包装对象
*/
resp.getWriter().write("doget method");
}
* 通过不同的请求方式访问到不同的方法
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req,resp);
}
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
}
4.1 前端输入账号密码,后端获取信息:
前端:
<form action="login" method='post'>
<div class='loginitem'>
<label>账号</label><input type='text' name="username">
</div>
<div class='loginitem'>
<label>密码</label><input type="password" name='userpass'>
</div>
<div class='butbox'>
<input type="submit" value="登录">
</div>
</form>
后端:
/**
* 获取前端发送的参数
*/
String username=req.getParameter("username");
String userpass=req.getParameter("userpass");
resp.getWriter().write("service method "+username+"----"+userpass);
4.2 servlet重定向 转发
// 通过servlet跳转页面:重定向 转发
// 重定向,可以定位到外部项目,浏览器发送了两次请求
resp.sendRedirect("https://www.baidu.com");
// 转发,只能在本项目内转发,浏览器发送了一个请求,浏览器请求的地址不会发生变化
// 可以访问WEB-INF下受保护的资源
req.getRequestDispatcher("WEB-INF/other.jsp").forward(req, resp);
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// 重定向,可以定位到外部项目,浏览器发送了两次请求
resp.sendRedirect("https://www.baidu.com");
// 转发,只能在本项目内转发,浏览器发送了一个请求,浏览器请求的地址不会发生变化
// 可以访问WEB-INF下受保护的资源
req.getRequestDispatcher("WEB-INF/other.jsp").forward(req, resp);
}
五、servlet生命周期
servlet生命周期
1.默认情况下,第一次访问servlet时实例化对象,并且立即执行init方法进行初始化,可以使用loadOnStartup来控制servlet实例化对象的时机,取值越小,优先级越高(优先实例化对象)
2.请求访问servlet,优先执行service方法,service中根据请求方式不同, 分别执行doget和dopost方法
3.当服务器关闭时,会销毁servlet对象,执行destory方法
@WebServlet(urlPatterns = "/hello",loadOnStartup = 1)
public class HelloServlet extends HttpServlet{
public HelloServlet() {
System.out.println("----HelloServlet实例化对象-----");
}
public void init(ServletConfig config) throws ServletException {
System.out.println("----HelloServlet初始化-----");
}
public void destroy() {
System.out.println("----HelloServlet被销毁-----");
}
}