1,Servlet入门小案例,一些注意事项
Java编写服务器的小程序:servlet
一个功能至少是一个Servlet
编辑
注意事项:
- 导包之前,Tomcat必须停掉。
- 包的放置位置必须在:web/WEB-INF/lib
编辑
编辑
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>Demo1Servlet</servlet-name> <servlet-class>com.czxy.demo1.web.servlet.Demo1Servlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Demo1Servlet</servlet-name> <url-pattern>/d1</url-pattern> </servlet-mapping> </web-app>
编辑
Demo1Servlet
public class Demo1Servlet extends BaseServlet { public String run1(){ System.out.println("我是run1"); return null; } }
编辑
2,Servlet【阶段重点】
2.1:概述
用来接收浏览器数据,返回服务器处理结果
Servlet 接收并处理http请求信息(行、头、体)
Servlet生成http响应信息(行、头、体)
2.2:注意事项&常见问题
分析图
编辑
常见问题希望大家可以记住,出错的时候能很快进行解决
1,路径和web.xml配置里面的不一样,会报ClassNotFoundException("类找不到异常")
编辑
2,IDEA控制台显示这种报错,检查web.xml文件
编辑
编辑
3,报404错误的(访问路径不匹配)
编辑
4,Servlet初始化的错误
500是服务器出错,初始化Servlet Demo2错误,因为找不到class文件
编辑
解决方案:
1,检查web.xml中,servlet-class标签是否正确指向了Java类
2,IDEA自动部署失败:删除out目录,让IDEA重新部署
5,JavaBean的创建顺序
1,实现序列化接口(后面有session序列化等操作,必要时给予序列化ID)
2,私有化成员变量
3,getter/setter方法
4,无参构造
5,带参构造
6,toString
5,web.xml的注意事项(路径禁止重复)
编辑
6,路径不正确
编辑
编辑
3,获取参数列表(重点)
编辑
User1:
public class User1 implements Serializable { private String username; private String password; @Override public String toString() { return "User1{" + "username='" + username + '\'' + ", password='" + password + '\'' + '}'; } public User1(String username, String password) { this.username = username; this.password = password; } public User1() { } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
form.html:
<h1>表单提交数据测试</h1> <form method="post" action="http://localhost:8080/day03/d1?method=run1"> 用户名:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> 性别:<input type="radio" name="sex" value="man"/>男 <input type="radio" name="sex" value="woman"/>女<br/> 爱好:<input type="checkbox" name="hobby" value="code"/>编码 <input type="checkbox" name="hobby" value="run"/>跑步 <input type="checkbox" name="hobby" value="swim"/>游泳<br/> <input type="submit"/> </form>
Demo1Servlet
public class Demo1Servlet extends BaseServlet { public String run1(){ User1 user1 = toBean(User1.class); System.out.println(user1); return null; } }
小结:
1、JavaBean javaBean = toBean(JavaBean.class);
表单输入项的name属性需要和JavaBean成员变量名保持一致,才能正常填充数据。
2、提交路径:
action="http://域名:端口号/资源路径?method=方法名"
action="/资源路径?method=方法名"
完整的列表获取方式:
User2:
public class User2 implements Serializable { private String id; private String username; private String password; private String sex; private String[] hobby; @Override public String toString() { return "User2{" + "id='" + id + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + ", sex='" + sex + '\'' + ", hobby=" + Arrays.toString(hobby) + '}'; } public User2(String id, String username, String password, String sex, String[] hobby) { this.id = id; this.username = username; this.password = password; this.sex = sex; this.hobby = hobby; } public User2() { } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String[] getHobby() { return hobby; } public void setHobby(String[] hobby) { this.hobby = hobby; } }
form2.html
<h1>表单提交数据测试</h1> <form method="post" action="/day03/d1"> <!--访问servlet的run2方法--> <input type="hidden" name="method" value="run2"/> 用户名:<input type="text" name="username"/><br/> 密码:<input type="password" name="password"/><br/> 性别:<input type="radio" name="sex" value="man"/>男 <input type="radio" name="sex" value="woman"/>女<br/> 爱好:<input type="checkbox" name="hobby" value="code"/>编码 <input type="checkbox" name="hobby" value="run"/>跑步 <input type="checkbox" name="hobby" value="swim"/>游泳<br/> <input type="submit"/> </form>
Demo1Servlet
public String run2(){ User2 user2 = toBean(User2.class); System.out.println(user2); return null; }
小结:
- 必须有成员变量id,为以后准备
- 多个值用String[] 来封装
- 使用表单提交数据给servlet,使用隐藏域来决定访问servlet的哪个方法
4,XmlUtils回顾
编辑
JavaEE中,写文件绝对路径: D:/xxxx.xml
5,分包思想(重要,清晰明了)
编辑
编辑
最后:
如果文章对您有帮助,就拿起小手赶紧给博主点赞💚评论❤️收藏💙 一下吧!
愿我们在未来的日子里。熠熠生辉!!!