<%--超链接: 超链接如何传参 使用?key=value&key=value--%>
<a href="indexDo02.jsp?name=ykq&age=18">连接</a>
<%request.setCharacterEncoding("utf-8");String name= Parameter("uname");String pwd = Parameter("pwd");UserDao userDao = new UserDao();User user = userDao.findByNameAndPwd(name,pwd);if(user!=null){session.setAttribute("user",user);response.sendRedirect("success.jsp");}else{response.sendRedirect("login.jsp?error=1");}
%>
常见的编码:
ISO-8859-1: 国际编码 但是不支持中文。
UTF-8: 万能编码支持英文中文以及繁体中文。----企业开发都是用UTF-8
GBK: 中文编码.简体中文和繁体中文.
GB2312: 中文编码 但是它支持简体中文。
<title>Title</title><script>function reg(){location.href='register.jsp';}</script>
</head>
<body>
<%
String error = Parameter("error");
if(error!=null&&"1".equals(error)){out.print("<font color='red'>账号或密码错误</font>");
}
%>
<form action="loginDo.jsp" method="post">账号:<input type="text" name="uname"><br>密码:<input type="password" name="pwd"><br><input type="submit" value="登录"><input type="button" value="注册" onclick="reg()">
</form>
</body>
</html>
loginDo.jsp
<%request.setCharacterEncoding("utf-8");String name= Parameter("uname");String pwd = Parameter("pwd");UserDao userDao = new UserDao();User user = userDao.findByNameAndPwd(name,pwd);if(user!=null){session.setAttribute("user",user);response.sendRedirect("success.jsp");}else{response.sendRedirect("login.jsp?error=1");}
%>
<title>注册页面</title><script>function checkUsername(){var uname = ElementsByName("uname")[0].value;if(uname==null || im()==""){alert("请输入账号");return false;}return true;}function checkPassword(){var pwdElementsByName("pwd")[0].value;if(pwd==null || im()==""){alert("请输入密码");return false;}return true;}function checkRealname(){var realnameElementsByName("realname")[0].value;if(realname==null || im()==""){alert("请输入姓名");return false;}return true;}function ck(){if(checkUsername()&&checkPassword()&&checkRealname()){return true;}return false;}</script>
</head>
<body>
<h1>注册页面</h1>
<form action ="registerDo.jsp" method="post" onsubmit="return ck()">账号:<input type="text" name="uname" onblur="checkUsername()"><br>密码:<input type="password" name="pwd" onblur="checkPassword()"><br>姓名:<input type="text" name="realname" onblur="checkRealname()"><br><input type="submit" value="提交">
</form>
reginsterDo.jsp
<%
request.setCharacterEncoding("utf-8");String name Parameter("uname");String pwd = Parameter("pwd");String realname = Parameter("realname");UserDao userDao = new UserDao();User user =new User(name,pwd,realname);userDao.insert(user);response.sendRedirect("login.jsp");
%>
4.3 删除
<%String id = Parameter("id");DepartmentDao departmentDao = new DepartmentDao();departmentDao.delete(Integer.parseInt(id));response.sendRedirect("success.jsp");
%>
4.4 修改
<%String id Parameter("id");DepartmentDao departmentDao = new DepartmentDao();Department department = departmentDao.findById(Integer.parseInt(id));
%>
<form action="updateDo.jsp" method="post">id号:<input type="text" value="<%Id()%>" name="id" /><br>部门:<input type="text" value="<%Name()%>" name="deptname"/><br><input type="submit" value="确认修改"/>
</form>
updateDo.jsp
<%
request.setCharacterEncoding("utf-8");
String id= Parameter("id");
String name = Parameter("deptname");DepartmentDao departmentDao = new DepartmentDao();Department d = new Department();d.setId(Integer.parseInt(id));d.setName(name);departmentDao.update(d);response.sendRedirect("success.jsp");
%>
4.5 添加
<form action ="addDo.jsp" method="post">id号:<input type="text" name="id"><br>部门:<input type="text" name="deptname"><input type="submit" value="添加">
</form>
addDo.jsp
<%request.setCharacterEncoding("utf-8");String name Parameter("deptname");DepartmentDao departmentDao = new DepartmentDao();Department department = new Department();department.setName(name);departmentDao.add(department);response.sendRedirect("success.jsp");
%>
1. out对象---作用:用来输出信息到浏览器。常见的方法: print();
2. request对象--作用:请求对象。 常见的方法:getParameter(); setCharacterEncoding("") , getSession():获取session对象。
3. session对象-->作用:表示一次会话 同一个用户共享存储在session中的数据。 常见的方法:setAttribute(key,value) getAttribute(key); removeAttribute(key), invalidate();使当前session无效
4. response响应对象-->常用的方法: sendRedirect(). getWriter():获取out对象。
5.pageContext对象:表示当前页面对象。它可以共享当前页面的数据。可以获取其他8个内置对象。
6.application对象: 所有用户共享该对象存储的数据。
7.page对象: 表示当前页面的对象 this.
8.config对象: 用于获取servlet的配置信息。
9.exception对象: 异常对象。 如果该对象想使用必须网页是一个异常页面
在不同的对象中存储的数据,作用的范围不同。
1. pageContext: 可以存储数据,作用范围是当前页面有效。 2. request: 可以存储数据,作用范围是同一个请求有效。---请求转发跳转 3. session: 可以存储数据, 作用范围是同一个会话有效。---用户信息 4. application: 可以存储数据,作用范围是同一个应用。 以后就把数据保存到application中,打错特错 因为保存的时间越长占用的资源越长。
1. 重定向地址栏会发生改变,而且会产生新的请求对象。无法获取request保存的数据。
2. 请求转发地址栏不会发生改变,而且用的是同一个请求对象。可以获取request保存的数据。
保存周期越长,占用的资源时间也就越长。 一般我们在开发时大部分数据习惯保存到request对象中。 只要少量的数据保存到session会话中。比如登录时用户的信息保存到session会话中。
EL表达式-->作用: 获取四大域对象中数据。
语法: ${xxxScope.key}
我们原来通过Attribute(key)也可以获取到四大域中的数据,为什么还要使用EL表达式,因为EL表达式语法更加简洁。而且后期可以与我们的jstl标签库一起使用。如果EL表达式没有找到对于的key,则返回空字符串 "".
EL表达式属于jsp或者后面讲解thymeleaf的语法
<%//往四大域存储数据
pageContext.setAttribute("name","pageContesxt的内容");
request.setAttribute("name","request的内容");
session.setAttribute("name","session的内容");
application.setAttribute("name","application的内容");
response.sendRedirect("b.jsp");
//RequestDispatcher("b.jsp").forward(request,response);
%>
<hr>通过getAttribute()获取四大域对象的内容<br>
<%Attribute("name")%><br>
<%Attribute("name")%><br>
<%Attribute("name")%><br>
<%Attribute("name")%><br>
<hr>
通过el表达式获取四大域对象的内容<br>
${pageScope.name}<br>
${requestScope.name}<br>
${sessionScope.name}<br>
${applicationScope.name}<br>
<hr>
${name}<br>
el表达式 还可以省略scope ${key} 那么它会从哪个对象中获取数据。默认从pageContext扫描有没有对于的key,如果有则不继续往下扫描了,如果没有则继续往下扫描request, 以此类推。
里面提供了一些常用的标签---比如: 循环标签 判断标签。
使用这些标签的作用是为了减少jsp中java脚本代码的添加。 企业不建议大家在jsp中使用太多的<%%> 这样会使得网页比较乱。 这时就有人提供了JSTL标签库。
如何使用jstl标签库:
(1)web工程中引入jstl标签库的依赖
(2)在使用jstl标签的jsp网页上引入该标签库
<%--jsp网页的头部引入jstl核心标签库--%> <%@ taglib prefix="c" uri="" %>
(3)使用
<%List<Student> list = new ArrayList<>();list.add(new Student(1,"张三",24,"上海",1));list.add(new Student(2,"李四",21,"杭州",0));list.add(new Student(3,"王五",20,"北京",1));request.setAttribute("Students",list);
%>
<table border="1" width="500"><tr><td>编号</td><td>姓名</td><td>地址</td><td>年龄</td><td>性别</td></tr><c:forEach items="${Students}" var="s"><tr><td>${s.id}</td><td>${s.name}</td><td>${s.age}</td><td>${s.address}</td><c:if test="${s.sex==0}"><td>女</td></c:if><c:if test="${s.sex==1}"><td>男</td></c:if></c:forEach></tr>
就是java类代码。它可以介绍前端页面传递的数据,同时也可以把后端查询的结果响应给前端,以供前端能把数据展示到jsp网页.
(0) 引入servlet-api.jar包
(1) 创建一个类并继承HttpServlet父类。
public class HelloServlet extends HttpServlet {
}
(2) 重写HttpServlet中service方法。---进行业务处理的。
//可以接受前端传递的参数 也可以把后端查询的数据保存并让前端获取
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
(3) 把自定义servlet配置到l文件中
<servlet><servlet-name>helloServlet</servlet-name><servlet-class&j.servlet.HelloServlet</servlet-class> </servlet><servlet-mapping><servlet-name>helloServlet</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping>
如果有很多不同的请求,难道我们就得为每个不同请求创建一个servlet吗,如果这样就会导致类中存在很多的servlet类。addUser deleteUser updateUser. 我们应该对同一种类只创建一个servlet。
比如: 对用户类的操作,UserServlet 对学生类的操作 StudentServlet. 如果使用一个servlet.那么如何区别是什么操作。 我们可以再跳转时传递一个参数用于表示它是什么操作.
一张表对应一个servlet。
一张表对应一个dao和entity
就是servlet从创建到初始化再到服务最后到销毁的过程。就是servlet的生命周期。
servlet会在不同的阶段执行不同的方法。
(1)构造方法---->servlet被创建时执行
(2)初始化方法--->servlet创建完成后要初始化一些参数时该方法会被执行。
(3)执行方法--->servlet被调用时。
(4)销毁方法--->servlet被关闭。
发现:无论发送多少次请求,构造方法和初始化方法只会执行一次。而service每次请求都会被执行。
证明servlet为单例模式. 节约内存空间。
当服务器tomcat重启或者重写部署项目,那么servlet就会被销毁
上面当你第一次通过浏览器访问servlet时才会被创建和初始化。也可以通过配置当tomcat启动时就创建和初始化servlet。
过滤掉一些不向要信息,让一些想要的信息通过。 例如:杯子的过滤网,高速上卡点。净化器。
让一些合法的请求通过该过滤器,而拦截一些不符合要求的请求路径。当请求到达该过滤器时,可以为请求设置一些参数。
(1)创建一个类并实现Filter接口并重写相应的方法
@WebFilter(filterName = "EncodingFilter",urlPatterns = "/*")
public class EncodingFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {req.setCharacterEncoding("utf-8");//设置请求的编码 接受到的请求参数不会乱码。resp.setCharacterEncoding("utf-8");//设置响应的编码,响应的数据不会出现乱码。//放行filterChain.doFilter(req,resp);}@Overridepublic void destroy() {}
}
(2) 登录过滤器
@WebFilter(filterName = "LoginFilter", urlPatterns = "/*")
public class LoginFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {//向下转型 有些方法在子类中存在。HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) resp;//获取请求路径String path = RequestURI();//1.判断当前的请求路径是否为要放行的路径ains("/login.jsp")||ains("/UserServlet")){filterChain.doFilter(req,resp);return; //终止方法}//2.必须登录后才能放行。如何判断是否登录。HttpSession session = Session();Object user = Attribute("user");if(user!=null){ //表示用户登录过filterChain.doFilter(req,resp);return;}//3.跳转到登录页面response.sendRedirect("/web07/login.jsp");}@Overridepublic void destroy() {}
}
本文发布于:2024-02-01 16:14:27,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170677526637864.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |