【servlet】应用:设置请求(响应)编码、获取请求数据、处理以及控制跳转,以及作用域。
1.如何配置servlet:
-
使用注解的方式配置
@webServlet(name = "名字",urlpattens="浏览的路径名")
-
在web.xml中进行配置
<!--配置类路径--> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.gxy.Servlet.LoginServlet</servlet-class> </servlet> <!--配置servlet的访问路径--> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping>
-
如何配置打开默认浏览器
默认打开的是index.jsp,如需修改则<!--默认打开浏览器--> <welcome-file-list> <welcome-file>login.jsp</welcome-file> </welcome-file-list>
2.设置请求(响应)编码
请求对象.setCharacterEncoding("utf-8");
响应对象.setContentType("text/html;charset=UTF-8");
3.获取请求数据
例如登录:
<form action="login" method="post">
账号:<input type="text" name="uname"/><br>
密码:<input type="password" name="upwd"/><br>
<input type="submit" value="登录">
</form>
//获取请求
String uname = 请求对象(request).getParameter("uname");
String upwd = 请求对象(request).getParameter("upwd");
4.处理请求
利用service层进行创建对象及调用
//创建service对象,并调用方法
IUserService service = new UserServiceImpl();
User users = service.userLogin(uname,upwd);
5.响应结果(控制跳转)
if(users != null){//存在
//跳转到成功页
}else{//不存在
//失败页
}
-
方法一:请求转发
请求对象.getRequestDispatcher("地址").forword(请求对象,相应对象);
注:请求转发可以在多个页面交互过程中实现请求数据的共享
-
方法二:重定向
响应对象..sendRedirect("地址");
注:如果使用重定向,需要在跳转页面显示欢迎,某某某(数据库传过来的用户名),需要使用作用域
-
获取session对象,并将其保存在作用域中,在进行跳转
//获取session对象 HttpSession session = req.getSession(); session.setAttribute("users",users); //重定向,进行跳转页面 resp.sendRedirect("success.jsp");
-
前台页面,如何获取到作用域对象
<%--用el表达式进行获取,作用域.保存的对象名.用户名--%> 欢迎登录:${sessionScope.users.uName}
6.作用域的分类:
- page作用域
1、page作用域指单一JSP页面的范围,page作用域的对象只能在创建该对象的页面中访问。
2、 page作用域的对象在客户端每次请求JSP页面时创建,在服务器发送响应或请求转发到其他的页面或资源后失效
3、pageContext对象本身也属于page作用域,具有page作用域的对象被绑定到pageContext对象中
- request作用域
一次请求,一次请求的数据共享,通过请求转发,将数据流转给下一个servlet,当请求结束后,也就失效
- session作用域
范围:一次会话,一个用户的不同请求的数据共享问题,将数据从一次请求流转给其他用户
- application作用域
特点:
1、一个服务器只有一个application对象
2、所有用户共享,面对整个web程序
3、生命周期:从服务器开始到服务器关闭
7.重定向与请求转发的区别
请求转发 | 重定向 |
---|---|
请求次数一次 | 请求次数两次 |
保留数据 | 不保留数据 |
地址不变 | 地址改变 |