最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

WEB架构总结

来源:动视网 责编:小OO 时间:2025-09-30 21:03:45
文档

WEB架构总结

Struts的工作流程图:P52页简述如何实现JSP页面国际化及校验错误信息国际化:Struts的jsp页面国际化问题,是通过资源文件来实现的。要实现国际化,需要做如下几项工作:1、定义web.xml的ActionServlet的参数;2、定义资源文件(默认ApplicationResources.properties);3、定义JSP页面的字符集合(支持中文的UTF-8或GB2312);4、在JSP页面获取资源文件里面的内容(标签显示资源文件里的信息)。校验的错误信息也是通过资源文件来配置国
推荐度:
导读Struts的工作流程图:P52页简述如何实现JSP页面国际化及校验错误信息国际化:Struts的jsp页面国际化问题,是通过资源文件来实现的。要实现国际化,需要做如下几项工作:1、定义web.xml的ActionServlet的参数;2、定义资源文件(默认ApplicationResources.properties);3、定义JSP页面的字符集合(支持中文的UTF-8或GB2312);4、在JSP页面获取资源文件里面的内容(标签显示资源文件里的信息)。校验的错误信息也是通过资源文件来配置国
Struts的工作流程图:P52页

简述如何实现JSP页面国际化及校验错误信息国际化:

Struts的jsp页面国际化问题,是通过资源文件来实现的。要实现国际化,需要做如下几项工作:1、定义 web.xml的ActionServlet的参数;2、定义资源文件(默认ApplicationResources.properties);3、定义JSP页面的字符集合(支持中文的UTF-8或GB2312);4、在JSP页面获取资源文件里面的内容(标签显示资源文件里的信息)。校验的错误信息也是通过资源文件来配置国际化错误提示信息,通过获取资源文件中国际化的错误提示信息。

轻量级与重量级框架容器的区别:

同重量级容器相比,轻量级容器没有和JavaEE容器绑定,所以它既可以运行在Web容器里,也可以再一个标准应用程序中运行,且轻量级容器的启动开销很小,无需EJB部署。轻量级容器提供了一种管理、定位业务对象的方法,不必使用JNDI寻址、定制服务器之类的额外辅助。轻量级容器为应用对象提供注册服务,较EJB重量级容器而言,它不但功能强大,而且避免了容器强制业务对象采用特定的接口,最低程度地降低了侵入性,实现了效果极佳的架构重用。(补充说明:轻量级框架和重量级框架解决问题的侧重点是不同的,轻量级框架侧重于减小开发的复杂度,相应的它的处理能力便有所减弱(如事务功能弱、不具备分布式处理能力),比较适用于开发中小型企业应用。而作为重量级框架如EJB框架则强调高可伸缩性,适合与开发大型企业应用。)

JavaEE经典体系结构(四层结构)

用户层:运行于客户端机器,与用户发生交互,并把来自系统的信息显示给用户,如HTML、Applets

Web层:运行于JavaEE服务器,产生表示逻辑,并接收来自表示层客户端的用户反馈,如Servlet、JSP

业务层:运行于JavaEE服务器,处理应用的核心业务逻辑,如EJB、JavaBean

EIS层:运行于EIS服务器,为企业的信息系统服务,包括数据库系统、事务处理系统,该层为JavaEE应用的连接点。

什么是Servlet?Servlet有哪些特点?Servlet的生命周期及配置到web.xml的映射信息

Servlet是用Java编写的Server端程序,是一种于平台和协议的服务器端的Java应用,可以生成动态页面,是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序。与传统技术相比,Servlet具有可移植性好、功能更强大、投资更节省、效率更高、安全性更好等特点。Servlet生命周期开始于它被装入Web服务器内存时,并在被终止或被重新装入时结束,可分为阶段:装入Servlet、创建一个Servlet实例、调用Servlet的init方法(在处理任何服务请求之前的响应,用于初始化Servlet)、服务(若容器接收到对此Servlet的请求,则调用service方法)、Servlet实例被销毁(通过调用destroy方法来销毁Servlet)。

举例:Struts的ActionServlet配置信息

    action

org.apache.struts.action.ActionServlet

    action

    *.do

<%@ include file=””%>与的异同点

都是把文件包含进页面

<%@ include file=””%>是指令元素,会首先找到要包含的目标文件,然后把它插入到我们的JSP页面中;是动作元素,是在JSP页面执行的时候才去寻找目标文件。执行时间上:前者是在翻译阶段执行,后者在请求处理阶段执行;引入内容上:前者引用静态文本,后者应用执行页面或Servlet生成的应答文本。

jsp:forward动作重定向与服务器端的跳转的异同:

都能跳转页面

前者是客户端跳转,后者是服务器端跳转。使用客户端跳转时,地址栏当中会显示目标资源的URL,而使用服务器端跳转时,客户浏览器的地址栏并不会显示目标地址的URL,刷新的话会重复提交请求;

内置对象request和response的常用方法:

request.setAttribute(String name, Object obj):设置名字为name的request参数的值(obj)

request.getAttribute(String name):返回由name指定的属性值,如果属性值不存在则返回null

request.getParameter(String name):获得客户端传送给服务器端的参数值,该参数由name指定的,通常是表单中的参数

request.getParameterNames():获取客户端传送服务器端的所有参数的名字,其返回值为一个枚举的实例

request.getParameterValues():获得指定参数的所有值,参数由name指定

response.sendRedirect(String location):把响应发送到另一个位置进行处理。

Struts标签库(编程题中会有涉及)

logic:iterate标签:旨在取代for或者while循环语句的标签。

Spring控制反转与依赖注入思想及Spring Bean生命周期:

对象之间的依赖关系,不由对象自身来负责,而是由容器/其他对象,依据配置文件动态建立。(补充说明:依赖注入(DI)背后的基本原理是对象之间的依赖关系只会通过以下几种方式来实现:构造器的参数、工厂方法的参数,或给由构造函数或者工厂方法创建的对象设置属性。因此,容器的工作就是创建bean时注入那些依赖关系。相对于由bean自己来控制其实例化、直接在构造器中指定依赖关系或者类似服务定位器(Service Locator)模式这3种自主控制依赖关系注入的方法来说,控制从根本上发生了倒转,即Spring的控制反转。)

三种依赖注入方法:接口注入、set注入、构造器注入。如果在一个业务逻辑中,属性的值必须最先初始化,那么使用构造注入会是一个较好的选择,如果是在一个动态的不确定的环境下需要注入一个对象,但又没有必要调用构造方法而实例化一个多余的对象的情况下,使用set注入比较自然。

Spring生命周期:

Bean的创建

Bean的初始化,属性值注入

Bean的调用

Bean的销毁

使用JDBC访问数据库的顺序:

装载驱动

建立Connection连接

创建Statement

执行Sql语句

关闭资源

JDBC的弊端:

步骤复杂

需要编写长长的sql语句

平台移植困难

意外的性能损失

Hibernate与JDBC相比的优点及Hibernate对象的三种状态:

Hibernate是对象/关系数据库映射(Basic O/R Mapping)框架,它使用时只需要操纵对象,使开发更对象化,完全的面向对象思想;是JDBC的轻量级的对象封装,它是一个的对象持久层框架,Hibernate可以用在任何JDBC可以使用的场合;没有侵入性,是一个轻量级框架;具有很好的移植性;具备缓存机制。

Hibernate的三种状态:瞬时对象:就是一个普通对象,是用new操作符产生的;持久对象:存在于sesson的Map容器中的对象;游离对象:一个持久对象,所关联的session被关闭或被销毁则会由持久态变为游离态。

程序题:

1、使用Struts框架开发一个身份验证系统,具体要求如下:

1)对用户在登录页面中输入的数据进行检验,(1)用户输入的 “账号”和“密码”不能为空;(2)账号和密码的长度不能小于3;(3)如果不满足上述要求,在登录页面上给出恰当的提示信息。

2)如果账号=“zhangsan”,密码=“123”跳转到success.jsp页面,否则跳转到register.jsp

涉及到的核心代码如下,请你补充完整。

   1. 登录页面(login.jsp) 

username : 

password :  

         

2) ActionForm(loginForm.class)

…..

public class LoginForm extends ActionForm {

 private String password;

 private String username;

 public ActionErrors validate(ActionMapping mapping,

   HttpServletRequest request) {

     ActionErrors errors = new ActionErrors();

if("".equals(username) || username == null) {

            errors.add("username", new ActionMessage("error.username.required"));

        } else if(username.length() < 3) {

            errors.add("username", new ActionMessage("error.username.matchlength"));

        }

        if("".equals(password) || password == null) {

            errors.add("password", new ActionMessage("error.password.required"));

        } else if(password.length() < 3) {

            errors.add("password", new ActionMessage("error.password.matchlength"));

        }

        

        return errors;

 }

}

3) Action(LoginAction.class)

public class LoginAction extends Action {

 public ActionForward execute(ActionMapping mapping, ActionForm form,

   HttpServletRequest request, HttpServletResponse response) {

  

LoginForm loginForm = (LoginForm) form;

    String username = loginForm.getUsername();

    String password = loginForm.getPassword();

if("zhangsan".equals(username) && "123".equals(password)) {

        return mapping.findForward("success");

    } else {

        return mapping.findForward("register");

}

}

}

4)resource.properties

error.username.required = please input username!

error.password.required = please input password!

error.username.matchlength = username can not be less than 3 characters

error.password.matchlength = password can not be less than 3 characters

5)struts-config.xml

    

attribute="loginForm"

      input="/login.jsp"

      name="loginForm"

      path="/login"

      scope="request"

      type="package.action.LoginAction">

      

      

2、使用Hibernate框架实现学生数据维护系统,具体要求如下:

1)定义实体类Student,该类包含两个属性id,name

public class Student {

private long id;

    private String name;

    public long getId() {

        return this.id;

    }

    public void setId(long id) {

        this.id = id;

    }

    public String getName() {

        return this.name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

2)定义Student类的映射文件Student.hbm.xml

 

            

            

        

        

            

        

 3)把 映射文件Student.hbm.xml加入到hibernate.cfg.xml

  

4)编写hbm2ddl工具类,将实体类生成数据库表

public class ExportDB {

 public static void main(String[] args) {

  Configuration config = new Configuration().configure();

        SchemaExport export = new SchemaExport(config);

        export.create(true, true);

 }

}

  5)编写一个测试类,把一个学生的信息保存到数据库中

public class StudentTest {

 public static void main(String[] args) {

  //读取Hibernate.cfg.xml文件

     Configuration cfg = new Configuration().configure();

     //创建SessionFactory,一个数据库对应一个SessionFactory

     SessionFactory fatory = cfg.buildSessionFactory();

     Session session = null;

     session = fatory.openSession();

     Transaction tx = null;

     try{

            tx = session.beginTransaction();

         tx.begin();

         Student student = new Student();

         student.setId(0);

         student.setName("zhangsan");

         session.save(student);

         tx.commit();

     }catch(Exception e){

if(tx!=null) {

          tx.rollback();

        }

      e.printStackTrace();

     }finally{

session.close();

      }

     }

}

}

实体一对多(1:n)关联:

实训实例:用户信息UserInfo一对多账户Account

UserInfo实体类:

public class  UserInfo  implements  java.io.Serializable  {

    private long userId;

    private String userName;

    private Integer userType;

    private String password;

    private String userMail;

    private Integer userState;

    private Set accounts = new HashSet(0);

    public UserInfo() {

    }

    // 部分getter、setter方法省略

    public Set getAccounts() {

        return this.accounts;

    }

    public void setAccounts(Set accounts) {

        this.accounts = accounts;

    }

}

Account实体类:

public class Account implements java.io.Serializable {

    private long accountId;

    private UserInfo userInfo;

    private String accountNum;

    private double accountBalance;

    private Date accountBegTime;

    private Integer accountType;

    private Integer accountState;

    private String idcardNum;

    public Account() {

    }

    // 部分getter、setter方法省略

    public UserInfo getUserInfo() {

        return this.userInfo;

    }

    public void setUserInfo(UserInfo userInfo) {

        this.userInfo = userInfo;

    }

}

UserInfo.hbm.xml配置文件:

    

        

            

            

        

        

            

        

        

            

        

        

            

        

        

            

        

        

            

        

//重点:UserInfo一对多Account

        

            

                

            

            

        

    

文档

WEB架构总结

Struts的工作流程图:P52页简述如何实现JSP页面国际化及校验错误信息国际化:Struts的jsp页面国际化问题,是通过资源文件来实现的。要实现国际化,需要做如下几项工作:1、定义web.xml的ActionServlet的参数;2、定义资源文件(默认ApplicationResources.properties);3、定义JSP页面的字符集合(支持中文的UTF-8或GB2312);4、在JSP页面获取资源文件里面的内容(标签显示资源文件里的信息)。校验的错误信息也是通过资源文件来配置国
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top