创建Servlet的方法有两种:
Servlet要继承HttpServlet,因为jar不在jdk的里面,而是在Tomcat里面的servlet-api.jar。
所以想要使用servlet的接口或继承必须把Tomcat依赖添加进去。
File ---> project structure... ---> Modules ---> + library....
1. 通过创建java类,实现Servlet接口或继承于Servlet接口的实现类(HttpServlet)来实现。
2. 通过集成开发工具进行创建。
Servlet配置:
目的是为了将创建的Servlet注册到Servlet容器中,
而在3.0前版本只能web.xml文件中配置Servlet,3.0版本后提供了注解配置。
1. web.xml文件中配置Servlet
<!--注册Servlet-->
<servlet>
<!--Servlet名称-->
<servlet-name>AddServlet</servlet-name>
<!--类的完整类名(包路径)-->
<servlet-class>com.atguigu.servlets.AddServlet</servlet-class>
</servlet>
<!--映射-->
<servlet-mapping>
<!--Servlet名称-->
<servlet-name>AddServlet</servlet-name>
<!--访问url地址-->
<url-pattern>/add</url-pattern>
</servlet-mapping>
<!--
1. 用户发请求,action=add
2. 项目中,web.xml中找到url-pattern = /add -> 第12行
3. 找第11行的servlet-name = AddServlet
4. 找和servlet-mapping中servlet-name一致的servlet , 找到第7行
5. 找第8行的servlet-class -> com.atguigu.servlets.AddServlet
6. 用户发送的是post请求(method=post) , 因此 tomcat会执行AddServlet中的doPost方法
-->
2.Servlet注解配置:
@WebServlet("/servlet类名")
dopost()方法或doget能帮我们响应post或get请求
而用户发送的是post默认的请求(method=post),tomcat会执行Servlet中的doPost方法。
而用户发送的是get默认的请求(method=get),tomcat会执行Servlet中的doGet方法。
下面代码:获取参数
通过form表单填写信息,然后通过action跳转提交给Servlet,Servlet的doPost方法里面的request.getParameter()获取参数,然后打印到控制台。
<body>
<form action="addServlet" method="post">
名称:<input type="text" name="fname"/><br/>
价格:<input type="text" name="price"/><br/>
库存:<input type="text" name="fcount"/><br/>
备注:<input type="text" name="remark"/><br/>
<input type="submit" value="添加" />
</form>
</body>
@WebServlet("/addServlet")
public class addServlet extends HttpServlet {
public addServlet(){super();}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取参数
String fname = request.getParameter("fname");
String priceStr = request.getParameter("price");
//Http传递的参数都是字符串,所以有的时候需要强转
Integer price = Integer.parseInt(priceStr);
String fcountStr = request.getParameter("fcount");
Integer fcount = Integer.parseInt(fcountStr);
String remark = request.getParameter("remark");
System.out.println("fname"+fname);
System.out.println("price"+price);
System.out.println("fcount"+fcount);
System.out.println("remark"+remark);
}
}
小结:
1. 在部署的时候,修改application Context。然后再回到server选项卡,检查URL的值。
URL的值指的是tomcat启动完成后自动打开你指定的浏览器,然后默认访问的网址。
启动后,报错404.404意味着找不到指定的资源。
如果我们的网址是:http://localhost:8080/pro01/ , 那么表明我们访问的是index.html.
我们可以通过<welcome-file-list>标签进行设置欢迎页(在tomcat的web.xml中设置,或者在自己项目的web.xml中设置)
2. 405问题。当前请求的方法不支持。比如,我们表单method=post , 那么Servlet必须对应doPost。否则报405错误。
3. 空指针或者是NumberFormatException 。因为有价格和库存。如果价格取不到,结果你想对null进行Integer.parseInt()就会报错。错误的原因大部分是因为 name="price"此处写错了,结果在Servlet端还是使用request.getParameter("price")去获取。
4. <url-pattern>中以斜杠开头