struts2学习笔记之四(注册登陆小项目)

1、创建工程LoginAndRegister

2、引入Struts2的Path

3、将关键struts2-blank\lib里jar包拷贝到LoginAndRegister\WEB-INF\lib下面

4、从struts2-blank中复制web.xml和struts.xml到项目的相应目录下

注意观察是否需要修改版本号

<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_9" version="2.4" xmlns="" xmlns:xsi="" xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><display-name>Struts Blank</display-name><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>5、有一个index.jsp页面,OK,编写index.jsp<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>登陆与注册</title> </head><body><a href="/LoginAndRegister/login.jsp" >登陆</a><br/>  <span style="white-space:pre"></span><a href="/LoginAndRegister/register.jsp">注册</a> </body></html></span>6、编写login.jsp<span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="gb2312"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>登陆</title>  </head>    <body>    <span style="white-space:pre"></span><form action="/LoginAndRegister/org/tutorial/loginAction.action" method = "post">     <span style="white-space:pre"></span>用户名:<input type="text" name="user.name"><br/>    <span style="white-space:pre"></span>密码:    <input type="text" name="user.pass"><br/>    <span style="white-space:pre"></span><input type="submit" name="登陆">    <span style="white-space:pre"></span></form>  </body></html></span>

注意url的写法,"/"表示webapps目录,所以要写上项目名,包名和action名

tomcat收到请求,然后交给org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,过滤器搜索struts.xml文件,搜寻对应的action,在这里搜寻loginAction.action,<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"""><struts><package name="org.tutorial" extends="struts-default"><action name="loginAction" class="org.tutorial.loginAction"><result name="success">/loginSuccess.jsp</result><result name="error">/error.jsp</result></action><action name="registerAction" class="org.tutorial.registerAction"><result name="success">/loginSuccess.jsp</result></action></package></struts></span>一共两个action,一个是登陆使用的action,一个是注册使用的action

7、loginAction.java

注意:action的三条规则

a、必须有一个无参构造函数

b、最好事先action接口或actionsupport接口

c、服务方法

控制器action:

<span style="font-size:18px;">package org.tutorial;import com.opensymphony.xwork2.ActionSupport;public class loginAction extends ActionSupport{/** * */private static final long serialVersionUID = 1L;private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String execute(){//System.out.println("name:pass —–" + name + ":" + pass);UserService us = new UserService();//System.out.println("user in action:" + user);int id = us.validateUser(user);if(id == -1)return ERROR;return SUCCESS;}}</span>模型User类<span style="font-size:18px;">package org.tutorial;public class User {private int id;private String name;private String pass;private String tele;private String addr;public User(){}public User(int id, String name, String pass, String tele, String addr) {this.id = id;this.name = name;this.pass = pass;this.tele = tele;this.addr = addr;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPass() {return pass;}public void setPass(String pass) {this.pass = pass;}public String getTele() {return tele;}public void setTele(String tele) {this.tele = tele;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}public int getId() {return id;}public void setId(int id) {this.id = id;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((name == null) ? 0 : name.hashCode());result = prime * result + ((pass == null) ? 0 : pass.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;User other = (User) obj;if (name == null) {if (other.name != null)return false;} else if (!name.equals(other.name))return false;if (pass == null) {if (other.pass != null)return false;} else if (!pass.equals(other.pass))return false;return true;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", pass=" + pass+ ", tele=" + tele + ", addr=" + addr + "]";}}</span>请注意无参构造函数,不能省略,因为从请求中使用的构造函数是无参的,如果无参构造函数不存在,那么将不能从请求中实例化User。我躺下来,以一张报纸当枕头。高高在我上方的,

struts2学习笔记之四(注册登陆小项目)

相关文章:

你感兴趣的文章:

标签云: