您的位置:首页 > 其它

servlet-跳转、初始化传参、乱码、解析过程

2017-03-23 09:27 162 查看

一、跳转

转发

用法:req.getRequestDispatcher(“目标文件”).forward(req, resp);

重定向

用法:resp.sendRedirect(“目标文件”);

两者的区别

(1)转发不会修改地址,重定向会

(2)转发只有一次请求,重定向会在发一个请求到新的页面

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPost```");
System.out.println("正在执行...");
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username + "--" + password);
if(name.equals(username)){
/*转发*/
//          req.getRequestDispatcher("fail.html").forward(req, resp);
/*重定向*/
resp.sendRedirect("fail.html");
}else{
//          req.getRequestDispatcher("success.html").forward(req, resp);
resp.sendRedirect("success.html");
}
System.out.println("执行完毕...");
}


二、初始化传参

说明:需要放在servlet里面,同时,只有这一个servlet可以取到该值,在init的时候使用ServletConfig取值

web.xml

<!--注册 -->
<servlet>
<servlet-name>Hello</servlet-name> <!--servlet名字 -->
<servlet-class>servlet.Hello</servlet-class><!--路径 -->
<init-param>
<param-name>username</param-name><!--名称 -->
<param-value>root</param-value><!--值 -->
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123abc</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!--正数表示在启动的时候自动初始化,数字表示顺序,数字越大越后-->
</servlet>


Java

private String name;
private String pwd;
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("Hello init```");
name = config.getInitParameter("username");
pwd = config.getInitParameter("password");
System.out.println(name + "--" + pwd);
}


三、乱码

产生原因:编码和解码的方式不一致

常见的乱码:数据库、io、web

1.web请求乱码

(1)get

conf->server.xml

<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"/>


(2)post

java

req.setCharacterEncoding("UTF-8");


2.web响应乱码

说明:无论是get还是post都一样

java

resp.setContentType("text/html;charset=utf-8");


四、解析过程

解析url->定位->web.xml->检查是否注册->调用



注:图片来源于《servlet详细讲解》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet