入门案例:登录判断;
采用两种方式对比:servlet 与 struts2
struts2的包结构:
一,采用servlet实现登录
1.基本jsp页面确定,登录表单提交,与两个结果页面,登录成功与登录失败页面,代码如下:
1 《login.jsp》 2 <body> 3 <form action="${pageContext.request.contextPath }/login" method="post"> 4 username:<input type="text" name="username"> 5 password:<input type="password" name="password"> 6 <input type="submit" name='login'> 7 </form> 8 </body> 9 <body> 10 《failer.jsp》 11 <h1> 失败</h1> 12 </body> 13 《success.jsp》 14 <body> 15 <h1> 成功!</h1> 16 </body>
2.servlet书写,创建一个loginServlet.java,注意设置的响应后缀与提交页面的后缀一样!
1 public class loginServle extends HttpServlet { 2 private static final long serialVersionUID = 1L; 3 4 public loginServle() { 5 super(); 6 } 7 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 8 String name=request.getParameter("username"); 9 String pass=request.getParameter("password"); 10 if("tom".equals(name)&&"123".equals(pass)) { 11 response.sendRedirect(request.getContextPath()+"/success.jsp"); 12 }else { 13 response.sendRedirect(request.getContextPath()+"/failer.jsp"); 14 } 15 } 16 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 17 doGet(request, response); 18 } 19 }
3.确认web.xml的配置信息,是否正确(仅显示主要代码)
1 <servlet> 2 <description></description> 3 <display-name>loginServle</display-name> 4 <servlet-name>loginServle</servlet-name> 5 <servlet-class>com.loginServle</servlet-class> 6 </servlet> 7 <servlet-mapping> 8 <servlet-name>loginServle</servlet-name> 9 <url-pattern>/login</url-pattern> 10 </servlet-mapping>
二,采用struts2实现登录
1.同样使用上面的三个jsp页面
2.导入struts2的jar包(主要的13个包,选取struts2里面的apps中的实例项目中的Lib文件拷贝到本项目的Lib文件夹中)
3.配置web.xml信息,手动写入filter(拦截器) 的名字和源代码路径,再写入拦截器的映射条件,此处设置位/*,详见下面代码:
1 <servlet> 2 <description></description> 3 <display-name>loginServle</display-name> 4 <servlet-name>loginServle</servlet-name> 5 <servlet-class>com.loginServle</servlet-class> 6 </servlet> 7 <servlet-mapping> 8 <servlet-name>loginServle</servlet-name> 9 <url-pattern>/login</url-pattern> 10 </servlet-mapping>
4.配置struts.xml,这个是把拦截器拦截到的请求信息映射到具体的Action类中,就和servlet很像,基本结构就是package与action还要result,具体的功能,后面介绍
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6 <package name="default" namespace="/" extends="struts-default"> 7 <action name="struts2" class ="com.strutsAction" method="show"></action> 8 <action name="login" class ="com.loginAction" method="login"> 9 <result name="success">/success.jsp</result> 10 <result name="failer">/failer.jsp</result> 11 </action> 12 </package> 13 </struts>
5.Action的创建,这个只是一个简单的java类,没有继承,但是类的成员名字要和请求中的参数名字相同,才能把信息提取出来。
1 public class loginAction { 2 private String username; 3 private String password; 4 5 public String getUsername() { 6 return username; 7 } 8 public String getPassword() { 9 return password; 10 } 11 public void setUsername(String username) { 12 this.username = username; 13 } 14 public void setPassword(String password) { 15 this.password = password; 16 } 17 public String login() { 18 //如何获取请求参数,这里又不是servlet!!! 19 System.out.println("访问到了login()方法"); 20 System.out.println(username+" "+password); 21 if("tom".equals(username)&&"123".equals(password)) { 22 System.out.println("登录密码正确"); 23 return "success"; 24 }else { 25 return "failer"; 26 } 27 } 28 }
结果页面:login: failer.jsp success.jsp
评价:struts包装了servlet,完成它的功能,在基本的web网站开发中,基本的请求就是:1.在servlet中获取数据;2.根据业务完成逻辑操作;3.跳转页面;对于这些同一个套路的东西,其底层代码相同,所以直接使用了相同的代码,就创建了这个框架,便于简化开发,直接使用接口就完毕,省时间。