达内javaSE_day22——服务器
v10:登录
添加登录页面 ,成功和失败的页面。
loginok.html
loginerror.html
WebServer.java
测试截图:
V11:定义业务逻辑控制器
包名:cn.tedu.servlets
把server中Login 的逻辑封装到LoginServlet中,
把server中reg的逻辑封装到RegServlet中
- 定义HttpServlet类
定义抽象类:
抽象方法service
转发 方法 forward方法 - 定义LoginServlet类,重写service方法
- 定义RegServlet类,重写service方法
- 重构server
HttpServlet.java
RegisterServlet.java
LoginServlet.java
WebServlet.java
v12:用反射创建对象
-
添加ServletContext类。
(1)定义 Map<String,String> map 。存放:
(K: 表单里的action (/myweb/register)
V: 包名.类名(cn.tedu.servlet.RegisterServlet) )(2)定义方法initMapping:
/myweb/register = cn.tedu.servlet.RegisterServlet
/myweb/login = cn.tedu.servlet.LoginServlet(3)定义init方法,调用initMapping方法
(4)定义静态块,调用init方法
-
重构server的run方法,使用对象反射创建,并调用service方法。
-
在response类中封装sendRedirect方法,重构server和servlet代码。
ServletContext.java
WebServer.java
HttpResponse.java
- 将WebServer.java和HttpServlet.java中的 forward() 方法去掉。
- 修改WebServer、HttpServlet的两个子类RegisterServlet和LoginServlet中有关forward方法的语句。
eg: forward("/myweb/loginok.html",response);改为response.sendRedirect("/myweb/loginok.html");
v13:读配置文件
解析配置文件:重构ServletContext类的initServletMapping()方法。
ServletMapping.xml
ServletContext.java
解析ServletMapping.xml
v14:post请求
- 在HttpRequest类中添加post请求的方法
public HttpRequest(InputStream in){
parseRquestLine(in);
parseHeaders(in);
parseContent(in);
} - 解析post请求
private void parseContent(InputStream in) - 定义工具方法parseParams(),封装解析数据
HrrpRequset.java
测试截图:
v15:doGet / doPost、显示所有数据
- 在Servlet类中添加 添加doGet或者doPost方法
- 在service方法中通过获取发送方式,判断使用doGet还是doPost
- 编写ShowUserServlet完成,显示所有数据
HttpServlet.java
将LoginServlet.java、RegisterServlet.java中的service方法改为doGet或doPost方法。
showuser.html
ServletMapping.xml
ShowUserServlet.java
测试截图:
v16:修改、删除信息
- 添加修改的页面,并且编写UpdateServlet 控制器类 根据用户名修改密码
- 添加删除的页面,并且编写DeleteServlet控制器类 根据用户名删除
update.html
updateok.html
ServletMapping.xml
UpdateServlet.java
测试截图:
原始数据:
测试截图:**
原始数据:
修改后数据:
根据用户名删除数据和修改数据类似,只是将修改的内容至为空即可。