2018年1月4日15:54:06
第一段讲课内容
先新建一个类 继承接口
package com.bdqn.svl;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//继承接口 重写doGet和doPost这两个方法
public class ServletInstant extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doGet(req, resp);
req.setCharacterEncoding("UTF-8");//设置编码格式
resp.setCharacterEncoding("UTF-8");//设置编码格式
PrintWriter pw=resp.getWriter();//获得输出
pw.write("<h1>前任</h1>");//在页面写出不是控制台
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doPost(req, resp);
this.doGet(req, resp);//这是让doPost转去doGet那里
}
}
web.xml加上两段<servlet>和<servlet-mapping>
<servlet>
<servlet-name>取别名servletIns</servlet-name>
<servlet-class>包名.类名com.bdqn.svl.ServletInstant</servlet-class>
<init-param>//根据键值设置编码格式
<param-name>charset</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>上面取的别名servletIns</servlet-name>
<url-pattern>一斜杠/上面取的别名/servletIns</url-pattern>
</servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
第二段讲课内容
index.jsp页面写一个表单 提交到servlet
<form action="servletIns取的别名" method="post">
用户名:<input type="text" name="uName">
密码:<input type="password" name="uPwd">
<input type="submit" value="提交">
</form>
然后到ServletInstant 的doget方法
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
PrintWriter pw=resp.getWriter();
//pw.write("<h1>前任qianren</h1>");
//解决编码
resp.setContentType("text/html;Charset=UTF-8");
String uNa=req.getParameter("uName");
String uPw=req.getParameter("uPwd");
if (uNa.equals("张三")&&uPw.equals("123")) {
pw.write(uNa+"</br>"+uPw);
}else {
pw.write("erro");
}
pw.flush();//刷新缓冲区以后肯定为空的
if(pw!=null){pw.close();}
第三段讲课内容
在<servlet>里加上一段解决编码格式的 发现好像不起作用 其实就是个键值
<init-param>
<param-name>charSet</param-name>
<param-value>UTF-8</param-value>
</init-param>
在里ServletInstant类重写init方法在控制台输出 看能不能根据键获得值
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
//super.init(config);
String charSet=config.getInitParameter("charSet");
System.out.println(charSet);
//是在控制台输出UTF-8
}
第四段讲课
全局
先去web.xml设置一个全局变量 要获得这个电话一定要注释初始化方法 不然会空指针
还有一个不会爆空指针的是init这个方法里这一句一定要有super.init(config);
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
super.init(config);
//String charSet=config.getInitParameter("charSet");
//System.out.println(charSet);
//是在控制台输出
}
<context-param>
<param-name>name</param-name>
<param-value>adminI参数名有红色波浪线就取个不一样的试试</param-value>
</context-param>
ServletInstant页面根据键拿到值
doGet方法
//根据键拿到值 全局的那个adminI 注意输出的不是页面里 而是控制台
String name="拿不到";
name=getServletContext().getInitParameter("name");
System.out.println(name);
//是在控制台输出 参数名偶红色波浪线就取个不一样的试试
这一天课的所有代码
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>name</param-name>
<param-value>adminI</param-value>
</context-param>
<servlet>
<!--取别名-->
<servlet-name>servletIns</servlet-name>
<!--全包名.类名-->
<servlet-class>com.bdqn.svl.ServletInstant</servlet-class>
<init-param>
<param-name>charSet</param-name>
<param-value>UTF-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<!--上面取的别名-->
<servlet-name>servletIns</servlet-name>
<!--路径.上面去的别名 看能不能跳转-->
<url-pattern>/servletIns</url-pattern>
</servlet-mapping>
</web-app>
index.jsp
<body>
<%
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
%>
This is my JSP page. <br>
<h6>主页</h6>
<form action="servletIns" method="post">
用户名:<input type="text" name="uName">
密码:<input type="password" name="uPwd">
<input type="submit" value="提交">
</form>
</body>
ServletInstant类
package com.bdqn.svl;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.Charset;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletInstant extends HttpServlet{
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
super.init(config);
//String charSet=config.getInitParameter("charSet");
//System.out.println(charSet);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doGet(req, resp);
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
PrintWriter pw=resp.getWriter();
//pw.write("<h1>前任qianren</h1>");
resp.setContentType("text/html;Charset=UTF-8");
String uNa=req.getParameter("uName");
String uPw=req.getParameter("uPwd");
if (uNa.equals("张三")&&uPw.equals("123")) {
pw.write(uNa+"</br>"+uPw+"</br>");
pw.write("right");
//pw.write("对的");
}else {
pw.write("erro");
//pw.write("错的");
}
pw.flush();
if(pw!=null){pw.close();}
//根据键拿到值 全局的那个adminI 注意输出的不是页面里 而是控制台
String name="拿不到";
name=getServletContext().getInitParameter("name");
System.out.println(name);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doPost(req, resp);
this.doGet(req, resp);
}
}